微服务架构设计模式学习文档
PS:图源网络,侵删勿扰
微服务不在于“微”,而在于单一职责。
——引自《微服务架构与实践》王磊
特点:
- 单一职责
- 轻量通信(无关平台语言、通过轻量级通信机制互联)
采用xml或json格式达到通用,可以基于http协议或rpc协议达到服务间的轻量级通信
- 业务独立(开发、测试、部署)
- 进程隔离
- 持续交付
- 技术的可扩展性(接口不依赖于特定语言和平台)
劣势:
- 网络通信:进程内调用比进程间调用用时短,分布式调用严重依赖网络可靠性与稳定性。
- 自动化测试条件严苛(测试难度大)
- 分区数据库架构(需要使用基于最终一致性的方法)
- 跨越多服务变更(服务之间可能有依赖关系)
难点:
-
性能(跨进程、跨网络、跨数据库):考虑通信成本、网络延迟、带宽、多服务交互的响应时间
-
可靠性:服务数量节点增多可能带来潜在故障点,防止单点故障
-
异步:同步通信造成阻塞,异步通信缺增加功能实现的复杂度,出现故障时的链路追踪、定位、调试有难度。
-
数据一致性&#