微服务架构之服务治理

服务治理(SOA Governance) 起源于 SOA 面向服务架构,随微服务架构的火热而变的普及,但其最终目的是要对微服务框架下的大量微服务可能出现的问题进行治理。

服务治理本身一个大而泛的概念,没有明确的官方或标准化组织对其给出定义;服务治理的概念、内涵和实践,在业界还没有达成共识,更无法形成行业标准。随着系统的复杂程度越来越高,服务治理的需求越来越紧迫,并已成为一大痛点。

服务治理

下面的广义服务治理和侠义服务治理是个人理解。

广义服务治理

在《SOA 治理–云环境中的共享服务治理(英文版)》(SOA Governance:Governing Shared Service On-Premise and In The Cloud)对服务治理(Soa Governance)有相关的描述。

服务治理(Soa Governance):企业为了确保事情顺利完成而实施的过程,包括最佳实践、架构原则、治理规程、规律以及其他决定性的因素。服务治理指的是用来管理SOA的采用和实现的过程。–Anne Thomas Manes

服务治理针对的问题

服务治理中一些典型的问题是:

  1. 交付价值到利益相关者,这是投入与回报的问题
  2. 对标准和规则的遵从(这是和审计相关的)
  3. 变更管理:变更一个服务通常会引起不可预见的后果,因为服务的消费者对服务的提供者来说是不可知的。
  4. 服务质量的保证:弹性添加新服务需要对这些服务给予额外的关注。

服务治理包括的行为

服务治理的一些关键活动包括:

  1. 对开发新服务和升级现有服务的计划
  2. 管理服务的生命周期:确保升级服务不会影响目前的服务消费者
  3. 制定方针来限制服务行为:制定所有服务都要遵从的规则,确保服务的一致性
  4. 监控服务的性能:由于服务组合,服务停机和性能低下的后果是严重的。通过监控服务的性能和可用性,当问题出现的时候能马上采取应对措施。
  5. 管理由谁来调用服务、怎样调用服务

狭义服务治理

服务治理:是IT治理的一部分,重点关注服务生命周期的相关要素,包括服务的架构,设计,发布,发现,版本治理,线上监控,线上管控,故障定界定位,安全性等。

在服务的架构体系中,由于服务的提供者和服务的使用者分别运行在不同的进程中(甚至在不同的物理节点上),并由不同的团队开发和维护。

团队的协作和服务的协同,都需要进行大量的协调工作。协调工作越多,复杂度越高。任何事物,一旦有了复杂度,伴随着就有了治理的需求,通过治理,为协调工作立规范、打基础、并时时监控,不断优化协调的效率,以期降低复杂度,规避风险,这就是服务治理的由来。

服务的治理既要进行线上的治理,也要进行线下的治理,通过线上线下两大维度进行治理指标的采集,并把它们统一汇总到指标中心,进行综合的汇总、聚合、分析,获得对服务的客观度量。

这些度量指标中,有相当一部分线上的性能及异常指标会被转化为运维事件,一旦触发我们预先设置的阈值,就会更进一步转化成“管控指令”,并通过调度中心下发,进行服务的弹性伸缩、扩容缩容等资源调度操作,或者进行服务的限流、降级、容错、路由调整等管控操作。

另外一部分度量指标,包括架构、开发、测试、运维、过程协作效率等指标会通过治理委员会(泛指,治理成员的集合)进行人为的深入分析,并制定出治理决策,这些治理决策会通过相关的过程优化管理措施进行落地。

这样,通过服务的度量、管控、管理这三大举措,就可以构建起一个三位一体、围绕服务治理的闭环体系。

以上内容摘自书籍《微服务治理 体系、架构及实践》–李鑫。

微服务治理

目前所谈的服务治理,主要是针对分布式服务框架体系的微服务,也是因为微服务架构下会产生大量的微服务,同时带来了服务的稳定性和一致性问题,就需要相应的服务治理,包括:服务注册,服务发现、服务调用,服务配置、服务降级,链路跟踪,服务监控、故障监控与处理等。

微服务架构平台的服务治理应该具体的核心功能:

功能 特性 组件
注册中心 服务注册、服务发现;
健康检测、心跳检测;
数据上报,元数据更新
Eureka,Zookeeper,
Consul,Nacos
配置中心 配置文件集中管理,可视化管控,
动态通知,多版本多环境
Config,Nacos,Apollo,BRCC
RPC框架 RPC调用,序列化/反序列化,客户端负载均衡 Dubbo,Feign,Ribbon,BRPC
熔断降级 限流,线程,QPS;熔断,补偿
可配置降级、容错,屏蔽
Hystrix,Sentinel
链路跟踪 全链路跟踪,链路查询,日志规范 Zipkin,Sleuth,Htrace,SOFATracer
微服务网关 路由,签权,流控,监控,灰度,日志
安全防护,数据转换,协议转换
Zuul,Gateway,Promethues
异步一致性 消息中间件,幂等性,重试机制,分布式事务 Seata,JTA,RocketMQ

治理与管理

SOA Governance 译为 服务治理的争议,有说译为 管理 更为直接。治理 与 管理在词汇上很难做到完全区分,治理和管理都有规范、指导控制的意思。需放到特定的语境或行业就更易理解了。

知乎上有人给出两者区别:

  1. 治理指的是个过程,管理是种方法
  2. 治理目标是协调多方利益,管理更偏向于管理者的利益
  3. 治理需要多方共同参与,管理主体相对单一
  4. 治理偏重与行政支配地位,管理侧重于使用技能是下属完成工作目标,两者在层次和阶段上不同。
  5. 治理侧重于事前控制,是激励系统的机制建立;管理侧重于事后控制,是激励、战略实施过程中的控制和修正。
  6. 管理多是使用法律等强制手段,治理多是协商,更平等

相关参考

作者

光星

发布于

2021-03-25

更新于

2022-07-12

许可协议

评论