文章目录

  • 一、分布式
  • 二、微服务
  • 总结


一、分布式

分布式的核心就是拆。只要是将一个项目拆分成了多个模块,并将这些模块分开部署,那就算是分布式。
当单个节点的处理能力无法满足日益增长的计算、存储任务的时候,且硬件的提升(加内存、加磁盘、使用更好的 CPU)高昂到得不偿失的时候,应用程序也不能进一步优化的时候,我们需要考虑分布式系统,将拆分后的每一块分别部署到不同的机器上。是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的。

有两种拆分方式:水平拆分,或垂直拆分(也称为“横向拆分”和“垂直拆分”),具体如下:

水平拆分:根据“应用分层”的思想进行拆分。例如,可以将一个项目根据“三层架构”拆分成 表示层(jsp+servlet)、业务逻辑层(service)和数据访问层(dao),然后再分开部署到不同服务器上。

java 分布式 微服务 知识点 java分布式和微服务_服务器


垂直拆分:根据业务进行拆分。例如,可以根据业务逻辑,将“电商项目”拆分成“订单项目”、“用户项目”和“秒杀项目”。显然这三个拆分后的项目,仍然可以作为独立的项目使用。像这种拆分的方法,就成为垂直拆分。

java 分布式 微服务 知识点 java分布式和微服务_微服务_02

二、微服务

微服务架构,核心就是为了解决应用微服务化之后的服务治理问题。微服务可以理解为一种非常细粒度的垂直拆分。

java 分布式 微服务 知识点 java分布式和微服务_java 分布式 微服务 知识点_03

微服务的特征:

  • 一个微服务应用都是单一职责的,只做一件事,一个微服务解决一个业务问题(注意是一个业务问题而不是一个接口)
  • 这个微服务应用可以单独部署运行,服务之间可以通过 RPC 来相互交互。每个微服务都是由独立的小团队开发,测试,部署,上线,负责它的整个生命周期

总结

  • 微服务是架构设计(注重微服务化的治理,比较细的低耦合的拆分),分布式是系统部署方式(拆分后部署到不同服务器上)
  • 微服务相比分布式服务来说,它的微服务应用粒度更小,服务之间耦合度更低,由于每个微服务都由独立的小团队负责,因此它敏捷性更高,分布式服务最后都会向微服务架构演化,这是一种趋势, 不过服务微服务化后带来的挑战也是显而易见的,例如服务粒度小,数量大,后期运维将会很难

参考:
分布式和微服务的区别?