一、cloud-config配置
1、启动三台cloud-config三台这样的服务:端口号分别设置为8081,8082,8083
2、现在把三台cloud-config三台一起部署
3、重启下CloudProviderApplication的客户端
可以看到控制台上有它发现了多个服务的Url地址的链表,最终选择了8082这台配置中心来拉去我们的配置。
4、现在把8082这台给宕机掉。相当于这台的配置中心已经宕机了
5、接下来再重新启动CloudProviderApplication:可以看到这时走8083这台配置中心了
6、现在把8083这台配置中心的服务也宕机
7、重新启动下MicroProviderApplication:这时就会从8081上去拉取数据了
总结:这就是它的高可用。我们不需要去配置的高可用就已经实现了。只要服务名称一样就可以了。我们在做项目的时候为了保证配置中心的高可用,会选用三台以上的配置中心,其实在做高可用的时候加一个zookeeper到时候就可以高可用了。本来zookeeper里面就有高可用的配置。
二、git上的相关配置
1、当我们改变下git上的配置信息下
比如在git上面中的provider-dev.yml里面的内容需要改下:这里变为release:发布的版本的话,服务名称也换成其他的话。
2、重新启动下8081的配置中心的服务:然后去刷新浏览器访问下git上的信息
发现访问下也信息也变了。因为本来这里就是从git上读取的。
当远程有一个信息更新了,一刷新的话就会有跟新的事件,本地的临时的文件和远程的git上的文件进行对比如果发现不同的话那么它就会进行更新,这是它自己做的事件触发。
3、重启下MicroProviderApplication,然后刷新浏览器再次请求
总结:上面是重启了配置中心的客户端,访问配置中心的配置信息才会变得,如果不重启MicroProviderApplication的话,信息不会发生变化的,那么如何去做到在服务器不重启的情况下,去更新客户端的配置读取呢?这就是重点的一个问题:因为:MicroProviderApplication客户端实际读取的是本地中的git文件的信息,并不是远程的git上面的信息。所以说我们需要做到当远程的git文件里的信息更新以后,我们需要通过cloud的bus来发送一条指令去刷新本地的缓存。如果说每次都是从远程的git上面去读信息的话,那么config该怎么玩,所以说是拉取到本地的。在SpringCloud当中使用Bus+RabbitMQ在不重启项目情况下实现刷新配置。
下次会分享SpringCloud当中使用Bus+RabbitMQ
欢迎各位小伙伴来评价,想要工程代码的加群:797853299