dubbo+zookeeper簡單環境搭建

dubbo+zoopeeper例子

標籤(空格分隔): 分佈式git


dubbo

dubbo相關

dubbo是目前國內比較流行的一種分佈式服務治理方案。還有一種就是esb了。通常採用的是基於Apache servicemix 和 Apache Camel和activemq這種方式。這裏先介紹一下dubbo的相關。
dubbo工程通常分爲3個module.一個服務者,一個消費者,一個接口。其中服務者和消費者都依賴於接口文件。工程圖相似以下github

+wordspace
    |-接口
    |-服務者
    |-消費者

新建三個maven項目,其中接口/服務者爲普通java項目,之後打成jar包,採用java -jar命令運行。web

  • 接口的很簡單就一個接口文件:
public interface OrderInterface {
    void add(String message);
    void add(Object o);
    void orderHasCase();
}
  • 服務者也比較簡單,就是實現了接口文件。暫時不添加數據庫方面的支持。後面會有一個示例項目來作一個比較全的示例。
public class OrderServiceImpl implements OrderInterface {
    public void add(String s) {
        System.out.println(s);
    }
    public void orderHasCase() {

    }
    public void add(Object o) {
        System.out.println("objcect:" + o);
    }
}

在服務者裏添加spring的配置文件,及ip信息等。spring

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        ">
    <!-- 具體的實現bean -->
    <bean id="orderService"
          class="com.yks.service.OrderServiceImpl"/>
    <!-- 提供方應用信息,用於計算依賴關係 -->
    <dubbo:application name="oms_provider"/>
    <!-- 使用multicast廣播註冊中心暴露服務地址
     -->
    <!--<dubbo:registry address="multicast://224.1.1.1:1234" />-->
    <!-- 使用zookeeper註冊中心暴露服務地址 -->
    <dubbo:registry address="zookeeper://192.168.3.15:2181"/>
    <!-- 用dubbo協議在20880端口暴露服務 -->
    <dubbo:protocol name="dubbo" port="20880"/>
    <!-- 聲明須要暴露的服務接口 -->
    <dubbo:service interface="com.yks.oms.OrderInterface"
                   ref="orderService"/>
</beans>
  • 消費者測試程序,消費者能夠是web也能夠是jar形式的,這裏爲了方便測試,只是用了一個main方法。
public class TestMain {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("customer.xml");
        classPathXmlApplicationContext.start();
        OrderInterface orderService = (OrderInterface) classPathXmlApplicationContext.getBean("orderService");
        String message = "test";
        orderService.add(message);
    }
}

消費者配置文數據庫

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        ">
    <!-- consumer application name -->
    <dubbo:application name="consumer-of-helloworld-app"/>
    <!-- registry address, used for consumer to discover services -->
    <!--<dubbo:registry address="multicast://224.1.1.1:1234" />-->
    <dubbo:registry address="zookeeper://192.168.3.15:2181"/>
    <dubbo:consumer timeout="5000"/>
    <!-- which service to consume? -->
    <dubbo:reference id="orderService"
                     interface="com.yks.oms.OrderInterface"/>
</beans>
  • zookeeper 我這裏採用的是使用zookeeper管理的。因此要安裝zookeepker.
    1.下載zookeeper.tar.gz解壓
    2.zk啓動時會讀取zoo.cfg配置文件,咱們複製一下zookeeper文件夾下conf/zoo_sample.cfg 更名爲zoo.cfg,zoo.cfg裏面配置文件很簡單,就是配置一些目錄時間端口等信息。
    3.啓動zk:sh bin/zkServer.sh start
啓動zk            sh bin/zkServer.sh start
查看ZK服務狀態:   sh bin/zkServer.sh status
中止ZK服務:       sh bin/zkServer.sh stop
重啓ZK服務:       sh bin/zkServer.sh restart
  • 安裝dubbo-admin
    去github上下載dubbo項目。按照dubbo文檔的提示去執行編譯dubbo-admin。會生成dubbo-admin.war
    把war解壓到tomcat ROOT目錄下。而後修改WEB-INF下dubbo.properties裏面的ip地址,還能夠修改密碼等信息
    修改完畢後啓動tomcat.而後訪問ip:8080看看有沒有界面。若是出現登陸則沒問題。若是沒反映就是jdk版本的問題。dubbo-admin通常運行1.5-1.7之間,你有可能用了jdk1.8,這裏在從新修改一下dubbo的pom而後從新打包就能夠。具體修改方法請看github-issus.若是還不能夠請下載我下面給的地址裏的war包。
  • 啓動
    啓動服務者,在dubboadmin就能夠看到相應的服務對象。至此一個簡單的dubbo就搭建起來了。
    代碼(dubbo-admin)都在github上了。
    github地址:https://github.com/wongloong/aboutDubbo.git
相關文章
相關標籤/搜索