Spring Cloud Consul 高可用:集群版ConsulClient - ClusterConsulClient实现

前言

如果你是严格遵守sidecar模式使用consul的,那么你可以忽略此文。

如果你的应用跟consul节点不是共生死部署(部署在一起),那么这是不错的解决方案。

使用consul作为服务配置、服务注册、服务发现中间件的应用程序都不可避免的遇到consul客户端单点故障问题,此模块即是为解决该问题而生!该模块相比于引入Nginx/HAProxy等负载均衡中间件的方式更为可靠和灵活,因为引入它们,它们自身也会出现单点故障问题,同时它们的属于负载均衡机制,灵活性不可控!

目标

集群版的ConsulClient:ClusterConsulClient,专门为辅助spring-cloud-consul而设计!实现了spring.cloud.consul.host可以配置多个节点,例如:

spring.cloud.consul.host=192.168.1.101:8500,192.168.1.102,192.168.1.103

其中,通过哈希一致性算法从host列表中选举一个ConsulClient作为主要客户端(primaryClient),初始化时当前正在使用的客户端(currentClient)即为primaryClient。当currentClient不可用时,在剩余的可用客户端中通过哈希一致性算法选举一个客户端作为currentClient,并通过RetryTemplate进行fallback重试。同时通过定时健康检测检查各个集群节点的可用性,当全部集群节点都是健康的,那么currentClient将恢复为primaryClient

使用

具体见项目主页spring-cloud-consul-cluster

你可能感兴趣的:(springboot,springcloud,consul,高可用,集群)