服务治理的关键技术有哪些?服务关键程度和服务的依赖关系如何识别?服务状态和生命周期如何管理?服务调度过程的关键技术有哪些?
打卡Day4:今天学习了《25|分布式系统关键技术:服务调度》,我的收获如下:
服务治理的关键技术
- 关键程度
- 依赖关系
- 服务发现
- 版本管理
- 生命周期管理
服务关键程度和服务的依赖关系
服务关键程度,通过细致管理对业务的理解来定义。
微服务是服务依赖最优解的上限,下限是千万不要有依赖环。
服务依赖关系可以通过Zipkin服务调用跟踪系统来梳理。
服务状态和生命周期的管理
服务注册中心用来知道:服务数量、服务版本、服务实例数量及状态、服务总体状态。
服务状态包括:Provision、Ready、Run、Update、Rollback、Scale、Destroy、Failed。
整个架构的版本管理
版本管理,即由一堆服务的版本所形成的整个架构的版本控制,用以解决各个服务的版本兼容问题。
使用场景如,回滚一个服务的版本,就要把与之有版本依赖的服务也一起回滚。
资源 / 服务调度
服务调度过程的关键技术:
- 服务状态的维持和拟合。
- 弹性伸缩和故障迁移。
- 作业和应用调度。
- 作业工作流编排。
- 服务编排。
服务状态的维持和拟合
服务运行中状态的变化包括:
- 不预期变化。如故障导致服务挂掉
- 预期变化。如发布新版本。
Scale一般步骤:扩展结点 -> 部署服务 -> 启动服务 -> 检查健康 -> 加入服务发现。
拟合:控制系统进行若干次操作,努力逼近最终状态、直到完全达到的过程。
服务的弹性伸缩和故障迁移
故障恢复的模式:
- 宠物模式。一定要救活,主要是对于有状态服务。
- 奶牛模式。重新生成一个实例。
服务工作流和编排
微服务一般使用API网关或消息队列来做编排(Orchestration)。