[关闭]
@abelsu7 2019-09-26T10:41:59.000000Z 字数 3190 阅读 2821

微服务编排与容器调度

微服务 容器 Docker Kubernetes


1. 微服务需要编排吗?

1.1 什么是微服务

1.2 编制与编排

编制(Orchestration):

编排(Choreography):

编排(Choreography)的难点:

2. 微服务编排的流程

2.1 图形化的编排

2.2 编排的模型

编排的模型包括:

编排框架还提供了例如本地调用、REST 调用、同步/异步调用等活动,从而在使用上更加方便。

2.3 服务雪崩、降级与熔断

雪崩效应

在调用的时候我们知道有同步和异步的区别:
- 同步实现起来比较简单
- 但是在多级级联编排的时候要避免因为某个服务的不可用导致雪崩效应
- 一般可以通过设置合理的超时时间限流和服务熔断策略来避免

Service A调用Service B,失败次数达到一定阈值时,Service A就不会再去调用Service B,而是降级去执行本地的方法。

2.4 服务参数的适配

3. 微服务基础架构

3.1 核心模块

微服务基础架构的核心模块包括:

3.2 微服务架构总体技术体系

3.3 微服务 vs K8s

4. 企业案例

4.1 网易公有云容器平台

K8s 的架构本身就是微服务,支持定制化与横向扩展:

在 K8s 中几乎所有的组件都是无状态化的,状态都保存在统一的 etcd 里,扩展性很好,组件之间异步完成自己的任务,将结果放在 etcd 里面,互相不耦合:

网易云对容器创建流程进行了定制化。由于大促和非大促期间,节点的数目相差比较大,因而不能采用事先全部创建好节点的方式,这样会造成资源的浪费,因而中间添加了网易云自己的模块 Controller 和 IaaS 的管理层,使得当创建容器资源不足的时候,动态调用 IaaS 的接口,动态的创建资源。这一切对于客户端和 kubelet 无感知:

K8s 的每个组件都可进行独立的优化,互不影响:

1. 通过优化 Scheduler 解决并行调度的问题

2. 通过优化 Controller 加快新任务的调度速度

4.2 网易云轻舟微服务

1. 产品全景

2. 产品功能

4.3 新浪微博混合云 DCP

1. 容器编排

2. 容器编排需要解决的问题

  1. 服务定义:一般以 IP + port 唯一标识一个服务,这里端口的分配与管理会成为重点
  2. 资源管理:一个服务要运行,需要相应的资源,一般是 CPU/MEM/DISK/NET 等,怎么获取到这些资源,并合理分配是资源管理需要关注的部分,一般采用池化处理(资源池)。这也是编排的核心
  3. 容器调度:有了资源,怎么合理的选择资源节点,采取什么策略,怎么做容错处理等等,这些是容器调度需要关注的
  4. 服务检测:服务在起来后,要对外提供,需要验证其正确性,这里一般会做端口及业务检测
  5. 服务发现:验证通过的服务,如果真正对外提供服务,需要引入流量,也就是自动挂到 LB 上,这也是一种 WEB 类的服务发现

3. 分层的编排

新浪混合云系统 DCP 在设计之初遇到了一个很明显的问题:很难用单一的 IaaS,PaaS 或 CaaS 去定义我们的场景:
- 于是选择了混合云的模式
- 系统采用分层设计的方法去适应业务场景

不同的层是存在不同的编排方法的:

对于新浪混合云 DCP,主要有以下两大方面:

4. 微博混合云 DCP 架构设计

微博目前开发的 DCP 主要包含三层:

5. DCP 的功能模块

参考文章

  1. 微服务编排之道 | 掘金
  2. 微服务核心研究之编排 | 简书
  3. 编排的艺术:K8S 中的容器编排和应用编排 - Kuberneteschina | 知乎专栏
  4. 几种常见的微服务编排模式 | Neohope's Blog
  5. kubernetes 容器编排系统介绍 | 腾讯云+社区
  6. 容器编排的作用和要实现的内容 | CSDN
  7. 从 kubernetes 看如何设计超大规模资源调度系统 | CSDN
  8. 编排管理成容器云关键 Kubernetes(K8s)和Swarm对比分析 | kubernetes 中文社区
  9. 云编排技术:探索您的选择 | IBM Developer
  10. Netflix Conductor: A microservices orchestrator | Medium.com
  11. Kubernetes 容器编排的三大支柱 | 51CTO
  12. 深入 kubernetes 调度之原理分析 | 腾讯云+社区
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注