微服务从小白到专家:Spring Cloud和Kubernetes实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

5.1 什么是服务治理

简单地说,服务治理主要解决了两个问题,一是如何获取分布式环境中各个服务实例的目标地址,二是如何定时更新服务实例的当前状态(是否可用或不可用)。只有解决了这两个问题,各个微服务实例才能利用服务发现机制发起远程调用。

微服务的本质是分布式架构的延伸,后台服务被部署在多个分布式服务集群中。以电商中的下单场景为例,一个典型的微服务集群如图5-1所示。

图5-1 一个典型的微服务集群

在图5-1中,订单服务和商品服务是两个独立存在的微服务集群,它们之间存在上下游服务的调用关系。在创建一个用户订单的同时,订单服务会调用商品服务获取商品的基本信息。调用请求从订单服务集群中的任意一台机器发出,为了确保服务请求能够发送给商品服务,我们需要有一个中心化组件来维护所有微服务的服务器列表,而这个中心化组件可以通过心跳连接等方式感知服务器的运行状态(状态可用、不可用)。

基于图5-1中描述的需求背景,“注册中心”应运而生,它作为一个独立的中间件用于维护服务的宿主机信息,包括服务器地址、端口号和服务名称等。添加了注册中心的服务集群如图5-2所示。

图5-2 添加了注册中心的服务集群示意图

如图5-2所示,注册中心有以下三个主要任务:

1. 服务注册

当客户端启动服务时,会主动向注册中心注册自己的信息,包括地址信息、服务名称及服务状态。

2. 服务发现

客户端服务从注册中心获取当前已注册的机器列表信息,包括地址端口和服务名称。

3. 维护注册表

如果某个应用服务器主动下线,或者因为网络故障等原因无法继续提供服务,那么注册中心需要将这台服务器从可用机器列表中删除。