zoukankan      html  css  js  c++  java
  • 多种配置的分布式配置中心

    淘宝的 diamond

    参考文档

    Diamond – 分布式配置中心简介

    服务端搭建

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

    启动mysql并创建数据库和表

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    -- 创建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;

    下载源码

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

    打包

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

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

    客户端使用

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

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

    在工程中引入jar包

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

    使用例子

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DiamondManager manager = n 大专栏  多种配置的分布式配置中心ew DefaultDiamondManager("${your_config_data_id}", new ManagerListener() {

    public Executor getExecutor() {
    return null;
    }


    public void receiveConfigInfo(String configInfo) {
    System.out.println("receive config: " + configInfo);
    }
    });

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

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

    百度的 disconf (配置麻烦)

    基于mysql

    快速文档https://disconf.readthedocs.io/zh_CN/latest/install/src/01.html

    liunx下disconf环境搭建吐血总结

    1. 环境配置
      disconf运行需要如下软件:mysql、nginx、tomcat、zookeeper、redis,这个网上可以找到很多种安装配置的方法
    2. clone disconf
      disconf的代码在github上开源了,是一个很好的分布式配置管理平台,github上很多人fork了
      下载至本地
      cd work/github
      git clone https://github.com/knightliao/disconf.git
    3. 修改环境变量
      sudo vi /etc/profile,在文件的末尾加上
      ONLINE_CONFIG_PATH=/usr/local/xxx/disconf/source
      WAR_ROOT_PATH=/usr/local/xxx/disconf/war
      export ONLINE_CONFIG_PATH
      export WAR_ROOT_PATH
      注意:disconf这个文件夹必须有写的权限
    4. 修改配置
      cp work/github/disconf/disconf-web/profile/rd/application-demo.properties jdbc-mysql.properties redis-config.properties zoo.properties log4j.properties logback.xml rabbit.properties /usr/local/xxx/disconf/source
      将application-demo.properties修改成application.properties(mv或者cp命令都可以)
      然后将/usr/local/xxx/disconf/source下的这4个配置文件修改成自己环境相关的配置
      application.properties
      该文件中主要是配置了监控邮件发送和接受的服务器和邮箱地址
      zoo.properties
      主要修改里面的hosts,指定zookeeper集群的host的端口
      jdbc-mysql.properties
      主要修改数据库的host和mysql的用户名和密码
      redis-config.properties
      主要修改2个实例的host和端口
      rabbit.properties
      修改用户名和密码以及端口(自己安装的默认端口是5672)
      log4j.properties
      主要修改日志存放的路径
      log4j.appender.dailyRolling.File=/home/xxx/xxx/tomcat/log/disconf-log4j.log
      logback.xml
      主要修改web和监控的log存放位置
    5. 生成war包
      cd disconf/disconf-web
      sh deploy/deploy.sh
      然后会发现war的内容会生成在/usr/local/xxx/disconf/war这个文件夹下
    6. 初始化数据库
      如何初始化根据disconf-web下的sql文件夹下的README.md来初始化
    7. tomcat配置
      在tomcat的server.xml中加入
    8. nginx配置
      在http这个标记对里面加上如下配置(/etc/nginx/nginx.conf):
      upstream disconf {
      ​ server 127.0.0.1:8080;
      }

    server {
    ​ listen 8991;
    ​ server_name localhost;
    ​ access_log /home/xxx/nginx/log/disconf/access.log;
    ​ error_log /home/xxx//nginx/log/disconf/error.log;

    location / {
        root /usr/local/xxx/disconf/war/html;
        if ($query_string) {
            expires max;
        }
    }
    
    
    location ~ ^/(api|export) {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_pass http://disconf;
    }
    

    }
    upstream disconf 配置中的端口必须与tomcat启动的端口一致
    server中listen是启动该disconf前端的端口
    里面需要修改access_log和error_log指定log的位置
    disconf使用前后端分离的部署方式,前端配置在nginx是那个,后端api部署在tomcat中

    启动
    分别启动tomcat和nginx,打开浏览器:http://localhost:8991/
    使用用户名admin和密码admin进入系统
    至此disconf的web操作服务搭建完成

    携程的 apollo (开箱即用,推荐)

    Apollo分布式配置中心部署以及使用

    github地址

    官方介绍

    服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。

    Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。

    • 目前唯一的外部依赖是MySQL,所以部署非常简单,只要安装好Java和MySQL就可以让Apollo跑起来

    开源配置中心Apollo的设计与实现.pnf

    Quick Start for java

    Java客户端使用指南

    Apollo分布式配置中心部署以及使用

    Spring的 Cloud Config

    基于svn -git 文件系统

    无可视化界面 前面几种都有可视化页面

    对比

    对比

    对比

    总结

    config1

    config2

  • 相关阅读:
    数组初始化问题calloc和memset+malloc
    C++四种类型转换
    判断回文
    Linux运维三:系统目录结构
    Linux运维二:CentOS6.6系统安装后的基本配置与优化
    Linux运维一:生产环境CentOS6.6系统的安装
    Linux /etc/issue 和 /etc/issue.net的作用和区别
    linux内核参数注释与优化
    Linux中的文件描述符与打开文件之间的关系
    Linux Wget 命令实例讲解
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12258981.html
Copyright © 2011-2022 走看看