其实服务高可用也比较平常,就是一个服务名下有多个实例可用,当其中一个实例挂掉也不至于导致整个服务崩溃,这是高可用的目的。
由于 spring cloud 已经帮你做了很多了,所以这里做高可用很简单,而且各个实例的配置都差不多( 服务注册中心除外 ),所以这里并在一篇文章里写,俗语说得好,do not repeat youself.
要做到一个服务下多个实例,很简单,比如前面说到的 SleepCare-TestingServices,把项目复制一遍然后运行就行了。( 当然如果是伪集群的话,运行之前记得把项目的 server.port
改掉,除了端口以外其实其他东西都一样 )
当然如果是服务注册中心的高可用,稍微会有点不同。
多个服务注册中心的情况下,除了服务名相同以外,还需要相互注册,以 A, B, C 三者为例。
A 实例到 B, C 注册
B 实例到 A, C 注册
C 实例到 A, B 注册
这里服务注册中心先启动的必然会报错( com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused (Connection refused) ),这属于正常范围,因为它要去注册,而其他服务中心还没启动,要真是纠结,那就是个先有鸡还是先有蛋的问题了,直接忽略即可。
当服务中心完全启动之后,如下图:
无论你是访问哪个服务中心,DS Replicas
一项总会显示其余两个服务中心,那恭喜,你已经完成服务中心的高可用了。