回归后的第一篇献给 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、安装依赖软件

       安装MysqlVer 14.12 Distrib 5.0.45, for unknown-linux-gnu (x86_64) using EditLine wrapper
       安装Tomcatapache-tomcat-7.0.50
       安装Nginxnginx/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端的打印,目前我们的解决方案是控制本地日志的打印级别,但是这个方案影响我们系统日志的打印,欢迎提出更优的解决方案!



        
1 0
原创粉丝点击