日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[Dubbo实战]dubbo + zookeeper + spring 实战 (转)

發布時間:2025/1/21 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Dubbo实战]dubbo + zookeeper + spring 实战 (转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

????這里最熟悉的就是spring了,項目中應用很多。dubbo是一個實現分布式的框架,zookeeper是注冊中心。給我的感覺就像多對多關系的兩者表,zookeeper相當于第三張表維護關系。下面通過一個小程序加深認識。

一、安裝zookeeper

?????去官網下載zookeeper, 然后解壓到目錄中,我解壓到了E:\zookeeper-3.3.6,在啟動zookeeper之前,首先找到conf文件夾下的 zoo_sample.cfg,重新命名為zoo.cfg,網上說zookeeper啟動的時候這個文件會是默認的配置文件。接下來到bin目錄下,雙擊 啟動zkServer.cmd,啟動成功了如下:

?

??建的項目是maven項目,所以jar包的依賴都通過maven引用的,項目通過spring容器管理。

二、Server

??項目結構圖:

?

1.接口

[java] view plaincopy print?
  • package?com.mor.server.dubbo.service;??
  • ??
  • /**?
  • ?*?服務端接口?
  • ?*?@author?zx?
  • ?*?@date?2015年8月17日?下午3:19:12?
  • ?*/??
  • public?interface?DemoServer?{??
  • ??
  • ????String?sayHello(String?str);??
  • ??
  • }??

  • 2.實現

    [java] view plaincopy print?
  • package?com.mor.server.dubbo.service;??
  • ??
  • import?java.util.Date;??
  • ??
  • /**?
  • ?*?服務端接口實現類?
  • ?*?@author?zx?
  • ?*?@date?2015年8月17日?下午3:18:52?
  • ?*/??
  • public?class?DemoServerImpl?implements?DemoServer?{??
  • ??
  • ????public?String?sayHello(String?str)?{??
  • ????????str?=?"Hello?"?+?str?+?"??2:"?+?new?Date();??
  • ????????System.err.println("server:"?+?str);??
  • ????????return?str;??
  • ????}??
  • }??

  • 3.pom文件

    [html] view plaincopy print?
  • <project?xmlns="http://maven.apache.org/POM/4.0.0"?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??
  • ??xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?http://maven.apache.org/xsd/maven-4.0.0.xsd">??
  • ??<modelVersion>4.0.0</modelVersion>??
  • ??
  • ??<groupId>com.mor.maven</groupId>??
  • ??<artifactId>dubboserver</artifactId>??
  • ??<version>0.0.1</version>??
  • ??<packaging>jar</packaging>??
  • ??
  • ??<name>dubboserver</name>??
  • ??<url>http://maven.apache.org</url>??
  • ??
  • ??<properties>??
  • ????<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>??
  • ????<spring.version>3.1.4.RELEASE</spring.version>??
  • ????<slf4j.version>1.6.6</slf4j.version>??
  • ??</properties>??
  • ??
  • ??<dependencies>??
  • ????<dependency>??
  • ??????<groupId>junit</groupId>??
  • ??????<artifactId>junit</artifactId>??
  • ??????<version>3.8.1</version>??
  • ??????<scope>test</scope>??
  • ????</dependency>??
  • ????<!--?Spring?-->??
  • ????<dependency>??
  • ????????<groupId>org.springframework</groupId>??
  • ????????<artifactId>spring-aop</artifactId>??
  • ????????<version>${spring.version}</version>??
  • ????</dependency>??
  • ????<dependency>??
  • ????????<groupId>org.springframework</groupId>??
  • ????????<artifactId>spring-asm</artifactId>??
  • ????????<version>${spring.version}</version>??
  • ????</dependency>??
  • ????<dependency>??
  • ????????<groupId>org.springframework</groupId>??
  • ????????<artifactId>spring-core</artifactId>??
  • ????????<version>${spring.version}</version>??
  • ????</dependency>??
  • ????<dependency>??
  • ????????<groupId>org.springframework</groupId>??
  • ????????<artifactId>spring-beans</artifactId>??
  • ????????<version>${spring.version}</version>??
  • ????</dependency>??
  • ????<dependency>??
  • ????????<groupId>org.springframework</groupId>??
  • ????????<artifactId>spring-context</artifactId>??
  • ????????<version>${spring.version}</version>??
  • ????</dependency>??
  • ????<dependency>??
  • ????????<groupId>org.springframework</groupId>??
  • ????????<artifactId>spring-expression</artifactId>??
  • ????????<version>${spring.version}</version>??
  • ????</dependency>??
  • ????<!--?spring?end?-->??
  • ????<!--?log?-->??
  • ????????<dependency>??
  • ????????????<groupId>log4j</groupId>??
  • ????????????<artifactId>log4j</artifactId>??
  • ????????????<version>1.2.16</version>??
  • ????????</dependency>??
  • ????????<dependency>??
  • ????????????<groupId>org.slf4j</groupId>??
  • ????????????<artifactId>slf4j-api</artifactId>??
  • ????????????<version>${slf4j.version}</version>??
  • ????????</dependency>??
  • ????????<dependency>??
  • ????????????<groupId>org.slf4j</groupId>??
  • ????????????<artifactId>slf4j-log4j12</artifactId>??
  • ????????????<version>${slf4j.version}</version>??
  • ????????</dependency>??
  • ????<!--?dubbo?-->??
  • ????<dependency>??
  • ??????<groupId>com.alibaba</groupId>??
  • ??????<artifactId>dubbo</artifactId>??
  • ??????<version>2.5.3</version>??
  • ????</dependency>??
  • ????<!--?zkclient??-->??
  • ????<dependency>??
  • ??????<groupId>com.github.sgroschupf</groupId>??
  • ??????<artifactId>zkclient</artifactId>??
  • ??????<version>0.1</version>??
  • ????</dependency>??
  • ????<!--??zookeeper?-->??
  • ????<dependency>??
  • ??????<groupId>org.apache.zookeeper</groupId>??
  • ??????<artifactId>zookeeper</artifactId>??
  • ??????<version>3.3.6</version>??
  • ????</dependency>??
  • ??</dependencies>??
  • ???
  • ???<build>????
  • ????????<finalName>dubbo-demo</finalName>??
  • ????????<plugins>????
  • ????????????<!--?非多個資源配置?start-->??
  • ????????????<plugin>????
  • ????????????????<groupId>org.apache.maven.plugins</groupId>????
  • ????????????????<artifactId>maven-compiler-plugin</artifactId>????
  • ????????????????<version>2.1</version>????
  • ????????????????<configuration>????
  • ????????????????????<source>1.5</source>????
  • ????????????????????<target>1.5</target>????
  • ????????????????????<encoding>UTF-8</encoding>????
  • ????????????????????<failOnError>false</failOnError>????
  • ????????????????</configuration>????
  • ????????????</plugin>??
  • ????????????<!--?非多個資源配置?end-->??
  • ????????</plugins>????
  • ????</build>??
  • </project>??
  • ??通過maven引用需要的jar包
    4.spring配置文件

    ??? 先引入dubbo的標簽

    [html] view plaincopy print?
  • <?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??
  • ????????">???????
  • ????<dubbo:application?name="hello-world-app"?/>??
  • ????<dubbo:registry??protocol="zookeeper"??address="192.168.24.140:2181"??/>??
  • ????<dubbo:protocol?name="dubbo"?port="20880"?/>???????
  • ????<dubbo:service?interface="com.mor.server.dubbo.service.DemoServer"?ref="demoService"?/>???????<!--?和本地bean一樣實現服務?-->??
  • ????<bean?id="demoService"?class="com.mor.server.dubbo.service.DemoServerImpl"?/>??
  • </beans>??
  • 5.執行入口

    [java] view plaincopy print?
  • package?com.mor.main;??
  • import?java.io.IOException;??
  • ??
  • import?org.springframework.context.support.ClassPathXmlApplicationContext;??
  • ??
  • /**?
  • ?*?服務器的執行入口?
  • ?*?@author?zx?
  • ?*?@date?2015年8月17日?下午3:17:33?
  • ?*/??
  • public?class?Main?{??
  • ??????
  • ????public?static?void?main(String[]?args)?throws?IOException?{??
  • ????????ClassPathXmlApplicationContext?context?=?new?ClassPathXmlApplicationContext(new?String[]?{?"applicationProvider.xml"?});??
  • ????????context.start();??
  • ????????System.out.println("按任意鍵退出");??
  • ????????System.in.read();??
  • ????}??
  • ??
  • }??
  • ??

    三、Client

    ??項目結構圖:

    ?

    1.接口同服務端

    2.調用接口

    [java] view plaincopy print?
  • package?com.mor.server.dubbo.service;??
  • ??
  • import?java.util.Date;??
  • ??
  • import?org.springframework.context.support.ClassPathXmlApplicationContext;??
  • ??
  • public?class?ChatAction?{??
  • ??????
  • ????public?void?SayHello(){???
  • ????ClassPathXmlApplicationContext?context?=?new?ClassPathXmlApplicationContext(new?String[]?{?"applicationConsumer.xml"?});??
  • ????context.start();??
  • ????DemoServer?demoServer?=?(DemoServer)?context.getBean("demoService");??
  • ????System.out.println("client:"+demoServer.sayHello("zx"+"1:"+new?Date())+"3:"+new?Date());??
  • ????}??
  • }??
  • 3.pom文件引用的jar都相同,只是修改一下基本的配置就可以了。

    4.spring配置文件

    ?

    [html] view plaincopy print?
  • <?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??
  • ????????">???????
  • ????<!--?消費方應用名,用于計算依賴關系,不是匹配條件,不要與提供方一樣??192.9.145.19:2181,192.9.145.19:2182,192.9.145.19:2183-->??
  • ????<dubbo:application?name="consumer-of-helloworld-app"?/>???????<!--?使用multicast廣播注冊中心暴露發現服務地址?-->??
  • ????<dubbo:registry??protocol="zookeeper"??address="192.168.24.140:2181,,192.168.24.140:2182,192.168.24.140:2183"?/>?????????<!--?生成遠程服務代理,可以和本地bean一樣使用demoService?-->??
  • ????<dubbo:reference?id="demoService"?interface="com.mor.server.dubbo.service.DemoServer"?/>??
  • </beans>??


  • 5.執行入口

    [java] view plaincopy print?
  • package?com.mor.client.dubbo.main;??
  • import?com.mor.server.dubbo.service.ChatAction;??
  • ??
  • /**?
  • ?*?客戶端的執行入口?
  • ?*?@author?zx?
  • ?*?@date?2015年8月17日?下午3:18:00?
  • ?*/??
  • public?class?Main?{??
  • ??
  • ????public?static?void?main(String[]?args)?throws?InterruptedException?{??
  • ????????int?i=0;??
  • ????????while(i++<100){??
  • ????????????ChatAction?act?=?new?ChatAction();??
  • ????????????act.SayHello();??
  • ????????????Thread.sleep(3000);??
  • ????????}??
  • ????}??
  • ??
  • }??

  • 四、測試

    ??先啟動zookeeper,再依次啟動服務器和客戶端。

    ??服務器啟動成功如下:

    ?


    客戶端訪問成功如下:


    五、總結

    ??? 運用dubbo能實現分布式,dubbo也是面向服務的架構。zookeeper做為注冊中心,拿到服務器端暴露的接口,客戶端也向zookeepe去注冊,客戶端需要什么服務注冊中心就提供給客戶端。這樣客戶端和服務端很好的解耦了。

    轉載于:https://www.cnblogs.com/zhengah/p/5189412.html

    總結

    以上是生活随笔為你收集整理的[Dubbo实战]dubbo + zookeeper + spring 实战 (转)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。