微服务架构理解

微服务的定义

微服务是一种软件 架构风格 或 架构模式。

特征:

1.提倡将单一应用分割成若干小的独立服务,每个服务运行在自己独立的进程中,完全隔离能独立部署,可以使用不同的技术栈。
2.服务与服务之间使用 **轻量级的信息通信机制进行沟通(通常是Rest api)**进行通信。
3.服务之间相互协调,相互配合,对外成为一个整体对用户提供最终价值服务。
微服务架构理解

优势:

1.服务与服务之间是独立的,完全解耦 ,有利于开发维护。
例如:每个开发团队仅仅只需关心自己所开发的模块,不必考虑别的模块使用的的技术栈,实现细节等。
2. 伸缩性强 可实现细粒度的扩展。
例如:针对系统的瓶颈进行横向扩展,对于电商系统瞬间的流量增大可以选择增加订单处理微服务的个数来提升整个系统的性能,而不需要关注地址管理,用户信息变更等模块。对于不同类型的服务比如IO密集型,计算密集型可以选择不同硬件的服务器进行部署。

劣势:

1.分布式固有的复杂性,运维要求高。
2.代码复用率降低,存在很多 重复劳动

微服务设计原则

1.单一责任原则
2.服务自治原则
3.轻量级通信机制