本文copy from web

为什么需要分布式配置中心? - 知乎
淘宝分布式配置管理服务Diamond - 菜鸟学院

具体项目参考:
diamond-分布式配置中心

  • Diamond 是淘宝研发的分布式配置管理系统。使用 Diamond 可以让集群中的服务进程动态感知数据的变化,无需重启服务就可以实现配置数据的更新。
  • 具有简单、可靠、易用等特点

    服务端搭建

    1 准备工作

  • 安装 jdk

  • 安装 maven
  • 安装 tomcat
  • 安装 mysql

    2 启动 mysql 并创建数据库和表

  1. \-- 创建Diamond数据库
  2. CREATE DATABASE IF NOT EXISTS \`diamond\` ;
  3. USE \`diamond\`;
  4. -- 配置表
  5. CREATE TABLE IF NOT EXISTS \`config\_info\` (
  6. \`id\` bigint(64) unsigned NOT NULL AUTO\_INCREMENT,
  7. \`data\_id\` varchar(255) NOT NULL DEFAULT '',
  8. \`group\_id\` varchar(128) NOT NULL DEFAULT '',
  9. \`content\` longtext NOT NULL,
  10. \`md5\` varchar(32) NOT NULL DEFAULT '',
  11. \`src\_ip\` varchar(20) DEFAULT NULL,
  12. \`src\_user\` varchar(20) DEFAULT NULL,
  13. \`gmt\_create\` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
  14. \`gmt\_modified\` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
  15. PRIMARY KEY (\`id\`),
  16. UNIQUE KEY \`uk\_config\_datagroup\` (\`data\_id\`)
  17. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  18. -- 组表
  19. CREATE TABLE IF NOT EXISTS \`group\_info\` (
  20. \`id\` bigint(64) unsigned NOT NULL AUTO\_INCREMENT,
  21. \`address\` varchar(70) NOT NULL DEFAULT '',
  22. \`data\_id\` varchar(255) NOT NULL DEFAULT '',
  23. \`group\_id\` varchar(128) NOT NULL DEFAULT '',
  24. \`src\_ip\` varchar(20) DEFAULT NULL,
  25. \`src\_user\` varchar(20) DEFAULT NULL,
  26. \`gmt\_create\` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
  27. \`gmt\_modified\` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
  28. PRIMARY KEY (\`id\`),
  29. UNIQUE KEY \`uk\_group\_address\` (\`address\`,\`data\_id\`)
  30. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

3 下载源码

  1. git clone https://github.com/gzllol/diamond.git

4 打包

  1. 修改 diamond-server/src/main/resources/system.properties 文件,将 diamond.server.addr 的值换成 Diamond 服务器所在机器的 ip 地址
  2. 修改 diamond-server/src/main/resources/jdbc.properties 文件,配置 mysql 服务器的 url,用户名和密码
  3. 在根目录执行打包命令
    mvn clean package -Dmaven.test.skip=true

5 用 tomcat 加载 diamond-server/target/diamond-server.war

客户端使用

1 将 diamond-client jar 包发布到 maven 仓库

  1. mvn clean deploy -Dmaven.test.skip\=true

2 在工程中引入 jar 包

  1. <dependency>
  2. <groupId>com.taobao.diamond</groupId>
  3. <artifactId>diamond\-client</artifactId>
  4. <version>2.0.5.4.taocode-SNAPSHOT</version>
  5. </dependency>

3 使用例子

  1. DiamondManager manager = new DefaultDiamondManager("${your\_config\_data\_id}", new ManagerListener() {
  2. @Override
  3. public Executor getExecutor() {
  4. return null;
  5. }
  6. @Override
  7. public void receiveConfigInfo(String configInfo) {
  8. System.out.println("receive config: " + configInfo);
  9. }
  10. });

4 在配置中心界面添加一个配置

  1. 登陆配置中心(本机是 127.0.0.1:8080),用户名 abc,密码 123
  2. 点击左侧 “配置信息管理”
  3. 点击添加配置信息
  4. 输入 data_id(就是配置的 id,3 中的 ${your_config_data_id})和配置内容
  5. 点击 “提交”
  6. 在更新配置时,客户端会调用 ManagerListener 的回调函数 receiveConfigInfo,参数就是最新的配置内容
    https://segmentfault.com/a/1190000009652248