SpringCloud入门服务治理(一)
服务治理两大核心组件
摘要
服务治理可以说是微服务中最为核心和基础的模块,用来实现各个微服务实例的自动化注册和发现。
为什么我们需要在微服务架构中引入服务治理模块?
业务场景:在最开始构建微服务系统的时候,可能服务并不多,我们可以手工做一些静态配置来完成服务的调用。服务A调用服务B,为了实现服务B的高可用,无论是采用服务端的负载均衡还是客户端的负载均衡都需要手工维护服务B的实例清单,但是随着业务的发展,系统功能语法复杂,相应的微服务应用也在不断增加,我们的静态配置变得难以维护。
为了解决微服务架构中服务实例维护问题,市面上产生了很多服务治理框架和产品。这些框架和产品都有一个特性:围绕着服务注册与服务发现机制完成对微服务应用实例的自动化管理。
一、服务注册
每个服务单元向注册中心登记自己提供提供的服务,也可以通可视化界面查看提供该服务在哪些服务器上,维护一个服务清单。
当这些进程服务启动,并向注册中心注册自己的服务之后,注册中心需要以心跳的方式去监听清单中的服务是否可用,如果不可用就需要从服务清单提出,以达到排除故障服务的效果。
不同的服务治理框架机制不同,剔除策略也不相同,例如Eureka基于CAP理论的AP设计的自我保护机制剔除时机设计,Zookeeper基于CP设计等。
二、服务发现
依赖于服务治理框架下运作,此时服务之间的调用不再通过指定具体的实例地址实现,而是通过配置的服务名发起请求调用实现。
服务调用方(消费者)在调用服务(生产者)提供的接口时并不知道具体的服务实例位置。因此,服务调用方需要向服务注册中心中咨询服务,并获取所有的服务实例清单以实现对具体的服务实例调用。
对于具体调用哪个服务实例可以通过负载均衡算法实现。注意:客户端负载均衡与服务器端负载均衡的区别。
Eureka架构与Dubbo架构对比