意义

将单体应用拆分为一组小服务,协同工作,小而自治,每个服务在独立的进程运行,服务之间使用轻量级的通信机制RPC。


单一职责,一个微服务解决一个业务问题,注意是一个业务问题而不是一个接口,服务围绕业务构建,服务可以独立部署,低耦合。


面向服务,将自己的业务能力封装并对外提供服务,一个微服务本身也可以有使用到其它微服务的能力,服务之间互不影响,复用性高,且有自动部署机制。


可以根据业务特殊性使用不同的编程语言和数据存储,实现异构型和去中心化。


易于开发,每个模块是一个服务,每个服务是一个项目,开发一个模块就只需要担心这个模块的逻辑即可,低耦合。


技术栈不受限,不同的微服务之间的编程语言编写,只需要关注逻辑即可,不需要关心实现过程,编程语言不限。


启动较快,相比于启动单体架构的整个项目,独立部署的微服务启动速度快。


修改容易,在开发中发现一个问题,如果是单体架构的话,需要重新发布并启动整个项目,耗时间。但是微服务开发,模块出现bug只需要解决模块的bug就可以了,解决完bug之后,重启模块的服务即可,不必重启整个项目,节约时间。

微服务与分布式

共同点:

将模块拆分成一个独立的服务单元通过接口来实现数据的交互。

为了不因为某个模块的升级和BUG影响现有的系统业务。


细微差别: 

微服务是分布式架构,但微服务的应用不一定是分散在多个服务器上,可能是同一个服务器。