微服务架构
架构风格演变
- 单体架构
Monolithic
:集成所有功能,开发部署简单但易形成“泥球结构”。 - 分层架构
Layered
:结构化设计、关注分离,但仍有耦合问题。 - SOA架构:服务间通信通过企业服务总线
ESB
,模块化强,但总线复杂性高。 - 微服务架构
MSA
:将应用拆分为可独立部署的小服务,通信轻量,支持独立伸缩。

架构风格的演变
微服务架构特点
微服务架构是一种将单体应用拆分为细粒度的服务,并使其运行在独立进程中,服务之间采用轻量级通信机制 (如HTTP RESTful API) 进行交互的架构风格。这些服务围绕系统的业务能力构建,且可以通过全自动的部署机制进行独立部署。服务可以进行分布式管理,从而支持不同的编程语言进行开发和不同的数据存储技术进行存储。

微服务架构
微服务架构的特性包括:组件化、围绕业务能力组织、内聚解耦、去中心化、基础设施自动化、高可伸缩性等。
微服务架构设计
微服务架构设计的核心是将应用拆分为多个小型、独立的服务,每个服务专注于特定的业务功能。微服务架构模式语言(一组设计模式)包括:
- 拆分模式:将单体应用拆分为多个小服务,每个服务独立部署和扩展。
- 根据业务能力进行服务拆分
- 根据子域进行服务拆分:领域驱动设计(DDD)中的子域划分
- 根据动静态调用关系拆分:针对棕地系统进行分析。
- 通信模式:使用轻量级协议(如HTTP RESTful API、gRPC)进行服务间通信。
- 断路器模式:避免由于服务故障或网络中断所引起的故障蔓延到其他服务。
- 应用层服务发现模式:服务实例使用服务注册表自注册,客户端查询服务注册表以获取服务实例的列表。
- 平台层服务发现模式:注册服务器处理注册,而不是服务本身向服务注册表注册自己。注册服务完全交给部署平台。
API Gateway
模式:API Gateway 作为进入基于微服务应用的入口点,提供统一的API接口,处理请求路由、负载均衡、安全认证等。
- 部署模式:将服务部署到独立的进程或容器中,或使用
Serverless
技术。- 单主机部署多个服务实例
- 单主机部署多个服务实例
- 将服务部署到虚拟机
- 将服务部署到容器
- 服务部署平台
- 无服务器部署
- 可观测性模式:观测各个服务的运行状态和性能。
- 日志聚合
- 审计日志
- 应用程序指标
- 分布式跟踪:为每个外部请求分配一个唯一的外部请求 ID,可分析请求如何从一个服务流向下一个服务。
- 异常跟踪
- 健康检查
API
:使用ping-echo
模式监控服务健康状态。