亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Springboot 整合 Dubbo/ZooKeeper 實現 SOA 案例解析

2024-07-13 10:14:01
字體:
來源:轉載
供稿:網友

一、為啥整合 Dubbo 實現 SOA

Dubbo 不單單只是高性能的 RPC 調用框架,更是 SOA 服務治理的一種方案。

核心:

遠程通信,向本地調用一樣調用遠程方法。

集群容錯

服務自動發現和注冊,可平滑添加或者刪除服務提供者。

我們常常使用 Springboot 暴露 HTTP 服務,并走 JSON 模式。但慢慢量大了,一種 SOA 的治理方案。這樣可以暴露出 Dubbo 服務接口,提供給 Dubbo 消費者進行 RPC 調用。下面我們詳解下如何集成 Dubbo。

二、運行 springboot-dubbo-server 和 springboot-dubbo-client 工程

運行環境:JDK 7 或 8,Maven 3.0+

技術棧:SpringBoot 1.5+、Dubbo 2.5+、ZooKeeper 3.3+

1.ZooKeeper 服務注冊中心

ZooKeeper 是一個分布式的,開放源碼的分布式應用程序協調服務。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。

下載 ZooKeeper ,地址 http://www.apache.org/dyn/closer.cgi/zookeeper

解壓 ZooKeeper

tar zxvf zookeeper-3.4.8.tar.gz

在 conf 目錄新建 zoo.cfg ,照著該目錄的 zoo_sample.cfg 配置如下。

cd zookeeper-3.3.6/confvim zoo.cfg

zoo.cfg 代碼如下(自己指定 log 文件目錄):

tickTime=2000dataDir=/javaee/zookeeper/data dataLogDir=/javaee/zookeeper/logclientPort=2181

在 bin 目錄下,啟動 ZooKeeper:

cd zookeeper-3.3.6/bin./zkServer.sh start

2. git clone 下載工程 springboot-learning-example

項目地址見 GitHub - https://github.com/JeffLi1993/springboot-learning-example:

git clone git@github.com:JeffLi1993/springboot-learning-example.git

然后,Maven 編譯安裝這個工程:

cd springboot-learning-examplemvn clean install

3.運行 springboot-dubbo-server Dubbo 服務提供者工程

右鍵運行 springboot-dubbo-server 工程 ServerApplication 應用啟動類的 main 函數。Console 中出現如下表示項目啟動成功。這里表示 Dubbo 服務已經啟動成功,并注冊到 ZK (ZooKeeper)中。

4.運行 springboot-dubbo-client Dubbo 服務消費者工程

右鍵運行 springboot-dubbo-client 工程 ClientApplication 應用啟動類的 main 函數。Console 中出現如下:

