微服务治理
微服务治理其实乍一听挺难理解的,那么我们先抠个字眼:
所谓“治理”,在汉语词典(简编版)中的解释是“整治、修整”,字面上包含了对被治理对象的问题梳理及改进优化的意思。
那么其实换个词就好理解了,你是simcity中的市长。面对纷繁复杂的城市各个体系:水、电、交通、建筑、居民、税收等等,我们该如何将他们一一理顺,整理地清楚明白,让他们井井有条地工作呢?
那么对于微服务架构也是一样,当我们从一个巨石服务跨越到微服务架构时,我们需要做哪些事情才能将这样的一个架构整理地井井有条呢?
服务治理体系
上图是我手打整理的一个微服务治理体系,主要包含以下几个部分:
微服务架构搭建
- 网关层:负责管理架构入口的层级,类似于城市的入境检查和导览,主要功能包括安全校验,部分功能集成如熔断、日志等,以及反向代理(找到对应的下游服务进行请求处理)
- 业务服务层:负责处理业务的服务层级,分为聚合服务、基础服务、后台服务三类不同的业务服务
- 支撑服务层:支撑整体微服务正常工作的层级,类似于城市中的公园、消防站、医院等功能性建筑,等如消息队列kafka,缓存代理,内部通信rpc等
信息汇总与分析
- 服务发现与注册中心:在微服务、大规模分布式架构中,由于服务的扩容/缩容/故障等,同一个服务的节点地址列表会动态地发生变化;服务注册中心提供了一种服务的发布和查找机制:它记录并维护了所有服务的节点地址列表,使得调用方无需了解整个架构的部署拓扑 ,就可以方便地根据服务名称找到对应地址;常见的组件有Eureka,Consul等
- 服务日志及日志可视化:常见的由ElasticSearch提供日志存储和查询能力,Kibana提供日志可视化能力
- 链路追踪:由于微服务架构中为了完成一个请求可能需要多个服务共同协作,所以需要可以对请求处理的整个链路中各个服务耗时及错误情况进行追踪的能力
- 监控、报警及可视化:用于汇总并检测运维侧数据信息如cpu使用率,接口错误率及业务侧数据信息如缓存回源率等并提供相应的可视化能力
- 配置中心:汇总各类配置,独立管理
治理策略
- 负载均衡:分为服务端负载均衡和客户端负载均衡,用于保证各服务节点之间压力大体均等;常见的算法有WRR,P2C等。
- 服务容错机制:由于微服务将服务进行了拆分,对于一个服务来说可能同时有上下游,所以需要做好防御性编程,即Design For Failure,尽力保证单服务的问题不影响整体架构。服务容错策略的设计包含:隔离、超时与重试、限流、熔断器、Fallback等多种机制。
关于服务容错机制的详解,我将在下一篇文章【微服务】服务容错机制中进行阐述。