回归后的第一篇献给 Disconf
2017-04-06 12:04
344 查看
写在前面:
博客好久没更新的借口很多,但是让我回归的理由很简单,身边的人都太优秀我不能停止前进的步伐!
正文:
今天要总结的的是分布式文件管理-disconf(百度开源),至于为什么要选择这个我只能不负责任的说全靠口碑,至于阿里或者360的我本身并没有用过,所以不敢下什么结论,在使用disconf的时候还是遇到一些问题的。
对于disconf的简介 http://www.tuicool.com/articles/QniqQn7 这里也描述的算是比较清楚的,官方文档很详细: http://disconf.readthedocs.io/zh_CN/latest/install/src/02.html
一、安装
于我个人而言在安装过程中遇到一些问题,所以整理了一份小白安装文档1、安装依赖软件
安装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)
2、下载disconf
创建文件夹:/usr/local/work/disconf
根文件夹下创建源码文件夹:src
创建资源文件文件夹:resource
创建war文件夹:war
下载disconf到src下执行命令:
git clone https://github.com/knightliao/disconf.git 3、初始化数据库参考 sql/readme.md 来进行数据库的初始化。注意顺序执行
0-init_table.sql
1-init_data.sql
201512/20151225.sql
20160701/20160701.sql
4、构建
4.1拷贝/disconf-web/profile/rd/目录下配置文件到刚创建的资源文件文件夹下
在usr/local/work/disconf/src/discof/disconf-web/profile/rd/目录下执行执行如下命令:cp application-demo.properties /usr/local/work/disconf/resource/application.properties
如图:
4.2修改配置文件:
redis:jdbc:
zoo:
4.3构建
disconf-web下执行命令:
mvn clean install -Dmaven.test.skip=true
若没有mvn命令则安装依次执行如下命令:
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo
-O /etc/yum.repos.d/epel-apache-maven.repo
yum -y install apache-maven
注:如果服务jdk版本为1.8 需要修改web项目的pom文件,在pom文件添加:
<profiles> <profile> <id>doclint-java8-disable</id> <activation> <jdk>[1.8,)</jdk> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <configuration> <additionalparam>-Xdoclint:none</additionalparam> </configuration> </plugin> </plugins> </build> </profile> </profiles>
如图所示:
war包:
执行如下命令:ONLINE_CONFIG_PATH=/usr/local/work/disconf/resource
WAR_ROOT_PATH=/usr/local/work/disconf/war
export ONLINE_CONFIG_PATH
export WAR_ROOT_PATH
disconf-web下执行如下命令:
sh deploy/deploy.sh
部署完成会在target下生成war包
tomcat部署
安装tomcat;修改tomcat的server.xml配置文件在Host节点下添加:
<Context path="" docBase="/usr/local/work/disconf/war"></Context>
启动tomcat即可
Nginx部署:
Nginx的安装请参考nginx安装文档
在nginx.conf(如果默认安装,则nginx.conf文件路径为 /etc/nginx/)添加如下:
http节点下添加:
upstream disconf {
server 127.0.0.1:9090;
}
在server节点下添加:
location / {
root /usr/local/work/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;
}
server_name 添加值 disconf.com
如图:
至此启动nginx 完成部署;访问192.168.22.208:8080 访问
默认用户名密码为admin admin
效果如图所示:
二、使用
1、 在我现在的项目中,大概有七八个模块是部署在同一台服务器上的,在配置文件disconf.properties中的disconf.user_define_download_dir=./config值如果所有的项目都配置成相同的则所有的配置文件都会下载到该目录下,并且由于所有模块的的配置文件名称相同则会被覆盖,造成配置文件的乱读现象。
2、目前的disconf如果不自己开发,是不支持公共变量的配置的(即不可以读取多个app),所以所有模块的相同的配置文件如何处理呢?我们项目采用的是使用nfs的方式共享公共配置文件,当然如果有好其他好的方式欢迎推荐哟!
3、其实就目前我们项目中的使用还有很多问题,
①:如果一个工厂类加载的配置文件,在reload的时候会出现加载不了的情况,应该跟反射有关,现在没有解决方案
②:检测到disconf的类占用服务器的内存等性能有些多不知道其他用户有没有这种感受?!
③:zookeeper的监听日志是如何控制在web端的打印,目前我们的解决方案是控制本地日志的打印级别,但是这个方案影响我们系统日志的打印,欢迎提出更优的解决方案!
相关文章推荐
- 第一篇博客献给开源社区
- 第一篇博客-献给自己的成长之路
- OK6410开发板资源介绍---嵌入式回归第一篇
- 第一篇:致青春:别了11年,回归起点,从心开始
- 我的第一篇博客,献给黑马啦。(知识点:构造体,内部类访问权限)
- 本板块的第一篇文章,献给改变世界的前辈
- 献给自己的第一篇......
- [置顶] 第一篇博客献给留言板
- 第一篇博客献给git
- 第一篇:献给Intel IDF2010
- [第一篇_献给AIX][关于库加载以及符号文件的问题]
- 第一篇献给小驰驰
- 第一篇文章献给艰难的Ubuntu16.04安装caffe之旅 cuda tensorflow Theano
- 献给自己的第一篇博文
- 第一篇就献给自己学习javascript的一份笔记吧
- 第一篇献给比特币
- 项目探索之旅(第一篇)那时年少懵懂,走过的路,踩过的坑,献给刚刚步入社会的你
- 第一篇献给church(丘奇)
- 第一篇献给scribe fire 的测试
- 第一篇博文,献给自己