【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- packagecom.unj.dubbotest.provider;
- importjava.util.List;
- publicinterfaceDemoService{
- StringsayHello(Stringname);
- publicListgetUsers();
- }
在服務提供方實現介面:(對服務消費方隱藏實現)
[java]view plaincopy print?- packagecom.unj.dubbotest.provider.impl;
- importjava.util.ArrayList;
- importjava.util.List;
- importcom.unj.dubbotest.provider.DemoService;
- publicclassDemoServiceImplimplementsDemoService{
- publicStringsayHello(Stringname){
- return"Hello"+name;
- }
- publicListgetUsers(){
- Listlist=newArrayList();
- Useru1=newUser();
- u1.setName("hejingyuan");
- u1.setAge(20);
- u1.setSex("f");
- Useru2=newUser();
- u2.setName("xvshu");
- u2.setAge(21);
- u2.setSex("m");
- list.add(u1);
- list.add(u2);
- returnlist;
- }
- }
用Spring配置宣告暴露服務:
[html]view plaincopy print?- <?xmlversion="1.0"encoding="UTF-8"?>
- <beansxmlns="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-->
- <beanid="demoService"class="com.unj.dubbotest.provider.impl.DemoServiceImpl"/>
- <!--提供方應用資訊,用於計算依賴關係-->
- <dubbo:applicationname="xs_provider"/>
- <!--使用multicast廣播註冊中心暴露服務地址-->
- <!--<dubbo:registryaddress="multicast://224.5.6.7:1234"/>-->
- <!--使用zookeeper註冊中心暴露服務地址--即zookeeper的所在伺服器ip地址和埠號-->
- <dubbo:registryaddress="zookeeper://192.168.24.213:2181"/>
- <!--用dubbo協議在20880埠暴露服務-->
- <dubbo:protocolname="dubbo"port="20880"/>
- <!--宣告需要暴露的服務介面-->
- <dubbo:serviceinterface="com.unj.dubbotest.provider.DemoService"
- ref="demoService"/>
- </beans>
載入Spring配置,啟動服務(或者將專案建為web專案,然後在web.xml中配置好spring的啟動,然後扔到tomcat中即可提供服務):
[java]view plaincopy print?- packagecom.unj.dubbotest.provider.impl;
- importorg.springframework.context.support.ClassPathXmlApplicationContext;
- publicclassProvider{
- publicstaticvoidmain(String[]args)throwsException{
- ClassPathXmlApplicationContextcontext=newClassPathXmlApplicationContext(
- newString[]{"applicationContext.xml"});
- context.start();
- System.in.read();//為保證服務一直開著,利用輸入流的阻塞來模擬
- }
- }
三:服務消費者
通過Spring配置引用遠端服務:
[html]view plaincopy print?- <?xmlversion="1.0"encoding="UTF-8"?>
- <beansxmlns="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
- ">
- <!--消費方應用名,用於計算依賴關係,不是匹配條件,不要與提供方一樣-->
- <dubbo:applicationname="hjy_consumer"/>
- <!--使用zookeeper註冊中心暴露服務地址-->
- <!--<dubbo:registryaddress="multicast://224.5.6.7:1234"/>-->
- <dubbo:registryaddress="zookeeper://192.168.24.213:2181"/>
- <!--生成遠端服務代理,可以像使用本地bean一樣使用demoService-->
- <dubbo:referenceid="demoService"
- interface="com.unj.dubbotest.provider.DemoService"/>
- </beans>
呼叫服務測試:
[java]view plaincopy print?- packagecom.alibaba.dubbo.demo.pp;
- importjava.util.List;
- importorg.springframework.context.support.ClassPathXmlApplicationContext;
- importcom.unj.dubbotest.provider.DemoService;
- publicclassConsumer{
- publicstaticvoidmain(String[]args)throwsException{
- ClassPathXmlApplicationContextcontext=newClassPathXmlApplicationContext(
- newString[]{"applicationContext.xml"});
- context.start();
- DemoServicedemoService=(DemoService)context.getBean("demoService");
- Stringhello=demoService.sayHello("hejingyuan");
- System.out.println(hello);
- Listlist=demoService.getUsers();
- if(list!=null&&list.size()>0){
- for(inti=0;i<list.size();i++){
- System.out.println(list.get(i));
- }
- }
- System.in.read();
- }
-
相關推薦
【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層的方法,再詳細說說怎麼隨心所欲的使用物件。 先看一下程式碼: