前言

    在电子商务行业发展到今天,各种应用支持高并发的开源框架进行无数的实践以及验证。其中首推淘宝的dubbo,虽说这套系统淘宝不再跟进升级,但是其他从dubbo衍生出来的分支,dubbox等很多继续在使用中。。

    像京东,当当网都是在使用的dubbo框架。

    好了,话入正题

     ;)淘宝dubbo,只支持spring2.x ,下载地址 https://github.com/alibaba/dubbo

    :)当当网的分支dubbox 已经可以支持spring3.x 下载地址 https://github.com/dangdangdotcom/dubbox

     

    root> git clone https://github.com/dangdangdotcom/dubbox dubbo

    root> cd dubbo

    root> mvn clean install -Dmaven.test.skip=true 

    在这里不跳过测试,会出现 N多问题,曾经在此花了N多时间来解决或看源码,最后放弃。。先直接跑起来才是王道。所以加上 -Dmaven.test.skip=true

    生成的 com.allibaba.dubbo.jar 在 dubbo/target/目录下。

    为了后续应用的使用,把此jar包上传至maven 私有库nexus中。

    上传私有库

     

    至此,dubbox 编译完成。

    二,布署 zookeeper注册中心  原址:http://blog.csdn.net/huwei2003/article/details/49101269

    官网文档地址大全:

    OverView(概述)
    http://zookeeper.apache.org/doc/r3.4.6/zookeeperOver.html

    Getting Started(开始入门)
    http://zookeeper.apache.org/doc/r3.4.6/zookeeperStarted.html

    Tutorial(教程)
    http://zookeeper.apache.org/doc/r3.4.6/zookeeperTutorial.html

    Java Example(Java示例)
    http://zookeeper.apache.org/doc/r3.4.6/javaExample.html

    Programmer's Guide(开发人员指南)
    http://zookeeper.apache.org/doc/r3.4.6/zookeeperProgrammers.html

    Recipes and Solutions(技巧及解决方案)
    http://zookeeper.apache.org/doc/r3.4.6/recipes.html

    3.4.6 API online(在线API速查)

    http://zookeeper.apache.org/doc/r3.4.6/api/index.html

    另外推荐园友sunddenly的zookeeper系列
    http://www.cnblogs.com/sunddenly/category/620563.html

     

    文在一台机器上模拟3个 zk server的集群安装

    1.1 下载解压

    解压到3个目录(模拟3台zk server):

    /home/hadoop/zookeeper-1
    /home/hadoop/zookeeper-2
    /home/hadoop/zookeeper-3
    1.2 创建每个目录下conf/zoo.cfg配置文件

    /home/hadoop/zookeeper-1/conf/zoo.cfg 内容如下:

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/home/hadoop/tmp/zk1/data
    dataLogDir=/home/hadoop/tmp/zk1/log
    clientPort=2181
    server.1=localhost:2287:3387
    server.2=localhost:2288:3388
    server.3=localhost:2289:3389

    /home/hadoop/zookeeper-2/conf/zoo.cfg 内容如下:

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/home/hadoop/tmp/zk2/data
    dataLogDir=/home/hadoop/tmp/zk2/log
    clientPort=2182
    server.1=localhost:2287:3387
    server.2=localhost:2288:3388
    server.3=localhost:2289:3389

    /home/hadoop/zookeeper-3/conf/zoo.cfg 内容如下:

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/home/hadoop/tmp/zk3/data
    dataLogDir=/home/hadoop/tmp/zk3/log
    clientPort=2183
    server.1=localhost:2287:3387
    server.2=localhost:2288:3388
    server.3=localhost:2289:3389

    注:因为是在一台机器上模拟集群,所以端口不能重复,这里用2181~2183,2287~2289,以及3387~3389相互错开。另外每个zk的instance,都需要设置独立的数据存储目录、日志存储目录,所以dataDir、dataLogDir这二个节点对应的目录,需要手动先创建好。

    另外还有一个灰常关键的设置,在每个zk server配置文件的dataDir所对应的目录下,必须创建一个名为myid的文件,其中的内容必须与zoo.cfg中server.x 中的x相同,即:

    /home/hadoop/tmp/zk1/data/myid 中的内容为1,对应server.1中的1
    /home/hadoop/tmp/zk2/data/myid 中的内容为2,对应server.2中的2
    /home/hadoop/tmp/zk3/data/myid 中的内容为3,对应server.3中的3

    生产环境中,分布式集群部署的步骤与上面基本相同,只不过因为各zk server分布在不同的机器,上述配置文件中的localhost换成各服务器的真实Ip即可。分布在不同的机器后,不存在端口冲突问题,可以让每个服务器的zk均采用相同的端口,这样管理起来比较方便。

    1.3 启动验证

    /home/hadoop/zookeeper-1/bin/zkServer.sh start

    /home/hadoop/zookeeper-2/bin/zkServer.sh start

    /home/hadoop/zookeeper-3/bin/zkServer.sh start
    启用成功后,输入 jps 看下进程

    20351 ZooKeeperMain
    20791 QuorumPeerMain
    20822 QuorumPeerMain
    20865 QuorumPeerMain

    应该至少能看到以上几个进程。

    可以启动客户端测试下:

    bin/zkCli.sh -server localhost:2181
    (注:如果是远程连接,把localhost换成指定的IP即可)

    成功后,应该会进到提示符下,类似下面这样:

    [zk: localhost:2181(CONNECTED) 0]

     

    二,布署dubbo-admin-2.8.4.war包,

    进入dubbo目录

    root> cd dubbo-admin

    root> mvn clean package -Dmaven.test.skip=true

    打包以后,复制 dubbo-admin.2.8.4.war包复制到 tomcat webapps/root中。

    注意:

    如果启动提示找不到 /META-INF/spring/dubbo-admin.xml

    可以在 源码文件中找到或者修改 /WEB-INF/webx.xml 

    <!-- 应用资源 -->
    <beans:import resource="common/dubbo-admin.xml" />
    <!-- <beans:import resource="classpath:/META-INF/spring/dubbo-admin.xml" /> -->

    我把dubbo-admin.xml 复制到了 /WEB-INF/common/目录下。

    同时修改tomcat中server.xml中 port=8090

    访问 http://localhost:8090/dubbo-admin.2.8.4/ 根据个人情况,我是直接使用源码编译至 root目录下,所以访问路径有些变化,http://localhost:8090/

    如下图dubbo后台

     

     

     

     

    三,监控dubbo-monitor布署

    下载

    root> git clone https://github.com/handuyishe/dubbo-monitor dubbo-monitor

    root> cd dubbo-monitor

    root>mvn clean package -Dmaven.test.skip=true

    进入 target 目录找到 dubbo-monitor.2.8.4.war 

    布署到tomcat webapps/root/目录中。。我是解压后再扔进去,没有dubbo-monitor.2.8.4 这层目录,所以访问直接使用http://localhost:8091/即可;

    修改service.xml 。因为已经存在一个host,需要同时复制一个host,同时修改port=8091

    重启tomcat。

    访问http://localhost:8091/

    结果如下 dubbo-monitory

     

     

    联系QQ:343886028 --加QQ群 145315854