微服务架构中最核心的部分是服务治理,服务治理最基础的组件是服务注册和服务发现。随着微服务架构的发展,出现了很多微服务架构的解决方案,其中包括我们熟知的Dubbo和Spring Cloud。 关于服务注册和服务发现的解决方案,dubbo支持了zookeeper、redis、multicast和simple,官方推荐zookeeper。Spring cloud支持了Eureka、zookeeper、Consul、nacos,官方推荐了Eureka。Spring Cloud Ali为了同时支持dubbo和Spring cloud,推荐使用Nacos。
服务注册和服务发现主要解决了两个重要的问题:
1. 解耦服务中间相互依赖的细节;
2. 对微服务进行动态管理,动态处理服务的注册、服务的维护、服务的维护。
服务的注册(service Registration):当服务启动的时候,它应该通过某些形式(如调用 API、产生事件消息、在 ZooKeeper/Etcd 的指定位置记录、存入数据库,等等)将自己的坐标信息通知到服务注册中心,这个过程可能由应用程序本身来完成,称为自注册模式,譬如 Spring Cloud 的@EnableEurekaClient 注解;也可能有容器编排框架或第三方注册工具来完成,称为第三方注册模式,譬如 Kubernetes 和 Registrator。
服务的维护(service Maintaining): 尽管服务发现框架通常都有提供下线机制,但并没有什么办法保证每次服务都能