发布日期:
2025-03-12
更新日期:
2025-07-28
文章字数:
743
阅读时长:
2 分
阅读次数:
微服务时代
总结
- 介绍微服务的概念,相比于 SOA 更自由的架构风格,更为开放多元的问题解决方案,列举了微服务的九个核心业务与技术特征。
详情
概念
- 微服务是一种通过多个小型服务组合来构建单个应用的架构风格,这些服务围绕业务能力而非特定的技术标准来构建。各个服务可以采用不同的编程语言、不同的数据存储技术,运行在不同的进程之中。服务采取轻量级的通信机制和自动化的部署机制实现通信与运维。
风格
- 微服务追求的是更加自由的架构风格,摒弃了几乎所有 SOA 里可以抛弃的约束和规定,提倡以“实践标准”代替“规范标准”。
评价
- 作为一个普通的服务开发者,作为一个“螺丝钉”式的程序员,微服务架构是友善的。可是,微服务对架构者却是满满的“恶意”,对架构能力的要求已提升到史无前例的程度。
九个核心的业务与技术特征
- 围绕业务能力构建(Organized around Business Capability)。强调了康威定律的重要性,有怎样结构、规模、能力的团队,就会产生对应结构、规模、能力的产品。
- 分散治理(Decentralized Governance)。服务对应的开发团队有直接对服务运行质量负责的责任,也有不受外界干预地掌控服务各个方面的权力
- 通过服务来实现独立自治的组件(Componentization via Service)。远程服务有更高昂的调用成本,但这是为组件带来自治与隔离能力的必要代价。
- 产品化思维(Product not Project)。微服务下,要求开发团队中每个人都具有产品化思维(个人觉得不切实际),要对软件产品的整个生命周期负责。
- 数据去中心化(Decentralized Data Management)。微服务明确提倡数据应该按领域分散管理、更新、维护、存储。数据库拆分需要在分布式中处理好一致性问题。
- 强终端弱管道(Smart Endpoint and Dumb Pipe)提倡 RESTful 风格的通信
- 容错性设计(Design for Failure)。接受服务总会出错的现实,在微服务的设计中,有自动的机制对其依赖的服务进行快速故障检测,在持续出错的时候进行隔离,在服务恢复的时候重新联通。
- 演进式设计(Evolutionary Design)。承认服务会被报废淘汰。一个设计良好的服务,应该是能够报废的,而不是期望得到长存永生。
- 基础设施自动化(Infrastructure Automation)。引入 CI/CD 发展,减少了构建、发布、运维工作的复杂性。
关联文章