为springcloudconsul高可用而生的集群版ConsulClientClusterConsulClient实现

30次阅读

共计 562 个字符,预计需要花费 2 分钟才能阅读完成。

前言

使用 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 重试。

使用

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

正文完
 0