fxleyu / cu-cafes

This is a repository of Java. And CU is a cafes unders downstairs.
2 stars 0 forks source link

[业务] 不可思议的配置中心 #55

Closed fxleyu closed 6 years ago

fxleyu commented 6 years ago

新版配置中心(使用 ZooKeeper 实现)有一个不可思议的功能。

在不传递 id 以及版本信息的情况下,可以基于配置内容动态的获取配置值。更不可思议的是,配置中心的客户端实例是一个单例模式。

fxleyu commented 6 years ago

原理

昨天上线,今天终于有时间追溯代码来解开谜底了。

其底层是使用 InheritableThreadLocal 来实现的。在新建线程或者复用线程时,使用切面编程创建或复用 InheritableThreadLocal 对象,并在其中存储 id、客户端等各种信息。在之后该线程及其子线程中,就可以透明的获取这些信息。基于这些信息动态获取配置内容就简单了。