Diamond -- 分布式配置中心简介

费观
• 阅读 11621

一、简介

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

  • 具有简单、可靠、易用等特点

二、使用方法

服务端搭建

1 准备工作

  • 安装jdk

  • 安装maven

  • 安装tomcat

  • 安装mysql

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

-- 创建Diamond数据库
CREATE DATABASE IF NOT EXISTS `diamond` /*!40100 DEFAULT CHARACTER SET utf8 */;
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 打包

  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仓库

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 在配置中心界面添加一个配置

  1. 登陆配置中心(本机是127.0.0.1:8080),用户名abc,密码123

  2. 点击左侧“配置信息管理”

  3. 点击添加配置信息

  4. 输入data_id(就是配置的id,3中的${your_config_data_id})和配置内容

  5. 点击“提交”

  6. 在更新配置时,客户端会调用ManagerListener的回调函数receiveConfigInfo,参数就是最新的配置内容

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Spring Cloud套件
SpringCloud提供的服务  配置管理服务注册服务发现断路器负载均衡智能路由服务间调用一次性令牌微代理思维导图模板全局锁控制总线分布式式会话集群状态领导选举分布式消息  子项目功能说明SpringCloudConfig配置中心,利用git来集
Stella981 Stella981
3年前
Spring Cloud Alibaba系列(二)nacos作为服务配置中心
SpringCloudAlibaba系列(二)nacos作为服务配置中心Nacos提供用于存储配置和其他元数据的key/value存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用SpringCloudAlibabaNacosConfig,您可以在NacosServer集中管理你SpringCloud应用的外部
Stella981 Stella981
3年前
SOFAStack 活动回顾整理集合(含视频回顾)
SOFAStack是蚂蚁金服完全自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,如微服务研发框架、RPC框架、服务注册中心、分布式定时任务、限流/熔断框架、动态配置推送、分布式链路追踪、Metrics监控度量、分布式高可用消息队列、分布式事务框架和分布式数据库代理层等。SOFAStack:https://gitee.com/
Easter79 Easter79
3年前
SpringCloud微服务(06):Config组件,实现配置统一管理
一、Config简介在微服务系统中,服务较多,相同的配置:如数据库信息、缓存、参数等,会出现在不同的服务上,如果一个配置发生变化,需要修改很多的服务配置。springcloud提供配置中心,来解决这个场景问题。系统中的通用配置存储在相同的地址:GitHub,Gitee,本地配置服务等,然后配置中心读取配置以restful发布
Stella981 Stella981
3年前
Hadoop 2.6.0 HA高可用集群配置详解(二)
Zookeeper集群安装Zookeeper是一个开源分布式协调服务,其独特的LeaderFollower集群结构,很好的解决了分布式单点问题。目前主要用于诸如:统一命名服务、配置管理、锁服务、集群管理等场景。大数据应用中主要使用Zookeeper的集群管理功能。本集群使用zookeeper3.4.5cdh5.7.1版本。首先在Hado
Stella981 Stella981
3年前
Spring Cloud(二) Consul 服务治理实现
SpringCloudConsul项目是针对Consul的服务治理实现。Consul是一个分布式高可用的系统,具有分布式、高可用、高扩展性。Consul简介Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul的方案更“一站式”,内
Stella981 Stella981
3年前
Spring Cloud Alibaba系列之快速开始搭建Nacos环境
1、前言介绍前言:本实验介绍如何搭建SpringCloudAlibabaNacos的服务端,nacosserver是一个服务注册中心也是一个分布式配置中心2、实验环境准备实验环境准备64bitGitServer64bitJDK1.8Ma
Stella981 Stella981
3年前
Spring Cloud构建微服务架构服务注册与发现
SpringCloud简介SpringCloud是一个基于SpringBoot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。SpringCloud包含了多个子项目(针对分布式
Easter79 Easter79
3年前
SpringCloud 进阶之分布式配置中心(SpringCloud Config)
1\.SpringCloudConfigSpringCLoudConfig为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置;SpringCloudConfig分为服务端和客户端:服务端也称为分布式配置中心,它是一个独立的微服务应用,
Stella981 Stella981
3年前
Disconf部署安装
DistributedConfigurationManagementPlatform(分布式配置管理平台)专注于各种 分布式系统配置管理 的通用组件/通用平台,提供统一的配置管理服务。主要目标:部署极其简单:同一个上线包,无须改动配置,即可在多个环境中(RD/QA/PRODUCTION)上线
Stella981 Stella981
3年前
Linux系统:Centos7下搭建ZooKeeper3.4中间件,常用命令总结
一、下载解压1、Zookeeper简介Zookeeper作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是Zookeeper并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状