本文copy from web
为什么需要分布式配置中心? - 知乎
淘宝分布式配置管理服务Diamond - 菜鸟学院
具体项目参考:
diamond-分布式配置中心
- Diamond 是淘宝研发的分布式配置管理系统。使用 Diamond 可以让集群中的服务进程动态感知数据的变化,无需重启服务就可以实现配置数据的更新。
-
服务端搭建
1 准备工作
安装 jdk
- 安装 maven
- 安装 tomcat
- 安装 mysql
2 启动 mysql 并创建数据库和表
\-- 创建Diamond数据库
CREATE DATABASE IF NOT EXISTS \`diamond\` ;
USE \`diamond\`;
-- 配置表
CREATE TABLE IF NOT EXISTS \`config\_info\` (
\`id\` bigint(64) unsigned NOT NULL AUTO\_INCREMENT,
\`data\_id\` varchar(255) NOT NULL DEFAULT '',
\`group\_id\` varchar(128) NOT NULL DEFAULT '',
\`content\` longtext NOT NULL,
\`md5\` varchar(32) NOT NULL DEFAULT '',
\`src\_ip\` varchar(20) DEFAULT NULL,
\`src\_user\` varchar(20) DEFAULT NULL,
\`gmt\_create\` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
\`gmt\_modified\` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
PRIMARY KEY (\`id\`),
UNIQUE KEY \`uk\_config\_datagroup\` (\`data\_id\`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- 组表
CREATE TABLE IF NOT EXISTS \`group\_info\` (
\`id\` bigint(64) unsigned NOT NULL AUTO\_INCREMENT,
\`address\` varchar(70) NOT NULL DEFAULT '',
\`data\_id\` varchar(255) NOT NULL DEFAULT '',
\`group\_id\` varchar(128) NOT NULL DEFAULT '',
\`src\_ip\` varchar(20) DEFAULT NULL,
\`src\_user\` varchar(20) DEFAULT NULL,
\`gmt\_create\` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
\`gmt\_modified\` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
PRIMARY KEY (\`id\`),
UNIQUE KEY \`uk\_group\_address\` (\`address\`,\`data\_id\`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
3 下载源码
git clone https://github.com/gzllol/diamond.git
4 打包
- 修改 diamond-server/src/main/resources/system.properties 文件,将 diamond.server.addr 的值换成 Diamond 服务器所在机器的 ip 地址
- 修改 diamond-server/src/main/resources/jdbc.properties 文件,配置 mysql 服务器的 url,用户名和密码
- 在根目录执行打包命令
mvn clean package -Dmaven.test.skip=true
5 用 tomcat 加载 diamond-server/target/diamond-server.war
客户端使用
1 将 diamond-client jar 包发布到 maven 仓库
mvn clean deploy -Dmaven.test.skip\=true
2 在工程中引入 jar 包
<dependency>
<groupId>com.taobao.diamond</groupId>
<artifactId>diamond\-client</artifactId>
<version>2.0.5.4.taocode-SNAPSHOT</version>
</dependency>
3 使用例子
DiamondManager manager = new DefaultDiamondManager("${your\_config\_data\_id}", new ManagerListener() {
@Override
public Executor getExecutor() {
return null;
}
@Override
public void receiveConfigInfo(String configInfo) {
System.out.println("receive config: " + configInfo);
}
});
4 在配置中心界面添加一个配置
- 登陆配置中心(本机是 127.0.0.1:8080),用户名 abc,密码 123
- 点击左侧 “配置信息管理”
- 点击添加配置信息
- 输入 data_id(就是配置的 id,3 中的 ${your_config_data_id})和配置内容
- 点击 “提交”
- 在更新配置时,客户端会调用 ManagerListener 的回调函数 receiveConfigInfo,参数就是最新的配置内容
https://segmentfault.com/a/1190000009652248