回归后的第一篇献给 Disconf
来源:互联网 发布:秦夕妍幼年捏脸数据 编辑:程序博客网 时间:2024/06/05 20:18
写在前面:
博客好久没更新的借口很多,但是让我回归的理由很简单,身边的人都太优秀我不能停止前进的步伐!
正文:
今天要总结的的是分布式文件管理-disconf(百度开源),至于为什么要选择这个我只能不负责任的说全靠口碑,至于阿里或者360的我本身并没有用过,所以不敢下什么结论,在使用disconf的时候还是遇到一些问题的。
对于disconf的简介 http://www.tuicool.com/articles/QniqQn7 这里也描述的算是比较清楚的,官方文档很详细: http://disconf.readthedocs.io/zh_CN/latest/install/src/02.html
一、安装
于我个人而言在安装过程中遇到一些问题,所以整理了一份小白安装文档
1、安装依赖软件
安装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端的打印,目前我们的解决方案是控制本地日志的打印级别,但是这个方案影响我们系统日志的打印,欢迎提出更优的解决方案!
- 回归后的第一篇献给 Disconf
- 献给自己的第一篇......
- 献给自己的第一篇博文
- 第一篇:献给Intel IDF2010
- 第一篇博客献给git
- 第一篇博客献给留言板
- 在CSDN的第一篇博客,献给Python
- 献给初学者--学习ORACLE的第一篇故事
- 第一篇博客-献给自己的成长之路
- 安家后的第一篇
- 回归,写一篇前端性能优化的读后总结
- 成为Blogger后的第一篇..
- 重装系统后的第一篇Blog
- 算是开通后的第一篇
- 开通博客后的第一篇日志。
- 新纪元后的第一篇战地日记
- 毕业后的第一篇随记
- 开通后的第一篇博客
- ESB v6.5.1,SAM中无法进行接口运行检索
- Chrome 扩展工具及命令
- 在linux上使用yum安装JDK
- 引用
- Validates using resource IDs in a switch statement in Android library module
- 回归后的第一篇献给 Disconf
- leetcode解题之3. Longest Substring Without Repeating Characters Java版(最长子串长度)
- js格式化json时间
- ESB v6.5.1,SAM中设置http+json操作方法异常
- 地图基础知识初步总结
- idea+maven 手动添加oracl架包
- 激活函数的作用
- Java四类八种数据类型
- 关闭WebView时报 java.lang.IllegalArgumentException: Receiver not registered: