服务治理的关键技术有哪些?服务关键程度和服务的依赖关系如何识别?服务状态和生命周期如何管理?服务调度过程的关键技术有哪些?

打卡Day4:今天学习了《25|分布式系统关键技术:服务调度》,我的收获如下:

服务治理的关键技术

  • 关键程度
  • 依赖关系
  • 服务发现
  • 版本管理
  • 生命周期管理

服务关键程度和服务的依赖关系

服务关键程度,通过细致管理对业务的理解来定义。

微服务是服务依赖最优解的上限,下限是千万不要有依赖环。

服务依赖关系可以通过Zipkin服务调用跟踪系统来梳理。

服务状态和生命周期的管理

服务注册中心用来知道:服务数量、服务版本、服务实例数量及状态、服务总体状态。

服务状态包括:Provision、Ready、Run、Update、Rollback、Scale、Destroy、Failed。

整个架构的版本管理

版本管理,即由一堆服务的版本所形成的整个架构的版本控制,用以解决各个服务的版本兼容问题。

使用场景如,回滚一个服务的版本,就要把与之有版本依赖的服务也一起回滚。

资源 / 服务调度

服务调度过程的关键技术:

  • 服务状态的维持和拟合。
  • 弹性伸缩和故障迁移。
  • 作业和应用调度。
  • 作业工作流编排。
  • 服务编排。

服务状态的维持和拟合

服务运行中状态的变化包括:

  • 不预期变化。如故障导致服务挂掉
  • 预期变化。如发布新版本。

Scale一般步骤:扩展结点 -> 部署服务 -> 启动服务 -> 检查健康 -> 加入服务发现。

拟合:控制系统进行若干次操作,努力逼近最终状态、直到完全达到的过程。

服务的弹性伸缩和故障迁移

故障恢复的模式

  • 宠物模式。一定要救活,主要是对于有状态服务。
  • 奶牛模式。重新生成一个实例。

服务工作流和编排

微服务一般使用API网关或消息队列来做编排(Orchestration)。

左耳朵耗子带你重学《左耳听风》

https://time.geekbang.org/column/article/1604