服务治理
- 服务治理用来实现各个微服务示例的自动化注册与发现。
- 服务治理围绕“服务注册”和“服务发现”机制来完成对微服务应用示例的自动化管理:
- 服务注册:在服务治理框架中,通常会构建一个注册中心,每个服务单元向注册中心等级自己提供的服务,将主机,端口号,版本号,通信协议等一些附加信息告知注册中心,注册中心按照服务名分类组织服务清单。
服务中心还需要以心跳的方式检测清单中的服务是否可用,不可用需要从服务清单中剔除,达到排除故障服务的效果。 - 服务发现:调用方需要想服务注册中心咨询服务,并获取所有服务的示例清单,以实现对具体服务实例的访问。
- 服务注册:在服务治理框架中,通常会构建一个注册中心,每个服务单元向注册中心等级自己提供的服务,将主机,端口号,版本号,通信协议等一些附加信息告知注册中心,注册中心按照服务名分类组织服务清单。
Eureka
- Spring Cloud Eureka使用Netflix Eureka来实现服务注册与发现。
- 包含服务端组件和客户端组件,均采用Java编写。
- 适用于通过Java实现的分布式系统,或者与JVM兼容语言构建的系统。
- 也支持将非Java语言构建的微服务纳入服务治理体系。需要实现各自的Eureka客户端。
- Eureka服务端也叫服务注册中心,依托于强一致性提供良好的服务实例高可用。
- Eureka客户端主要处理服务的注册与发现。通过注解和参数配置的方式,嵌入客户端应用程序代码中,在应用程序运行时,向注册中心注册自身提供服务并周期性发送心跳来更新服务租约。同时也能从服务端查询当前注册的服务信息并缓存到本地并周期性刷新服务状态。
服务注册中心
- 通过@EnableEurekaServer启动服务注册中心提供给其他应用进行对话
- 通过@EnableDiscoveryClient注解,激活Eureka中的DiscoveryClient实现(自动化配置,创建DiscoveryClient接口针对Eureka客户端的EurekaDiscoveryClient实例)
- 通过spring.application.name属性雷为服务命令
- 通过eureka.client.serviceUrl.defaultZone属性来指定服务注册中心的地址
- Eureka通过将自己作为服务想其他注册中心注册自己,形成一组互相注册的服务注册中心,来实现服务清单的互相同步,达到高可用的效果。
服务发现和消费
- 由Eureka客户端完成服务发现
- 由Ribbon完成服务消费:
-Ribbon是一个基于HTTP和TCP的客户端负载均衡器。可以通过在客户端中配置的ribbonServerList服务端列表去轮询访问以达到负载均衡的作用- 和Eureka一起使用时,RibbonServerList会被DisvoceryENabledNIWSServerList重写,扩展成Eureka注册中心获取服务器列表。
服务治理机制
-
服务提供者
- 服务注册
- 服务同步
- 服务续约
-
服务消费者
- 获取服务
- 服务调用
- 服务下线
-
服务注册中心
- 失效剔除
- 自我保护
网友评论