blog icon indicating copy to clipboard operation
blog copied to clipboard

到底什么是服务治理?

Open TFdream opened this issue 4 years ago • 0 comments

服务治理的英文单词是SOA governance,维基百科定义 点此 查看。

所谓“治理”,在汉语词典(简编版)中的解释是“整治、修整”,字面上包含了对被治理对象的问题梳理及改进优化的意思。服务治理是IT治理的一部分,它重点关注服务生命周期的相关要素,包括服务的架构、设计、发布、发现、版本治理、线上监控、线上管控、故障定界定位、安全性等。

在服务的架构体系中,由于服务的提供者和服务的使用者分别运行在不同的进程中(甚至在不同的物理节点上),并由不同的团队开发和维护。团队的协作和服务的协同,都需要进行大量的协调工作。协调工作越多,复杂度越高。任何事物,一旦有了复杂度,伴随着就有了治理的需求,通过治理,为协调工作立规范、打基础、并时时监控,不断优化协调的效率,以期降低复杂度,规避风险,这就是服务治理的由来。

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

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

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

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

单体服务(monolithic)

如果服务属于单体结构,服务治理的挑战更多是当单体架构由于承载的业务庞大,服务内部逻辑变得复杂,扩展性也变差。这时候往往不需要特别的服务治理手段,而是将单体服务拆分为微服务,即完成”微服务化“,将原有单体服务架构向微服务架构演进。

微服务(microservices)

业务服务演进到微服务架构后,服务治理问题是否就此终结?远远没有。在微服务架构下,出现了新的服务问题,从而需要对微服务进行服务治理。那微服务又有哪些问题需要治理?

对于微服务治理,传统的做法都是需要引入微服务研发框架,配合控制平台完成如上服务治理能力的建设。比较常见的微服务研发框架包括SpringCloud、Dubbo等。

对比 SpringCloud、Dubbo 看看他们的共性都有什么,如果把功能相同的进行一下归类,会发现有这样几个主要功能:

  • 服务注册发现:Eureke,Nacos,Consul,ZooKeeper
  • 服务配置:Spring Cloud Config,Archaius
  • 服务熔断:Hystrix,resilience4j
  • 网关:Zuul,Spring Cloud Gateway
  • 负载均衡:Ribbon,Feign
  • 链路追踪工具:Sleuth,Zipkin,Htrace
  • 日志采集:logback,ElasticSearch
  • 监控平台:Promethues,Kibana,grafna,Spring boot admin

相关资料

TFdream avatar Aug 31 '21 00:08 TFdream