Disconf介绍,源码下载,环境准备,安装,disconf-web使用和配置介绍,项目中进行配置,项目案例运行
1、disconf介紹
Distributed Configuration Management Platform(分布式配置管理平臺)專注于各種 分布式系統配置管理 的通用組件 / 通用平臺,提供統一的配置管理服務。
主要目標:
部署極其簡單:同一個上線包,無須改動配置,即可在 多個環境中(RD/QA/PRODUCTION) 上線。
部署動態化:更改配置,無需重新打包或重啟,即可 實時生效。
統一管理:提供web平臺,統一管理 多個環境(RD/QA/PRODUCTION)、多個產品 的所有配置。
核心目標:一個jar包,到處運行。
項目信息
CLIENT端:
Java:目前唯一支持語言
開放API,讓開發者有自定義開發客戶端的能力:
WEB管理端
Java SpringMvc實現,前后端分離 實現方式(基于Spring 4.17.RELEASE)
開放API,讓開發者具有自定義定制web控制臺界面的能力。
功能特點
支持配置(配置項 + 配置文件)的分布式管理。
配置發布統一化
配置發布、更新統一化:
同一個上線包 無須改動配置 即可在多個環境(RD/QA/PRODUCTION)上線
配置存儲在云端系統,用戶統一管理 多個環境(RD/QA/PRODUCTION)、多個平臺的所有配置
配置更新自動化:用戶在平臺更新配置,使用該配置的系統會自動發現該情況,并應用新配置。特殊地,如果用戶為此配置定義了回調函數類,則此函數類會被自動調用。
極簡的使用方式(注解式編程 或 XML無代碼侵入模式):我們追求的是極簡的、用戶編程體驗良好的編程方式。目前支持兩種開發模式:基于XML配置或者基于注解,即可完成復雜的配置分布式化。
注:配置項是指某個類里的某個Field字段。
Disconf的功能特點描述圖:
其它功能特點
低侵入性或無侵入性、強兼容性:
低侵入性:通過極少的注解式代碼撰寫,即可實現分布式配置。
無侵入性:通過XML簡單配置,即可實現分布式配置。
強兼容性:為程序添加了分布式配置注解后,開啟Disconf則使用分布式配置;關閉Disconf則使用本地配置;若開啟Disconf后disconf-web不能正常Work,則Disconf使用本地配置。
支持配置項多個項目共享,支持批量處理項目配置。
配置監控:平臺提供自校驗功能(進一步提高穩定性),可以定時校驗應用系統的配置是否正確。
模塊架構圖:
模塊信息
CLIENT: client目標是支持多語言。目前只提供了java語言客戶端。
JAVA
disconf-core:分布式配置基礎包模塊
disconf-client:分布式配置客戶端模塊, 依賴disconf-core包。 用戶程序使用它作為Jar包進行分布式配置編程。
disconf-tool:分布式配置工具包,依賴disconf-core包。 Disconf-tool是disconf的輔助工具類, 目前使用不多,建議不使用。
管理端:管理端:disconf-web是統一的分布式配置管理平臺。disconf-web: 分布式配置平臺服務模塊, 依賴disconf-core包。采用SpringMvc+純HTML方式(前后端分離架構)實現。用戶使用它來進行日常的分布式配置管理。
2、若想學習Disconf,首先找到Disconf的官方地址,官網地址為:
http://disconf.readthedocs.io/zh_CN/latest/index.html
找到學習用的參考案例
https://github.com/knightliao/disconf-demos-java
下載后可以看到這個學習資料中有:
3、源碼下載
找到disconf的源碼的下載地址,通過源碼安裝:
https://github.com/knightliao/disconf
代碼下載下來之后,解壓后的內容如下:
注意:
1、當下載下來之后,不要立即看到有pom.xml就使用maven進行編譯(這是java同學常見的習慣噢)。
2、經過測試,該源碼在JDK6.x + maven2環境下可以編譯通過,高版本的編譯不通過。
3、如果我們想查看文檔,可以打開源碼中的README.md文件,里面有各種網址。
比如:
4、**disconf-master\README.md中列出了可供參考的 **demos && 文檔 && 協作連接:
5、環境準備
安裝依賴軟件:
安裝Mysql(Ver 14.12 Distrib 5.0.45, for unknown-linux-gnu (x86_64) using EditLine wrapper,或更高版本也可以) 安裝Tomcat(apache-tomcat-7.0.50,其它或更高版本也可以) 安裝Nginx(nginx/1.5.3,其它版本也可以) 安裝 zookeeeper (zookeeper-3.3.0,或更高版本) 安裝 Redis (2.4.5,或更高版本) 配置Maven環境(這個在官方文檔沒有提及,但是特別要注意,這個地方是需要的)關于上面這些軟件的安裝在此不做詳細介紹。以下只做軟件安裝位置介紹:
關于MySQL:
關于Tomcat:
機器:ip:192.168.106.105 位置:/home/tuzq/software/apache-tomcat-8.5.12 (注意在使用的時候發現tomcat的catalina.sh中的JAVA_OPTS的參數值在設置在:JAVA_OPTS='-Xms64m -Xmx128m'時仍然能夠跑起來disconf-web應用)關于Nginx
ip:192.168.106.102 nginx位置:/usr/local/nginx關于zookeeeper
ip:192.168.106.101 + 192.168.106.102 + 192.168.106.103 部署位置:/home/tuzq/software/zookeeper 端口都是:2181關于Redis
ip:192.168.106.101 port:6379關于maven:
ip:192.168.106.105 位置:/home/tuzq/software/apache-maven-3.3.9注意配置環境變量
6、安裝Disconf
6.1.創建文件夾
進入機器:192.168.106.105
執行以下命令:
6.2 拷貝配置文件
將下載下來的disconf-master\disconf-web\profile\rd目錄下的文件,拷貝到/home/work/dsp/disconf-rd/online-resources目錄下
配置文件包括:
注意:記得執行以下命令,將application-demo.properties復制一份,名稱為application.properties
[root@hadoop15 online-resources]# pwd /home/work/dsp/disconf-rd/online-resources [root@hadoop15 online-resources]# ls application-demo.properties jdbc-mysql.properties redis-config.properties zoo.properties [root@hadoop15 online-resources]# cp application-demo.properties application.properties [root@hadoop15 online-resources]# ls application-demo.properties application.properties jdbc-mysql.properties redis-config.properties zoo.properties [root@hadoop15 online-resources]#6.3 修改參數配置
1、修改application.properties
[root@hadoop15 online-resources]# vim application.properties2、修改jdbc-mysql.properties
[root@hadoop15 online-resources]# vim jdbc-mysql.properties原配置:
新配置:
3、修改redis-config.properties
原配置:
新配置:
注意:
即使只有一個redis,也應該配置兩個redis client,否則將造成內部錯誤。
6.4 配置zoo.properties的信息
原配置:
新配置:
7 部署disconf-web
7.1 配置環境變量
#set disconf environment export ONLINE_CONFIG_PATH=/home/work/dsp/disconf-rd/online-resources export WAR_ROOT_PATH=/home/work/dsp/disconf-rd/war然后執行:
[root@hadoop15 online-resources]# source /etc/profile7.2 部署disconf-web
創建文件夾:
mkdir -p /home/work/dsp/disconf-rd/war將disconf-master\disconf-web中的內容放到/home/work/dsp/disconf-rd下,然后執行以下命令:
[root@hadoop15 war]# pwd /home/work/dsp/disconf-rd [root@hadoop15 disconf-rd]# ls disconf-web online-resources war [root@hadoop15 war]# cd disconf-web/ [root@hadoop15 disconf-web]# ls bin deploy html pom.xml profile README.md sql src [root@hadoop15 disconf-web]# sh deploy/deploy.sh ********************************************** copy online config /home/work/dsp/disconf-rd/online-resources ********************************************** Removing src/main/online-resources/* ********************************************** It's going to Generate the output for war ********************************************** ********************************************** It's going to got war package ********************************************** ********************************************** use online profile ********************************************** [INFO] Scanning for projects...注意:上面的過程比較慢,請耐心等待。
如果執行上面的過程中出現了以下錯誤:
按照提示信息,修改/home/work/dsp/disconf-rd/war/disconf-web/pom.xml中相應的jar的版本,若發現下載很慢,請直接在CSDN的資源處下載相應的jar包。
這樣會在/home/work/dsp/disconf-rd/war生成以下結果:
-disconf-web.war -html -META-INF -WEB-INF效果圖如下:
7.3 初始化數據庫
可以參考disconf-web\sql\readme.md來進行數據庫的初始化。注意順序執行:
0-init_table.sql 1-init_data.sql 201512/20151225.sql 20160701/20160701.sql注意:
里面默認有6個用戶(請注意線上環境刪除這些用戶以避免潛在的安全問題)
| admin | admin |
| testUser1 | MhxzKhl9209 |
| testUser2 | MhxzKhl167 |
| testUser3 | MhxzKhl783 |
| testUser4 | MhxzKhl8758 |
| testUser5 | testUser5 |
如果想自己設置初始化的用戶名信息,可以參考代碼來自己生成用戶:
src/main/java/com/baidu/disconf/web/tools/UserCreateTools.java7.4部署war
修改server.xml文件,在Host節點下設定Context:
<Context path="" docBase="/home/work/dsp/disconf-rd/war"></Context>即在/home/tuzq/software/apache-tomcat-8.5.12/conf/server.xml添加如下內容:
啟動tomcat即可
部署 前端:
將disconf-web里面的disconf-master\disconf-web\html文件都放到nginx所在的/home/work/dsp/disconf-rd/war下面
修改nginx.conf (到192.168.106.102機器上)
upstream disconf {server 192.168.106.105:8080; }server {listen 8081;server_name 192.168.106.102;#access_log /home/work/var/logs/disconf/access.log;#error_log /home/work/var/logs/disconf/error.log;location / {root /home/work/dsp/disconf-rd/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;} }關于Host
這里的server_name必須設置成和application.properties 里的domain一樣。然后瀏覽器的訪問域名也是這個。
配置好之后,只需要需在瀏覽器上訪問:http://192.168.106.102:8081即可出現以下界面:
8 disconf-web使用介紹
8.1 名詞介紹
在disconf中有如下名詞(官方文檔上介紹的讓人費解)
APP:使用哪個APP(可以理解成哪個項目),及它的ID,這個在配置disconf.properties時會被用到,建議使用英文。 KEY:配置文件或配置項(關于配置項這個名詞容易讓人費解,這里和軟件工程的獨立可運行的軟件叫配置項不是一個概念,這里的配置項是指在disconf中配置的key,value的值。而不是通過上傳項目的配置文件生成的值。若上傳了項目的配置文件,這里的key和項目的配置文件的名稱相同(注意這個版本的disconf不能上傳文件夾形式的配置文件,并且上傳配置文件的時候只能一個一個的上傳)) 配置內容:配置文件或配置項在配置中心中的值 實例列表:使用此配置文件或配置項的所有實例列表,及每個實例的配置值。如果實例的配置值與配置中心的值不一致,這里會標識出來。 修改時間:修改此配置的最后一次時間 操作:個性、刪除、下載8.2 登錄
點擊上圖中的登錄,出現以下界面:
默認的用戶名和密碼是:admin admin
8.3 主界面
關于左側的rd,qa,local,online在官方文檔中并沒有介紹如何進行修改,經過摸索,可以通過修改數據庫的方式進行修改,修改:
8.4 查看不同環境的配置文件信息
在界面的左上角可以選擇APP(界面選擇的是disconf_demo這個項目)和環境(比如rd環境或qa環境,點擊rd環境后發現已經有配置文件了),選擇之后,就會在中間出現上傳的配置文件的列表。
選擇版本后,就會顯示 APP、環境、版本 三個條件下的配置列表:
8.5 新建APP(即項目屬性),配置項(簡單理解成k/v值),新建配置文件
新建APP
新建配置項
進入主界面進行查看
新建配置文件:
上傳之后,圖的顯示效果如8.4中的效果。
9.項目案例介紹
以disconf-standalone-demo為例進行介紹
9.1配置disconf-client
若項目想用disconf,需要在pom.xml中配置disconf-client,maven依賴配置如下(最新版本為2.6.36版本):
<dependency><groupId>com.baidu.disconf</groupId><artifactId>disconf-client</artifactId><version>2.6.36</version> </dependency>9.2 配置applicationContext.xml
另外要注意的是disconfMgrBean中scanPackage中的包掃描的值。
配置文件的內容:
具體的內容是:
<!-- 使用disconf必須添加以下配置 --><bean id="disconfMgrBean" class="com.baidu.disconf.client.DisconfMgrBean"destroy-method="destroy"><property name="scanPackage" value="com.example.disconf.demo"/></bean><bean id="disconfMgrBean2" class="com.baidu.disconf.client.DisconfMgrBeanSecond"init-method="init" destroy-method="destroy"></bean><!-- 使用托管方式的disconf配置(無代碼侵入, 配置更改會自動reload)--><bean id="configproperties_disconf"class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean"><property name="locations"><list><value>classpath:/autoconfig.properties</value><value>classpath:/autoconfig2.properties</value><value>classpath:/myserver_slave.properties</value><value>classpath:/testJson.json</value><value>testXml2.xml</value></list></property></bean><bean id="propertyConfigurer"class="com.baidu.disconf.client.addons.properties.ReloadingPropertyPlaceholderConfigurer"><property name="ignoreResourceNotFound" value="true"/><property name="ignoreUnresolvablePlaceholders" value="true"/><property name="propertiesArray"><list><ref bean="configproperties_disconf"/></list></property></bean><!-- 使用托管方式的disconf配置(無代碼侵入, 配置更改不會自動reload)--><bean id="configproperties_no_reloadable_disconf"class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean"><property name="locations"><list><value>myserver.properties</value></list></property></bean><bean id="propertyConfigurerForProject1"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="ignoreResourceNotFound" value="true"/><property name="ignoreUnresolvablePlaceholders" value="true"/><property name="propertiesArray"><list><ref bean="configproperties_no_reloadable_disconf"/></list></property></bean>9.3 配置disconf.properties
# 是否使用遠程配置文件,true(默認)會從遠程獲取配置, false則直接獲取本地配置 disconf.enable.remote.conf=true#配置服務器的 HOST,用逗號分隔 ,示例:127.0.0.1:8000,127.0.0.1:8000,這里的值和application.propperties中的值要保持一致 disconf.conf_server_host=192.168.106.102:8081# 版本號, 請采用 X_X_X_X 格式 默認為 DEFAULT_VERSION。優先讀取命令行參數,然后再讀取此文件的值,最后才讀取默認值。 disconf.version=1_0_0_0# APP 請采用 產品線_服務名 格式 優先讀取命令行參數,然后再讀取此文件的值 disconf.app=disconf_demo# 環境 默認為 DEFAULT_ENV。優先讀取命令行參數,然后再讀取此文件的值,最后才讀取默認值 disconf.env=rd# 忽略的分布式配置,用空格分隔 disconf.ignore=# 獲取遠程配置 重試次數,默認是3次 disconf.conf_server_url_retry_times=1 # 獲取遠程配置 重試時休眠時間,默認是5秒 disconf.conf_server_url_retry_sleep_seconds=1# 用戶定義的下載文件夾, 遠程文件下載后會放在這里。注意,此文件夾必須有有權限,否則無法下載到這里 默認:./disconf/download disconf.user_define_download_dir=./disconf/download2# 下載的文件會被遷移到classpath根路徑下,強烈建議將此選項置為 true(默認是true) disconf.enable_local_download_dir_in_class_path=true
運行后效果:
總結
以上是生活随笔為你收集整理的Disconf介绍,源码下载,环境准备,安装,disconf-web使用和配置介绍,项目中进行配置,项目案例运行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 本田艾力绅钢圈多少钱?
- 下一篇: 如何在家中制作自然的啤酒?