(一)背景介绍
Sidecar模式设计思想的核心是将控制和逻辑分离,常用于我们在分布式架构中的逻辑和控制分离设计。迁移到我们的分布式架构中就是:我们不需要在服务中实现控制面上的东西,如监视、日志记录、限流、熔断、服务注册、协议适配转换等这些属于控制面上的东西,而只需要专注地做好和业务逻辑相关的代码,然后,由“Sidecar”来实现这些与业务逻辑没有关系的控制功能。
Sidecar模式是将应用程序的组件部署到单独的进程或容器中,以提供隔离和封装。此模式还允许应用程序由异构组件和技术实现。用到软件架构中,就是Sidecar应用是连接到父应用,并为其扩展或增强功能。Sidecar应用于主应用程序松耦合。
(二)Sidecar介绍
(1)概念介绍
Sidecar原意是摩托车的边车,用到软件架构中,就是Sidecar应用是连接到父应用,并为其扩展或增强功能。Sidecar应用于主应用程序松耦合。
(2)Sidecar模式优点
- 通过抽象出于功能相关的共同基础设施到一个不同层,以降低微服务代码的复杂度
- 因为应用不再需要编写相同的第三方组件配置文件和代码,从而降低了微服务架构中代码的复杂度
- 降低了应用程序和底层平台的耦合度
(三)Sidecar在多云纳管组件的探索
基于Sidecar模式的云资源纳管组件,为公有云,私有云,专有云,多云,分布式云等提供一种新的纳管组件和统一的资源模型。基于适配器模式的定制运行的Sidecar组件为不同云数据中心所部署的同构和异构资源池,抽象统一的云资源模型,提供统一的接入体系;并按照接口的标准化、体系化设计,形成统一的服务、数据、信息、消息、监控等内容的采集与分发。在保证各类消息、数据通道畅通的同时,尽可能降低异构资源池接入的复杂度。
(1)整体架构
Sidecar层:针对每种云厂商资源纳管期进行代理,包括资源的开通,施工,运行,升级,退订,销毁等。每种云厂商的Sidecar代理以单独的服务集群呈现,相互隔离,生命周期受到管控治理平面管理。Sidecar用来代理接管和厂商之间的资源请求流量。
统一服务层:对目前各个云资源服务进行统一的抽象,抽象出计算,存储,网络,数据库等组件的共有统一的抽象模型,并对服务今天统一的命名和参数管理。
管控治理层:对各个云厂商Sidecar全部的服务实例进行全方位治理。包括配置管理,升级管理,策略管理,监控管理和安全管理。保证Sidecar健康正常的运转,并在Sidecar失效的时候,能够进行在线切换,确保业务连续性。
管控平台:高阶管理控制平面,主要包括多云管理,运营管理和运维管理。从业务面进行多云的动态纳管,横向切换,混合部署,滚动升级,优雅下线等方面进行高阶任务下发,综合对多云的能力进行高阶管控。
(2)优点介绍
轻量独立的Sidecar模式:摒弃了传统基于API/SDK云资源纳管重耦合的方式,基于适配器模式的厂商独立的Sidecar代理模式。针对每个厂商研发对立的Sidecar 适配组件,适配组件生命周期不和业务层绑定,由自己独立的管控平面管理和控制。并对共享的统一的公用服务进行复用。Sidecar组件可以支持主备模式,集群模式等,可以进行在线的灵活切换,拓展和升级。
创新自研的Sidecar框架:目前传统的实现Sidecar模式的技术框架基本都是基于Envoy,Istio或者Dapr的方式。这种技术方式实现方式适合在在服务直接流量进行接管和代理。要求Sidecar 基本上成对的关系,不适合云资源纳管的场景,由于云厂商消费端并无Sidecar的对等端。而且Envoy相当笨重,配置和部署十分复杂。我们创新采用基于spring boot starter的方案来自研Sidecar组件,代理资源纳管流量,非常轻量。每个厂商,每个产品,每个版本,都可以设计单独的Sidecar组件。在灵活基础上,创造性地解决了多云资源纳管的一些痛点和问题。
统一抽象的云计算资源模型:目前很多已有云计算定义,每个厂商和组织的定义各不相同,导致自混合云和多云纳管的方式非常复杂,每次纳管,从控制端到数据层所有的流程环节,都需要根据云计算厂商的特地模型和属性,进行二次开发和封装,而且一旦接口变动,流程中涉及到的组件全部重新升级改造和适配。非常不敏捷。本发明参考了几大主流和新兴的云计算厂商的接口和模型,提出了对云计算模型统一抽象的方法,云计算模型主要包括计算,存储和网络三个主要的组件。
资源池在线动态纳管:针对每个厂商,每个云资源,每个版本的资源纳管需求,研发出不同的Sidecar定制组件。每一种同构或者异构的资源池接入,全部从资源管控平面以单独启动Sidecar组件完成,统一接口协议,对上层的资源管理层完全透明。启动Sidecar里完成资源的适配,映射和转换工作。每个资源池Sidecar支持动态部署,启动,运行,上线,下线,升级。