1. 程式人生 > >Dubbo與Zookeeper、Spring整合使用

Dubbo與Zookeeper、Spring整合使用

Dubbo採用全spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring載入Dubbo的配置即可,Dubbo基於Spring的Schema擴充套件進行載入。

一:單機模式安裝zookeeper

1,下載zookeeper註冊中心,下載地址:http://www.apache.org/dyn/closer.cgi/zookeeper/ 下載後解壓即可,進入E:\zookeeper-3.3.6\zookeeper-3.3.6\bin,

雙擊zkServer.cmd啟動註冊中心服務。

zkServer.sh【Linux】或zkServer.cmd【Windows】

2,在你執行啟動指令碼之前,還有幾個基本的配置項需要配置一下,Zookeeper的配置檔案在 conf 目錄下,這個目錄下有 zoo_sample.cfg 和 log4j.properties,你需要做的就是將zoo_sample.cfg 改名為 zoo.cfg,因為 Zookeeper在啟動時會找這個檔案作為預設配置檔案。下面詳細介紹一下,這個配置檔案中各個配置項的意義。

 

   •tickTime:這個時間是作為Zookeeper 伺服器之間或客戶端與伺服器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。

   •dataDir:顧名思義就是 Zookeeper儲存資料的目錄,預設情況下,Zookeeper 將寫資料的日誌檔案也儲存在這個目錄裡。

   •dataLogDir:顧名思義就是Zookeeper 儲存日誌檔案的目錄

   •clientPort:這個埠就是客戶端連線Zookeeper 伺服器的埠,Zookeeper 會監聽這個埠,接受客戶端的訪問請求

配置好後,zookeeper會監聽本機的2181埠。

當這些配置項配置好後,你現在就可以啟動 Zookeeper 了,啟動後要檢查 Zookeeper 是否已經在服務,可以通過 netstat – ano 命令檢視是否有你配置的 clientPort 埠號在監聽服務。

二:服務提供者

定義服務介面:(該介面需單獨打包,在服務提供方和消費方共享)

[java] view plain copy  print?
  1. package com.unj.dubbotest.provider;  
  2. import java.util.List;  
  3. publicinterface DemoService {  
  4.     String sayHello(String name);  
  5.     public List getUsers();  
  6. }  

在服務提供方實現介面:(對服務消費方隱藏實現)

[java] view plain copy  print?
  1. package com.unj.dubbotest.provider.impl;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4. import com.unj.dubbotest.provider.DemoService;  
  5. publicclass DemoServiceImpl implements DemoService {  
  6.     public String sayHello(String name) {  
  7.         return"Hello " + name;  
  8.     }  
  9.     public List getUsers() {  
  10.         List list = new ArrayList();  
  11.         User u1 = new User();  
  12.         u1.setName("hejingyuan");  
  13.         u1.setAge(20);  
  14.         u1.setSex("f");  
  15.         User u2 = new User();  
  16.         u2.setName("xvshu");  
  17.         u2.setAge(21);  
  18.         u2.setSex("m");  
  19.         list.add(u1);  
  20.         list.add(u2);  
  21.         return list;  
  22.     }  
  23. }  

用Spring配置宣告暴露服務:

[html] view plain copy  print?
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="http://www.springframework.org/schema/beans"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  5.         http://www.springframework.org/schema/beans/spring-beans.xsd  
  6.         http://code.alibabatech.com/schema/dubbo  
  7.         http://code.alibabatech.com/schema/dubbo/dubbo.xsd  
  8.         ">
  9.     <!-- 具體的實現bean -->
  10.     <beanid="demoService"class="com.unj.dubbotest.provider.impl.DemoServiceImpl"/>
  11.     <!-- 提供方應用資訊,用於計算依賴關係 -->
  12.     <dubbo:applicationname="xs_provider"/>
  13.     <!-- 使用multicast廣播註冊中心暴露服務地址 -->
  14.     <!--<dubbo:registry address="multicast://224.5.6.7:1234" /> -->
  15.     <!-- 使用zookeeper註冊中心暴露服務地址 --即zookeeper的所在伺服器ip地址和埠號 -->
  16.     <dubbo:registryaddress="zookeeper://192.168.24.213:2181"/>
  17.     <!-- 用dubbo協議在20880埠暴露服務 -->
  18.     <dubbo:protocolname="dubbo"port="20880"/>
  19.     <!-- 宣告需要暴露的服務介面 -->
  20.     <dubbo:serviceinterface="com.unj.dubbotest.provider.DemoService"
  21.         ref="demoService"/>
  22. </beans>



載入Spring配置,啟動服務(或者將專案建為web專案,然後在web.xml中配置好spring的啟動,然後扔到tomcat中即可提供服務):

[java] view plain copy  print?
  1. package com.unj.dubbotest.provider.impl;  
  2. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  3. publicclass Provider {  
  4.     publicstaticvoid main(String[] args) throws Exception {  
  5.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(  
  6.                 new String[] { "applicationContext.xml" });  
  7.         context.start();  
  8.         System.in.read(); // 為保證服務一直開著,利用輸入流的阻塞來模擬
  9.     }  
  10. }  

三:服務消費者

通過Spring配置引用遠端服務:

[html] view plain copy  print?
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="http://www.springframework.org/schema/beans"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  5.         http://www.springframework.org/schema/beans/spring-beans.xsd  
  6.         http://code.alibabatech.com/schema/dubbo  
  7.         http://code.alibabatech.com/schema/dubbo/dubbo.xsd  
  8.         ">
  9.     <!-- 消費方應用名,用於計算依賴關係,不是匹配條件,不要與提供方一樣 -->
  10.     <dubbo:applicationname="hjy_consumer"/>
  11.     <!-- 使用zookeeper註冊中心暴露服務地址 -->
  12.     <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
  13.     <dubbo:registryaddress="zookeeper://192.168.24.213:2181"/>
  14.     <!-- 生成遠端服務代理,可以像使用本地bean一樣使用demoService -->
  15.     <dubbo:referenceid="demoService"
  16.         interface="com.unj.dubbotest.provider.DemoService"/>
  17. </beans>

呼叫服務測試:

