1. 程式人生 > >【JEECG Dubbo專題】Dubbo+Zookeeper+Spring整合應用篇-Dubbo基於Zookeeper實現分散式服務(二)...

【JEECG Dubbo專題】Dubbo+Zookeeper+Spring整合應用篇-Dubbo基於Zookeeper實現分散式服務(二)...

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. packagecom.unj.dubbotest.provider;
  2. importjava.util.List;
  3. publicinterfaceDemoService{
  4. StringsayHello(Stringname);
  5. publicListgetUsers();
  6. }

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

[java]view plaincopy print?
  1. packagecom.unj.dubbotest.provider.impl;
  2. importjava.util.ArrayList;
  3. importjava.util.List;
  4. importcom.unj.dubbotest.provider.DemoService;
  5. publicclassDemoServiceImplimplementsDemoService{
  6. publicStringsayHello(Stringname){
  7. return"Hello"+name;
  8. }
  9. publicListgetUsers(){
  10. Listlist=newArrayList();
  11. Useru1=newUser();
  12. u1.setName("hejingyuan");
  13. u1.setAge(20);
  14. u1.setSex("f");
  15. Useru2=newUser();
  16. u2.setName("xvshu");
  17. u2.setAge(21);
  18. u2.setSex("m");
  19. list.add(u1);
  20. list.add(u2);
  21. returnlist;
  22. }
  23. }

用Spring配置宣告暴露服務:

[html]view plaincopy 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:registryaddress="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 plaincopy print?
  1. packagecom.unj.dubbotest.provider.impl;
  2. importorg.springframework.context.support.ClassPathXmlApplicationContext;
  3. publicclassProvider{
  4. publicstaticvoidmain(String[]args)throwsException{
  5. ClassPathXmlApplicationContextcontext=newClassPathXmlApplicationContext(
  6. newString[]{"applicationContext.xml"});
  7. context.start();
  8. System.in.read();//為保證服務一直開著,利用輸入流的阻塞來模擬
  9. }
  10. }

三:服務消費者

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

[html]view plaincopy 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:registryaddress="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 plaincopy print?
  1. packagecom.alibaba.dubbo.demo.pp;
  2. importjava.util.List;
  3. importorg.springframework.context.support.ClassPathXmlApplicationContext;
  4. importcom.unj.dubbotest.provider.DemoService;
  5. publicclassConsumer{
  6. publicstaticvoidmain(String[]args)throwsException{
  7. ClassPathXmlApplicationContextcontext=newClassPathXmlApplicationContext(
  8. newString[]{"applicationContext.xml"});
  9. context.start();
  10. DemoServicedemoService=(DemoService)context.getBean("demoService");
  11. Stringhello=demoService.sayHello("hejingyuan");
  12. System.out.println(hello);
  13. Listlist=demoService.getUsers();
  14. if(list!=null&&list.size()>0){
  15. for(inti=0;i<list.size();i++){
  16. System.out.println(list.get(i));
  17. }
  18. }
  19. System.in.read();
  20. }
  21. 相關推薦

    JEECG Dubbo專題Dubbo+Zookeeper+Spring整合應用-Dubbo基於Zookeeper實現分散式服務...

    Dubbo與Zookeeper、Spring整合使用 Dubbo採用全Spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring載入Dubbo的配置即可,Dubbo基於Spring的Schema擴充套件進行載入。 一:單機模式安裝zookeepe

    dubbo例項 Dubbo+Zookeeper+Spring整合應用-Dubbo基於Zookeeper實現分散式服務

    Dubbo與Zookeeper、Spring整合使用 Dubbo採用全spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring載入Dubbo的配置即可,Dubbo基於Spring的Schema擴充套件進行載入。 一:單機模式安裝zook

    Spring Data Redis入門示例:基於Jedis及底層API

    client classpath mode beans -name maven依賴 eas edi log 使用底層API:RedisConnectionFactory和RedisConnection可以直接操作Redis,下面是一個簡單的例子: ### Maven依賴 &

    手寫系列透徹理解Spring事務設計思想之手寫實現

    事務,是描述一組操作的抽象,比如對資料庫的一組操作,要麼全部成功,要麼全部失敗。事務具有4個特性:Atomicity(原子性),Consistency(一致性),Isolation(隔離性),Durability(永續性)。在實際開發中,我們對事務應用最多就是在資料庫操作這

    Android Socket專題: TCP通訊伺服器端app的demo的實現

    ----這篇實現以下TCP 伺服器,另外由於實在不是想在重複工作了,所以關於tcp多連線伺服器程式碼直接提供思路放在這邊了,單一使用請自行刪除和移位相關程式碼即可,原理是一樣的,實現方法也有很多種,個人這裡只實現其中一種。 首先規劃一下頁面: 附上

    Android Socket專題: TCP通訊客戶端app的demo的實現

    ------- Android TCP 客戶端實現,規劃介面如下: 對應XML程式碼如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" a

    Android Socket專題:UDP通訊客戶端app的demo的實現

    Android Socket 專題: 關於UDP通訊其實可以不用多做累述,多數像我一樣的朋友在此基礎上也只是為了應用,需要了解下該瞭解的就可以了,具體的想要對這個協議研究深入的,可以自己努力!我這兒只做Android客戶端的應用實現,注意是客戶端,不是伺服器,

    Android從無到有:手把手一步步教你使用最簡單的Fragment

    轉載請註明出處,原文連結:https://blog.csdn.net/u013642500/article/details/80579389 【本文適用讀者】         targetSdkVersion 版本大於等於 21,即 app 即將有可能

    Java原始碼基於陣列實現的ArrayList

        眾所周知,Java中ArrayList是基於陣列實現的     咱們先看其基本屬性: private static final int DEFAULT_CAPACITY = 10; private static final Object[

    第四章NB-IoT模組BC95 利用串列埠除錯助手接入華為電信平臺

    BC95的Coap測試需要雲平臺配合,當前的支援Coap協議的平臺有華為OceanConnect平臺、電信天翼雲(除了logo其他和華為的一樣)、移動OneNet。此教程以華為的OceanConnect平臺為例進行測試。下面我將就平臺申請、平臺測開發、EVB_M1與平

    java專案實戰一步步教你使用MyEclipse搭建java Web專案開發環境

           首先,在開始搭建MyEclipse的開發環境之前,還有三步工具的安裝需要完成,只要在安裝配置成功之後才可以進入下面的java Web專案開發環境的搭建。 1、安裝工具 第一步,下載並

    圖文詳解scrapy爬蟲與動態頁面——爬取拉勾網職位資訊1

    5-14更新 注意:目前拉勾網換了json結構,之前是content - result 現在改成了content- positionResult - result,所以大家寫程式碼的時候要特別注意加上

    圖文詳解scrapy爬蟲與動態頁面——爬取拉勾網職位資訊2

    上次挖了一個坑,今天終於填上了,還記得之前我們做的拉勾爬蟲嗎?那時我們實現了一頁的爬取,今天讓我們再接再厲,實現多頁爬取,順便實現職位和公司的關鍵詞搜尋功能。 之前的內容就不再介紹了,不熟悉的請一定要去看之前的文章,程式碼是在之前的基礎上修改的

    SSH進階之路Struts基本原理 + 實現簡單登入

          上面博文,主要簡單的介紹了一下SSH的基本概念,比較巨集觀,作為初學者能夠有一個整體上的認識,個人認為對學習有很好的輔助功能,它不僅僅是一個“瞭望塔”,更是檢驗是否真正掌握所有內容的一個前

    Tensorflow怎樣為你的網路預加工和打包訓練資料?:小資料集的處理方案

    實驗環境:python2.7 第二篇我們來講一講小資料集的處理方法,小資料集一般多以文字儲存為主,csv是一種流行的資料格式,另外也有txt等。當然也會有.mat或者.npy這種經過處理的格式。 一.處理csv格式資料集 實驗資料集是鳶尾花卉資料集iris,格式是.csv

    MySQL基於MySQL的SQL優化——對count、max的優化

    max(): 通過一條含有max()的語句來了解一下通過索引來優化帶有max()方法的SQL語句。 SELECT MAX(payment_date) FROM payment;

    Python利用Django搭建REST風格API後臺服務關於JWT認證

    原文地址 簡介 上一篇我們介紹瞭如何搭建一個後臺,並且提供API服務。 顯然那太簡單了,功能上是遠遠達不到使用的級別的。一套完整的API還需要擴充套件非常多的東西才能達到要求。 上個實驗只是搭建一個最簡單的後臺服務。細心的朋友可能會問了,一個api怎麼可以被隨意的

    利用Spring Cloud實現服務- 熔斷機制

    1. 熔斷機制介紹 在介紹熔斷機制之前,我們需要了解微服務的雪崩效應。在微服務架構中,微服務是完成一個單一的業務功能,這樣做的好處是可以做到解耦,每個微服務可以獨立演進。但是,一個應用可能會有多個微服務組成,微服務之間的資料互動通過遠端過程呼叫完成。這就帶來一個問題,假設微服務A呼叫微服務

    Spring AOP實現原理筆記 -- 原始碼分析

    1、註冊AnnotationAwareAspectJAutoProxyCreator 首先要了解Spring解析XML配置檔案時,遇到自定義節點是如何解析的。可以參考Spring自定義XML標籤解析及其原理分析 當Spring遇到這個標籤的時候,它會

    淺談Spring框架,自動注入物件IoC/DI的過程

    在上一篇部落格中,我已經寫到怎麼用自動注入的物件了。可能我說的不是太清楚,有些朋友還不是很明白,那麼這次我們結合service層呼叫DAO層的方法,再詳細說說怎麼隨心所欲的使用物件。 先看一下程式碼: