Martin Fowler近日发布了《Microservices Resource Guide》,介绍的是Martin自己和别人的书/文章汇集,一开头回顾了微服务的特征,接着谈到了对微服务和单块架构的权衡,最后大篇幅列举了很多公司开发微服务的经验教训。
微服务特征
- 通过服务进行组件化
- 围绕业务能力进行组织服务
- 团队为产品而不是项目工作
- 智能端点和哑管道:取其Unix思想,REST协议或消息总线仅仅是管道,服务才是智能的
- 去中心化治理
- 去中心化数据管理
- 基础设施自动化
- 故障设计:服务故障检测、自恢复
- 演进式设计
微服务与单块架构之间的权衡
微服务带来收益…
- 强模块边界: 微服务增强模块结构,这对大的团队尤为重要。
- 独立的部署: 简单服务更易于部署,由于它们都是自治的,服务出现问题不容易导致系统故障。
- 技术多样性: 使用微服务可以混合多种编程语言、开发框架和数据存储技术。
…也伴随着代价
- 分布: 由于远程调用慢并一直具有故障风险。很难开发分布式系统代码。
- 最终一致性: 对于分布式系统维护强一致性非常困难,这意味着必须管理最终一致性。
- 运维复杂: 需要一个成熟的运维团队来管理很多经常需要重新部署的服务。
微服务与单块架构的生产率
经验教训(略)
先看完《Build Microservices》,然后再读一遍所有列举资料,再单开新的博客帖子介绍吧。