初識Dubbo+Zookeeprt搭建SOA項目


由於工作中天天和Dubbo打交道,天天寫對外服務,所以有必要自己動手搭建一個Dubbo+zookeeper項目來更更深層次的認識Dubbo

首先了解一下SOA:

英文名稱(Service Oriented Ambiguity)中文的意思是面向服務的架構。好處是可以實現代碼的復用,以及對數據訪問的控制。實現SOA架構時,常用的有Dubbo,WebService,Dubbox,還有就是HttpClient.

1.Dubbo和Zookeeper的基本概念

Dubbo: 一個分布式、高性能、透明化的RPC服務框架,可以提供服務自動注冊、自動發現等高效服務治理方案.下面是它的架構圖:


 

 


 

1 Provider :提供者,服務發布方.

2 Consumer:消費者, 調用服務方

3 Container:Dubbo容器.依賴於Spring容器.

4 Registry: 注冊中心.Container啟動時把所有可以提供的服務列表上Registry中進行注冊. 告訴Consumer提供了什么服務和服務方在哪里.

5 Monitor:監聽器

6 虛線都是異步訪問,實線都是同步訪問

7 藍色虛線:在啟動時完成的功能

8 紅色虛線(實線)都是程序運行過程中執行的功能

9 所有的角色都是可以在單獨的服務器上.所以必須遵守特定的協議.

1. 運行原理:

0 啟動容器,相當於在啟動DubboProvider

1 啟動后會去注冊中心進行注冊.注冊所有可以提供的服務列表

()2 Consumer啟動后會去Registry中獲取服務列表和Provider的地址.進行訂閱.

3 Provider有修改后,注冊中心會把消息推送給Consummer

4.Consumer方使用了代理設計模式.創建一個Provider方類的一個代理對象.通過代理對象獲取Provider中真實功能,起到保護Provider真實功能的作用

5.ConsumerProvider每隔1分鍾向Monitor發送統計信息,統計信息包含,訪問次數,頻率等.

 

Dubbo的注冊中心

 

1. Zookeeper(Zookeeper是一個高性能,開源的分布式協調服務的應用,它提供了許多功能,使分布式應用可以基於它實現更高級的服務。它的出現可以使我們更好的治理分布式服務。下載地址http://zookeeper.apache.org/)

 

1.1 優點:支持網絡集群

 

1.2 缺點:穩定性受限於Zookeeper

 

2. Redis(Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日志型、Key-Value數據庫,並提供多種語言的API。)

2.1 優點:性能高.

 

2.2 缺點:對服務器環境要求較高

這里使用zookeeper作為注冊中心。

好了,有了基本了解之后開始搭建項目!

首先創建一個maven項目,這個項目只提供接口


 

DubboService提供兩個方法

pom文件為:

接下來實現接口,我們在創建一個項目,這個項目就是服務的提供者:

pom文件為:

 

 

 

 

 

Srping-context的配置文件為:

服務的具體實現為:

最后我們創建服務的消費者

 

 消費者的spring配置文件相當簡單

<dubbo:annotation package="com.yzy.consumer"/>是用來配置dubbo注解的掃描路徑

Consumer的實現

注意:這里的@reference是Dubbo的注解,因為我們配置Dubbo的掃描路徑所以可以使用這個注解自動裝配。

這樣。簡單的項目構架就搭建起來了,趕緊測試一下吧,老鐵!

首先啟動zookeeper 客戶端

運行zkServer.cmd

 

 然后我們運行 服務的提供者Provider

 

 

 

 可以看到已經向注冊中心中注冊可服務!

接下來運行消費端:

 

成功調用到接口並返回了數據!(數據庫的信息我就不粘了!)

結束!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM