dubbo+zookeeper簡單環境搭建


dubbo+zoopeeper例子

標簽(空格分隔): 分布式


dubbo

dubbo相關

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

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

新建三個maven項目,其中接口/服務者為普通java項目,以后打成jar包,采用java -jar命令運行。

  • 接口的很簡單就一個接口文件:
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信息等。

<?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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM