MD 更新:未知

定义

很小的服务,它属于面向服务的架构的一种

优势

有点解读
复杂应用解耦小服务,化整为零
独立独立开发
独立测试及部署
独立运行
技术选型灵活支持异构(使用不同数据)
容错故障被隔离在单个服务中
送耦合,易扩展可根据需求对立扩展

挑战

分布式环境下的数据一致性【更复杂】测试的复杂性【服务间的依赖测试】运维的复杂性


微服务与 SOA 的对比

微服务SOA
能拆分就拆分是整体,服务能放在一起都放一起
纵向业务划分水平多层
单一组织负责按层级划分不同部门负责
细粒度粗粒度
简单复杂
独立子公司大公司的业务单元
组件小存在较复杂的组件
业务逻辑存在于每个服务中业务逻辑跨多个领域
使用轻量级的通讯方式:HTTP企业服务总线(ESB)充当了服务之间的通信

微服务的实现SOA 实现
团队级,自底向上实现企业级,自顶向下实现
系统拆分多个服务服务有多个子系统组成
无集中总线,松散企业服务总线,集中
集成方式简单 http/Rest集成方式复杂 ESB SOAP
能独立部署互相依赖,部署复杂

微服务的架构模式

聚合器服务

graph LR
A[聚合器] --> S1[微服务A]
A --> S2[微服务B]
A --> S3[微服务C]

链式服务

graph LR
A[API网关] <--> S1[微服务A]
S1 <--> S2[微服务B]
S2 <--> S3[微服务C]

异步消息传递微服务

graph LR
A[微服务A] --> B[消息队列 Kafka RabbitMq]
B --> C[微服务B]

微服务设计约束

  1. 微服务个体约束:每个微服务都是独立的,修改一个微服务不能影响另一个微服务
  2. 微服务与微服务之间的横向关系:通过第三方服务注册中心来满足服务可发现性
  3. 服务与数据层之间的纵向约束:数据是服务的私产,访问时需要通过微服务