[java] view plain copy  print?
  1. package com.alibaba.dubbo.demo.pp;  
  2. import java.util.List;  
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  4. import com.unj.dubbotest.provider.DemoService;  
  5. publicclass Consumer {  
  6.     publicstaticvoid main(String[] args) throws Exception {  
  7.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(  
  8.                 new String[] { "applicationContext.xml" });  
  9.         context.start();  
  10.         DemoService demoService = (DemoService) context.getBean("demoService");  
  11.         String hello = demoService.sayHello("hejingyuan");  
  12.         System.out.println(hello);  
  13. 相關推薦

    DubboZookeeperSpring整合使用

    Dubbo採用全spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring載入Dubbo的配置即可,Dubbo基於Spring的Schema擴充套件進行載入。 一:單機模式安裝zookeeper 1,下載zookeeper註冊中心,下載地

    DubboZookeeperSpringMVC整合和使用

    描述 取出 有變 monit work 需要 可用 jqgrid png 互聯網的發展,網站應用的規模不斷擴大,常規的垂直應用架構已無法應對,分布式服務架構以及流動計算架構勢在必行,Dubbo是一個分布式服務框架,在這種情況下誕生的。現在核心業務抽取出來,作為獨立的服務,使

    DubboZookeeperSpringMVC整合和使用(負載均衡容錯)

    網際網路的發展,網站應用的規模不斷擴大,常規的垂直應用架構已無法應對,分散式服務架構以及流動計算架構勢在必行,Dubbo是一個分散式服務框架,在這種情況下誕生的。現在核心業務抽取出來,作為獨立的服務,使前端應用能更快速和穩定的響應。 第一:介紹Dubbo背景

    DubboZookeeperSpringMVC整合使用(乾貨-理論放一遍。。。還未完結!)

    Dubbo跟Zookeeper的簡介分享兩個不錯的連結: 說兩句樓主自己的看法,我覺得身為一個java開發,原來自然是瞭解的好,但是我覺得先看簡介不如從程式碼入手,然後去慢慢根據Demo,再結合簡介去理解這個流行框架的作用,好的那下面我們就整點乾的,或許我的配置還不是最

    dubbozookeeperSpring整合例項

    在window中實現,記錄一下,防止備忘!簡單的配置!,只是防止自己忘記 1.到官網下載zookeeper,修改zoo_sample.cfg為zoo.cfg ,開啟增加dataDir=D:\\zookeeper-3.4.6\\datadataLogDir=D:\\zoo

    Spring Boot 整合dubbozookeeper實現不同專案之間資料通過服務的傳遞

    一、安裝zookeeper 1、下載路徑:http://mirrors.hust.edu.cn/apache/zookeeper/ 可以自己選擇版本進行下載(同時支援windows和linux) 2、目錄結構 3、修改conf下的配置檔案zoo.cfg 4、

    用springBootdubbo zookeeperredis整合做了一個彈幕網站

    系統採用eclipse 開發,jdk1.7 ,資料庫採用的是mysql 原始碼下載地址:http://java.goodym.cn/html/1506574390095.html 網站預覽地址:http://malimali.goodym.cn

    hue(5):HuezookeeperoozieHbase整合

    一、配置步驟 1.和zookeeper整合,修改hue.ini [zookeeper] [[clusters]] [[[default]]] # Zookeeper ensemble. Comma separated list of Host/

    大數據入門第二十四天——SparkStreaming(2)flumekafka整合

    RM ESS 依賴 mep sock flume-ng bject 整合 master 前一篇中數據源采用的是從一個socket中拿數據,有點屬於“旁門左道”,正經的是從kafka等消息隊列中拿數據! 主要支持的source,由官網得知如下:

    hibernate5hibernate3在spring整合時注意版本

    java.lang.ClassCastException:org.springframework.orm.hibernate5.SessionHolder cannot be cast to org.springframework.orm.hibernate3.SessionHolder

    Maven學習總結(2)-Maven的安裝配置eclipse整合Maven

    Maven的安裝與配置 一、下載 官網地址:http://maven.apache.org/download.cgi  二、安裝 將下載好的壓縮包解壓到D盤 三、配置 1.環境變數配置 (1)在“環境變數-系統變數”中新增一行:變數名為MAVEN

    高效能Java RPC框架Dubbozookeeper的使用

    一. 什麼是RPC 1. RPC 協議(Remote Procedure Call Protocol) 遠端過程呼叫協議,它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。RPC 協議假定某些傳輸協議的存在,如 TCP 或 UDP,為

    Mybatis二級快取分散式二級快取逆向工程Spring 整合 --day06

    Mybatis二級快取、分散式二級快取、逆向工程、Spring 整合 --day06 一、什麼是二級快取   上一篇介紹了一級快取,一級快取是一個sqlSession使用一個快取區域。那麼二級快取呢?   思考,多個sqlSession,但是每個sqlSession都執行 通過id查

    RabbitMQjavaSpring結合例項詳細講解

             摘要:本文介紹了rabbitMq,提供瞭如何在Ubuntu下安裝RabbitMQ 服務的方法。最好以RabbitMQ與java、Spring結合的兩個例項來演示如何使用RabbitMQ。 一、rabbitMQ簡介 1.1、rabbitMQ的優點

    一些分散式相關問題 (分散式快取分散式鎖分散式session分散式事務分散式搜尋DubboSpringCloud分散式儲存)

    一些分散式相關問題 (分散式快取、分散式鎖、分散式session、分散式事務、分散式搜尋、Dubbo與SpringCloud、分散式儲存MongoDB、高併發系統架構的組成) 分散式快取 專案中使用快取可以做到:高效能(把複雜耗時操作結果快取起來),高併發(高額的請求,在進入資料

    Apollo客戶端監聽配置變化Spring整合

    配置釋出後,就能在客戶端獲取到了,以Java為例,獲取配置的示例程式碼如下。Apollo客戶端還支援和Spring整合,更多客戶端使用說明請參見Java客戶端使用指南和.Net客戶端使用指南。 Config config = ConfigService.getAppConf

    DubboZookeeper監控中心monitor搭建

    前面一篇介紹如何搭建dubbo管理後臺,這裡介紹是dubbo的監控系統。通過它可以看到你的服務呼叫的次數,併發數,呼叫時間等等關鍵資訊。下面看看我們如何搭建。1在我們通過之前的我們環境搭建中有下載地址https://github.com/dangdangdotcom/dubb

    SSH開發環境的配置:web.xmlSpring整合hibernate和Spring整合Struts2

    一、struts + hibernate + Spring整合開發包的匯入:從myeclipse整合開發工具中匯入或者從相應網站下載然後放在工程專案WEB-INF包下的lib包內即可。 二、本文主要說明開發包匯入後對配置檔案的配置。 三、相應配置檔案的配置:web.xml、

    JAVAWEB開發之Spring詳解之——Spring的入門以及IOC容器裝配Bean(xml和註解的方式)Spring整合web開發整合Junit4測試

    public class BeanFactory{    public UserService getUserService(){         // 反射+配置檔案        return Class.forName(類名).newInStance();     } } xml、pro

    dubbozookeeper的互動-1

    dubbo-admin學習總結:dubbo能從zookeeper註冊中心獲得服務資訊,是通過registryService,並且可以通過registryService對dubbo進行操作詳解:與服務註冊