001什么是服务治理
在soa话题中多数会提到服务治理,但服务治理的边界没有明确定义,如何通俗理解什么是”服务治理”?
微服务架构 为线索, 阐释下 什么是服务治理
首先需要明确,不管是什么事物需要”治理“,那一定是该事物存在一定问题。比如环境治理。那么服务,或者说微服务为什么需要治理?
- 如果服务承担的业务职责简单, 那治理的必要性不大,即使出现问题也能快速发现、定位、回滚
- 当服务承担的业务职责变多变大,随着更多问题的到来,服务治理开始变得必要;服务治理也与技术架构本身息息相关。
单体服务(monolithic)
如果服务属于单体结构,服务治理的挑战更多是当单体架构由于承载的业务庞大,服务 内部逻辑变得复杂,扩展性也变差。这时候往往不需要特别的服务治理手段,而是将单体服务拆分为微服务,即完成”微服务化“,将原有单体服务架构向微服务架构演进。
微服务(microservices)
在微服务架构下,出现了新的服务问题,从而需要对微服务进行服务治理。那微服务又有哪些问题需要治理?
1、服务注册与发现
服务注册中心: 微服务之间存在调用依赖,就需要得到目标服务的服务地址,也就是微服务治理的”服务发现“。将服务信息存储到注册中心。
2、可观测性
微服务由于较单体应用有了更多的部署载体,需要对众多服务间的调用关系、状态有清晰的掌控。可观测性就包括了调用拓扑关系、监控(Metrics)、日志(Logging)、调用追踪(Trace)等。
3、流量管理
由于微服务本身存在不同版本,在版本更迭过程中,需要对微服务间调用进行控制,以完成微服务版本更迭的平滑。这一过程中需要根据流量的特征(访问参数等)、百分比向不同版本服务分发,这也孵化出灰度发布、蓝绿发布、A/B测试等服务治理的细分主题。
4、安全
同微服务承载自身独有的业务职责,对于业务敏感的微服务,需要对其他服务的访问进行认证与鉴权,也就是安全问题。
5、控制
对服务治理能力充分建设后,就需要有足够的控制能力,能实时进行服务治理策略向微服务分发。
而对于微服务治理,传统的做法都是需要引入微服务研发框架,配合控制平台完成如上服务治理能力的建设。比较常见的微服务研发框架包括SpringCloud、Dubbo等。
这也就来到微服务架构新的时代 — Service Mesh。服务网格是一个微服务基础设施,用于处理微服务通信、治理、控制、可观测、安全等问题,具备业务无侵入、多语言、热升级等诸多特性,是业界下一代微服务架构方向。目前业界较为主流的是Google、IBM、Lyft主导研发的Istio框架,当然也有一些基于Istio实现的易用性更强的平台(如网易轻舟Service Mesh,利益相关),对Service Mesh本身的易用性、可观察性、可运维性等有了进一步增强。可以说Service Mesh架构本身目前站在了服务治理领域的顶峰。