分布式配置中心引发的问题

2021年4月21日 69点热度 0条评论 来源: MB_Edge

上次我们说到分布式配置中心(上一篇),能通过gitee集中管理文件。
问题描述:那当我们修改了gitee仓库的文件,那配置中心能及时的更新数据吗?

准备工作:

之前我们在user-dev配置文件中有test.name属性和值java,之后修改并在控制台打印这个值来测试是否能及时更新。

测试操作:

先在user-service(服务提供者)的Controller类中加上name属性:

@RestController
public class UserController{ 
	@Resource
	private UserService service;
	@Value("${test.name}")
	private String name;
	@GetMapping("/user/{id}")
	public User XXX(@PathVariable("id")Long id){ 
		//在控制台输出test.name属性的值,看是否更新成功
		System.out.println("配置文件中的test.name:"+ name);
		return service.XXX(id);
	}
}

测试结果:

挨个开启Eureka、配置中心和服务提供者。

当发送请求并正常响应时:

然后服务提供者、注册中心和配置中心的启动类不关闭,在仓库修改test.name的值为minbo1。然后刷新页面,发现test.name的值没有更新。当我们rerun服务提供者时,发现值更新了。
这就衍生出另一个问题。当一个服务有多个实例,也就是集群的时候,岂不是一个一个重启才能更新到值?!显然是不合理的。

这就需要用到消息总线
过程简述:微服务对消息队列进行监听,当接到消息队列的消息后,重新从配置中心获取配置信息,实现更新。

    原文作者:MB_Edge
    原文地址: https://blog.csdn.net/weixin_44078232/article/details/115708440
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。