一、微服务的定义
定义一
- 微服务是一种架构风格,将单体应⽤用划分成一组小的服务,服务之间相互协作,实现业务功能
- 每个服务运行在独⽴立的进程中,服务间采⽤轻量级的通信机制协作(通常是HTTP/ JSON)
- 每个服务围绕业务能力进行构建,并且能够通过自动化机制独立地部署 很少有集中式的服务管理,每个服务可以使用不同的语言开发,使⽤不同的存储技术
参考:https://www.martinfowler.com/articles/microservices.html
定义二
- Loosely coupled service oriented architecture with bounded context
- 基于有界上下文的,松散耦合的面向服务的架构
二、什么是微服务架构
- 由一组小的服务组成,例如将单体架构应用进行拆分成多块小的独立服务,服务有多小具体看业务进行划分。
- 每个服务都是运行在独立的进程之中,以进程的方式去进行横向扩展。
- 服务之间的通信方式是轻量级的,例如HTTP协议、RPC协议。
- 一般要基于业务能力来构建微服务。
- 每块服务都是能独立部署,团队之间不用太多协调,支持快速迭代。
- 无集中式管理,每个团队管理的服务可以根据业务需要来选择相应技术栈。
- 服务之间是松散耦合的,没有强依赖,微服务基于有界上下文,每个团队有独立的数据源,独立的去演化自己的服务。
问题:
- 微服务独立部署以后给业务带来了什么好处?
- 在分布式系统中,当每个团队都有独立的数据时会带来什么挑战?
三、微服务的利弊
利:
- 强模块化边界。以服务作为组件来模块化,服务调用服务。
- 可独立部署。独立开发,独立部署,有时候不需要其他团队的协同。
- 技术多样性。每个团队可以选择自己的技术栈。
弊:
- 分布式复杂性
- 最终一致性
- 运维复杂性
- 测试复杂性
**如果你搞不不定⼀一个单块应⽤用,别指望微服务能够拯救你!
四、微服务架构的适用性
小规模应用的开发不推荐直接从微服务开始,构建成本高,所以单块优先。在交叉点可以考虑引入微服务。
五、微服务的组织架构
单体架构:从产品管理到用户体验需要协调,从用户体验到研发也需要协调,以此类推,如果从运维反馈问题到产品,这将是一个漫长的过程,产品反馈周期长,效率低。
微服务:一个团队围绕一个服务进行不断迭代,团队内部人员能够达到闭环,以平台进行交付,对外提高API,进行端到端的服务。
六、阿里巴巴的中台战略
七、服务分层概念
**BFF相关内容请参见 《微服务架构 BFF和网关是如何演化出来的》一文:
https://blog.csdn.net/weixin_45953989/article/details/119004779
八、微服务总体架构体系
版权声明:本文为weixin_45953989原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。