微服务架构设计
  • 微服务架构设计
  • 服务架构演绎
    • 架构之美(TBD)
    • 单体架构介绍
    • SOA的演进
    • 微服务的兴起
  • 项目介绍
    • 项目背景
    • 单体架构实现
  • 微服务化之技术架构
    • 本章介绍
    • 服务怎么划分
    • 接口协议选择
    • 编制与协同设计
    • 事件驱动架构
    • 服务注册与调用
    • 统一配置中心
    • 服务熔断处理
    • 可降级设计
    • 缓存设计
    • 分布式锁使用
    • 分布式事务实现
    • 幂等与去重处理
    • 全局ID策略
    • 顺序处理
    • 延迟队列
    • 流控处理
    • 一致性与共识
    • CP与AP的取舍
    • 本章小结
  • 微服务化之开发与测试
    • 本章介绍
    • 团队架构
    • 代码管理
    • 接口管理
    • 单元测试
    • 可测试性设计
    • 本章小结
  • 微服务化之运维与交付
    • 本章介绍
    • 自动化部署
    • 服务监控
    • 节点伸缩与故障转移
    • 日志追踪与收集
    • 日志追踪与收集
    • 新老系统过渡方案
Powered by GitBook
On this page

Was this helpful?

  1. 微服务化之技术架构

编制与协同设计

Previous接口协议选择Next事件驱动架构

Last updated 6 years ago

Was this helpful?

服务治理这个词相信很多读者都听过,而其核心在于对服务调用的管理,这里就涉及到服务编制([Orchestration]()) )与协同( ,也有称编排),两者很容易混淆,中文翻译更是词不达意(如Google翻译将Service Orchestration和Service Choreography都翻译成服务编排,百度翻译Service Choreography为服务编舞),本书使用编制与协同是为更好区别两者,为明确意图下文直接使用英文单词。

单从字面看Orchestration为管弦乐曲,由一人负责指挥与调控各个乐师,而Choreography为舞蹈,各个舞蹈者多为对等关系,没有统一的协调者。事实上也是如此,Orchestration需要类似ESB的服务总线来统一管理调度各个服务间的通讯,而Choreography更强调的是各服务自治,各自自己去调用需要的服务,相对而言更去中心化。

🔆 ESB(Enterprise Service Bus)原指企业消息总线,是SOA重要的组成,这里借用下这一概念,在微服务中,ESB可以更轻量,比如Nginx或是Zuul等。

我们可以看出Orchestration是有中心化调度服务以协调各组件通信的方式,以用户注册流程为例:

各服务间都通过ESB进行数据通信,用户注册后会向ESB发送调用活动服务的用户注册接口,ESB会将对应的请求路由给活动服务,活动服务收到请求并处理后又向ESB发送调用卡券服务生成卡券,调用积分服务生成积分,ESB路由此请求给卡券服务和积分服务。

我们可以在ESB中做集中式的权限管控、日志处理等增强操作,这是它很大的优势,但也带来了不少的问题,存在中心化的ESB,所有请求都要经由ESB,所以在性能、扩展性、灵活性上会比较差。

相反,Choreography则是去中心化的、点对点的通信的方式,还是以注册为例:

所有的请求都是直接调用对应的服务,没有ESB,这带来的直接好处是性能的提升,但它与Orchestration一样存在一定的服务耦合,比如用户服务就需要感知到卡券服务及活动服务,活动服务需要感知到卡券服务,我们可以引入事件架构(见下一节)以避免这一问题。

从微服务所面对的场景分析,服务协同更为合适,这也是微服务下主流的服务治理方案。

https://en.wikipedia.org/wiki/Orchestration_(computing
Choreography