...2017-03-01 16:31:38.473 INFO 9896 --- [      main] o.s.j.e.a.AnnotationMBeanExporter    : Registering beans for JMX exposure on startup2017-03-01 16:31:38.538 INFO 9896 --- [      main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8081 (http)2017-03-01 16:31:38.547 INFO 9896 --- [      main] org.spring.springboot.ClientApplication : Started ClientApplication in 6.055 seconds (JVM running for 7.026)City{id=1, provinceId=2, cityName='溫嶺', description='是我的故鄉'}

最后打印的城市信息,就是通過 Dubbo 服務接口調用獲取的。順利運行成功,下面詳解下各個代碼及配置。

三、springboot-dubbo-server 和 springboot-dubbo-client 工程配置詳解

代碼都在 GitHub 上, https://github.com/JeffLi1993/springboot-learning-example。

1.詳解 springboot-dubbo-server Dubbo 服務提供者工程

springboot-dubbo-server 工程目錄結構

├── pom.xml└── src  └── main    ├── java    │  └── org    │    └── spring    │      └── springboot    │        ├── ServerApplication.java    │        ├── domain    │        │  └── City.java    │        └── dubbo    │          ├── CityDubboService.java    │          └── impl    │            └── CityDubboServiceImpl.java    └── resources      └── application.properties

a.pom.xml 配置

pom.xml 中依賴了 spring-boot-starter-dubbo 工程,該項目地址是 https://github.com/teaey/spring-boot-starter-dubbo。

pom.xml 配置如下

4.0.0  springboot  springboot-dubbo-server  0.0.1-SNAPSHOT  springboot-dubbo 服務端:: 整合 Dubbo/ZooKeeper 詳解 SOA 案例        org.springframework.boot    spring-boot-starter-parent    1.5.1.RELEASE        1.0.0                  io.dubbo.springboot      spring-boot-starter-dubbo      ${dubbo-spring-boot}                  org.springframework.boot      spring-boot-starter-web                  org.springframework.boot      spring-boot-starter-test      test                  junit      junit      4.12

b.application.properties 配置

## Dubbo 服務提供者配置spring.dubbo.application.name=providerspring.dubbo.registry.address=zookeeper://127.0.0.1:2181spring.dubbo.protocol.name=dubbospring.dubbo.protocol.port=20880spring.dubbo.scan=org.spring.springboot.dubbo

這里 ZK 配置的地址和端口,就是上面本機搭建的 ZK 。如果有自己的 ZK 可以修改下面的配置。配置解釋如下:

spring.dubbo.application.name 應用名稱spring.dubbo.registry.address 注冊中心地址spring.dubbo.protocol.name 協議名稱spring.dubbo.protocol.port 協議端口spring.dubbo.scan dubbo 服務類包目錄c.CityDubboServiceImpl.java 城市業務 Dubbo 服務層實現層類// 注冊為 Dubbo 服務@Service(version = "1.0.0")public class CityDubboServiceImpl implements CityDubboService {  public City findCityByName(String cityName) {    return new City(1L,2L,"溫嶺","是我的故鄉");  }}@Service 注解標識為 Dubbo 服務,并通過 version 指定了版本號。

d.City.java 城市實體類

實體類通過 Dubbo 服務之間 RPC 調用,則需要實現序列化接口。最好指定下 serialVersionUID 值。

2.詳解 springboot-dubbo-client Dubbo 服務消費者工程

springboot-dubbo-client 工程目錄結構├── pom.xml└── src  └── main    ├── java    │  └── org    │    └── spring    │      └── springboot    │        ├── ClientApplication.java    │        ├── domain    │        │  └── City.java    │        └── dubbo    │          ├── CityDubboConsumerService.java    │          └── CityDubboService.java    └── resources      └── application.properties

pom.xml 、 CityDubboService.java、City.java 沒有改動。Dubbo 消費者通過引入接口實現 Dubbo 接口的調用。

a.application.properties 配置

## 避免和 server 工程端口沖突server.port=8081## Dubbo 服務消費者配置spring.dubbo.application.name=consumerspring.dubbo.registry.address=zookeeper://127.0.0.1:2181spring.dubbo.scan=org.spring.springboot.dubbo

因為 springboot-dubbo-server 工程啟動占用了 8080 端口,所以這邊設置端口為 8081。

b.CityDubboConsumerService.java 城市 Dubbo 服務消費者

@Componentpublic class CityDubboConsumerService {  @Reference(version = "1.0.0")  CityDubboService cityDubboService;  public void printCity() {    String cityName="溫嶺";    City city = cityDubboService.findCityByName(cityName);    System.out.println(city.toString());  }}

@Reference(version = “1.0.0”) 通過該注解,訂閱該接口版本為 1.0.0 的 Dubbo 服務。

這里將 CityDubboConsumerService 注入 Spring 容器,是為了更方便的獲取該 Bean,然后驗證這個 Dubbo 調用是否成功。

c.ClientApplication.java 客戶端啟動類

@SpringBootApplicationpublic class ClientApplication {  public static void main(String[] args) {    // 程序啟動入口    // 啟動嵌入式的 Tomcat 并初始化 Spring 環境及其各 Spring 組件    ConfigurableApplicationContext run = SpringApplication.run(ClientApplication.class, args);    CityDubboConsumerService cityService = run.getBean(CityDubboConsumerService.class);    cityService.printCity();  }}

解釋下這段邏輯,就是啟動后從 Bean 容器中獲取城市 Dubbo 服務消費者 Bean。然后調用該 Bean 方法去驗證 Dubbo 調用是否成功。

四、小結

還有涉及到服務的監控,治理。這本質上和 SpringBoot 無關,這邊不做一一介紹。

總結

以上所述是小編給大家介紹的Springboot 整合 Dubbo/ZooKeeper 實現 SOA 案例解析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品性视频| 色www亚洲国产张柏芝| 伊人久久久久久久久久| 国产精品一区二区三区久久久| 日韩一级裸体免费视频| 国产一区二区三区视频在线观看| 亚洲高清一区二| 日韩在线视频二区| 久久91亚洲精品中文字幕| 懂色av中文一区二区三区天美| 91精品国产综合久久香蕉的用户体验| 国产成人91久久精品| www.99久久热国产日韩欧美.com| 亚洲电影免费观看高清完整版在线观看| 亚洲第一区在线观看| 色诱女教师一区二区三区| 欧美精品在线免费| 92看片淫黄大片欧美看国产片| 97免费在线视频| 欧美午夜宅男影院在线观看| 97在线看免费观看视频在线观看| 午夜伦理精品一区| 欧美激情在线观看| 久久久久久久久久久久久久久久久久av| 黄色成人在线播放| 亚洲国产成人精品久久久国产成人一区| 88xx成人精品| 久青草国产97香蕉在线视频| 欧美一级片免费在线| 国产精品自产拍高潮在线观看| 国产精品444| 91av在线网站| 亚洲国产精品福利| 成人欧美在线视频| 欧美日韩午夜激情| 日本不卡免费高清视频| 亚洲黄色av网站| 亚洲视频精品在线| 欧美性xxxxx极品娇小| 国产精品91久久久久久| 欧洲中文字幕国产精品| 亚洲最新在线视频| 日韩在线视频导航| 亚洲天堂网在线观看| 国产日韩欧美自拍| 亚洲欧美日韩高清| 中文字幕久久精品| 亚洲大胆美女视频| 国产一区二区成人| 欧美高清视频在线播放| 欧美特级www| 日韩高清电影免费观看完整版| 日韩av手机在线看| 91亚洲精品久久久久久久久久久久| 久久99青青精品免费观看| 亚洲性无码av在线| 国内精品400部情侣激情| 国产成人在线一区| 日韩免费视频在线观看| 成人国产精品一区| 欧洲日本亚洲国产区| 国产91露脸中文字幕在线| 欧美高清视频在线播放| 国产精品久久久久aaaa九色| 欧美午夜激情视频| 亚洲a∨日韩av高清在线观看| 成人av资源在线播放| 成人免费网站在线看| 国产三级精品网站| 亚洲天堂开心观看| 精品人伦一区二区三区蜜桃网站| 国产精品igao视频| 国产精品久久久久av免费| 91探花福利精品国产自产在线| www国产91| 精品久久久av| 97视频在线观看网址| 国产成人精品日本亚洲| 欧美成人网在线| 亚洲日本中文字幕| 国产视频久久久久| 91高潮在线观看| 精品成人av一区| 亚洲日本成人网| 国产精品黄色av| 欧美国产一区二区三区| 亚洲人成在线一二| 色噜噜亚洲精品中文字幕| 国产精品老女人视频| 欧美电影免费观看电视剧大全| 高清欧美性猛交xxxx| 少妇久久久久久| 日本一区二三区好的精华液| 久久99视频免费| 欧美成人国产va精品日本一级| 精品亚洲一区二区| 福利视频第一区| 欧美成人免费在线观看| 欧美综合一区第一页| 成人精品一区二区三区电影黑人| 成人久久久久爱| 亚洲人成网站777色婷婷| 在线播放精品一区二区三区| 久久久久国色av免费观看性色| 97在线精品国自产拍中文| 亚洲精品久久久久久久久| 亚洲九九九在线观看| 夜夜嗨av一区二区三区四区| 色琪琪综合男人的天堂aⅴ视频| 91中文精品字幕在线视频| 91九色国产视频| 欧美激情一级欧美精品| 中文字幕亚洲一区| 欧美自拍视频在线| 日韩av在线最新| 欧美裸体男粗大视频在线观看| 中文字幕亚洲欧美日韩在线不卡| 国产日韩专区在线| 日韩中文字幕视频在线| 在线日韩中文字幕| 久久久久久久久久久成人| 亚洲国产婷婷香蕉久久久久久| 一区二区欧美激情| 国产精品福利无圣光在线一区| 蜜臀久久99精品久久久久久宅男| www.亚洲天堂| 久久99久久99精品免观看粉嫩| 亚洲自拍av在线| 国产在线视频2019最新视频| 欧美成人剧情片在线观看| 成人免费直播live| 69av视频在线播放| 欧美俄罗斯性视频| 亚洲欧美制服另类日韩| 日韩成人免费视频| www.日韩免费| 精品亚洲精品福利线在观看| 亚洲欧美激情精品一区二区| 欧美成人三级视频网站| 最近2019中文字幕第三页视频| 中文字幕欧美精品日韩中文字幕| 日韩电影在线观看中文字幕| 欧美精品久久一区二区| 成人黄色免费网站在线观看| 日韩亚洲综合在线| 色综合久久88| 色播久久人人爽人人爽人人片视av| 欧美激情区在线播放| 91视频国产精品| 欧美激情一区二区久久久| 在线观看久久av| 亚洲另类欧美自拍| 一区二区三区视频在线| 日本高清视频精品| 亚洲精品乱码久久久久久按摩观| 在线播放国产一区二区三区| 国产日韩精品一区二区| 中文字幕日韩在线观看| 亚洲国产精品悠悠久久琪琪| 在线播放日韩精品| 成人黄色av免费在线观看| 亚洲成人精品久久久| 欧美日韩一区二区免费在线观看| 国产精品久久久久久久app|