主要观点:微服务自 2011 年起成为软件社区的重要部分,虽有炒作但也有实际优势,被许多大型企业采用。
关键信息:
- 微服务定义不统一,如 Microservices.io 和 James Lewis 与 Martin Fowler 分别给出的定义。
- 微服务可将系统拆分为独立、内聚的服务,如在线书店的用户、库存和发货服务,能独立部署和扩展,但需更精细的编排。
- 微服务带来部署和扩展的灵活性,可实现自动化,如创建服务的交付管道和自动扩展实例,但实际应用中实现理想系统有困难。
- 微服务源于模块化和组件化概念,经历了从单体架构到面向服务架构(SOA)再到微服务的演变。
- 单体架构将所有代码集成在一个巨大项目中,适用于小规模应用,而 SOA 有标准化服务和 ESB,但实现复杂且效果不佳。
- 微服务架构类似 SOA 但接口合同更宽松,无需 ESB,服务包含业务逻辑且直接请求其他服务。
重要细节: - 以在线书店为例,说明微服务的架构和接口,如移动应用和浏览器 SPA 通过 API 网关/代理消费 REST 接口,各服务有自己的 REST 接口。
- 单体方式将服务集成在一个应用中,创建单个 REST 接口和共享数据存储;微服务方式则将服务拆分为独立应用,各自有进程空间、数据存储和 REST 接口。
- SOA 中通过 ESB 配对生产者和消费者,服务无需了解对方,多数消息路由和决策在 ESB 中。
- 微服务的优势包括服务小且自包含、修改不影响其他服务、可独立部署和扩展、开发可独立进行等;缺点有服务可能有重复逻辑、需更多编排、测试困难等。
- 介绍了一些关于微服务的重要资源,如相关书籍和 Netflix 技术博客等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。