实现微服务的配置中心有多种选择方案,常见的方案有:
但上述方案都有一些不足:
我们在此选用了一种成本较低的方案: 使用cfg4j库,存储源选择git。
cfg4j是一款"分布式系统"的配置类库,它不包含服务端存储部分,但实现了从多种数据源读取,更新配置,以及缓存策略。
我们选用git作为数据源,原因有:
截至目前的最新版,cfg4j默认只支持从匿名git仓库拉取配置,我们需要对gerrit进行一些配置以满足这一条件。
使用管理员帐号登录gerrit,然后选择"Projects" -> "All-Projects" -> "Access",进行如下修改:
经过上述修改后,我们需要做一下简单验证:
git clone http://127.0.0.1:9002/lmsia-config
如果上述命令可以直接clone项目到本地,且无需输入用户名、密码,说明gerrit的权限配置成功。
在前面,我们新建了项目lmsia-config,并且给它配置了匿名访问权限。
我们的微服务可能有很多,如何让lmsia-config项目,支持多个微服务的配置呢?
我们通过目录的方式来实现:
.
├── lmsia-abc
│ └── config.properties
└── lmsia-xyz
└── config.properties
如上所示,对于每一个微服务项目,我们都在lmsia-config下创建一个目录,并在目录中放置config.properties作为配置文件。
在后面的章节,我们将介绍如何让微服务自动地解析上述配置文件路径。