负载均衡本身的单点问题。
Client的节点数量:单个Client如果注册的服务太多,负载较重,需要有个算法(比如hash一致)合理分配每个Client上的服务数量,以及确定Client的总体数量。
服务发现要过滤掉重复的注册,因为注册到了多个节点会认为是多个部署(DNS接口不会有这个问题)。
这个方案其实还可以优化,服务发现使用的负载均衡可以直接代理Server节点,因为相关请求还是会转发到Server节点,不如直接就发到Server。
是否可以只有Server?
这个问题的答案还是有关服务数量的问题,首先Server的节点数量不是越多越好,3个或者5个是推荐的数量,数量越多数据同步的处理越慢(强一致性);然后每个节点可以注册的服务数量是有上限的,这个受限于软硬件的处理能力。所以如果你的服务只有10个左右,只有Server问题是不大的,但是这时候有没有必要使用Consul呢?因此正常使用Consul的时候还是要有Client才好,这也符合Consul的反熵设计。
大家可以将这个部署架构与前文提到的普世架构对比下,看看哪个更适合自己,或者你有更好的方案欢迎分享出来。
后记
在编写这篇文章的时候,发现很多地方还不了解,很多框架也没有使用过,增长了不少见识,同时确认了一些之前似是而非的细节,但是文中仍可能有些理解错误,或者说的不是很清楚的地方,比如如何结合容器在生产环境使用,欢迎大家加群交流(群号: 234939415)!
我的独立博客:http://blog.bossma.cn/consul/consul-service-register-and-discovery-style/