Dubbo架構介紹
Dubbo經常會和SpringCloud微服務架構作比較,但實際上兩者側重的領域是有很大不同的。Dubbo側重於服務治理即服務的註冊更新、管理服務的生命週期、定製服務的遵從規則,確保服務一致性、服務監控等、服務的呼叫等。而SpringCloud則側重於整個微服務生態,除了服務治理以外對服務閘道器、分散式配置、服務跟蹤、訊息匯流排、資料流、批次任務等都有很好的技術規範實現。可以看出來Dubbo可以作為SpringCloud生態的一部分和SpringCloud整合在一起提供服務治理方面的支援。雖然功能沒有SpringCloud整個生態完善,但是就服務治理來講,Dubbo有著諸多優勢:
1.支援更多協議,如:rmi、hessian、http、webservice等。
2.效率更高,因為訪問方式的不同Dubbo能有更好的表現。
3.服務治理提供粒度更小的管理。
Dubbo核心功能:
1.遠端通訊,提供對多種基於長連線的 NIO 框架抽象封裝,包括多種執行緒模型,序列化,以及“請求-響應”模式的資訊交換方式。
2.叢集容錯,提供基於介面方法的透明遠端過程呼叫,包括多協議支援,以及軟負載均衡,失敗容錯,地址路由,動態配置等叢集支援。
3.自動發現,基於註冊中心目錄服務,使服務消費方能動態的查詢服務提供方,使地址透明,使服務提供方可以平滑增加或減少機器。
Dubbo架構如下圖所示:
由上圖可知Dubbo的服務呼叫流程如下:
1.服務提供者將自己釋出註冊到服務註冊中心暴露服務
2.服務消費者從服務註冊中心訂閱服務
3.服務消費者根據註冊中心獲取的服務進行進行遠端呼叫
Dubbo本地開發環境搭建
Duoobo服務註冊註冊中心的搭建,我們將使用Zookeeper作為實際註冊中心進行操作演練。
Dubbo專案的搭建
使用eclipse新建一個服務提供者的maven專案。這裡新建一個專案名為:dubbo-provider用來提供根據使用者名稱來返回使用者資訊的簡單例項:
1.首先將Dubbo和Zookeeper的依賴架包進行引入。
新建服務提供介面和具體實現類,在eclipse下建立名為:dubbo-provider的maven專案。
1.建立使用者資訊查詢服務介面QueryUserInfoService提供一個根據使用者名稱返回使用者資訊的介面getUserInfo(String name)。
2.建立具體的實現類QueryUserInfoServiceImpl,實現根據使用者名稱返回一個使用者資訊的字串。
3.在resources資料夾下建立applicationProvider.xml配置服務類的相關資訊,用來註冊和暴露服務。
4.建立服務註冊類:ServerMain讀取配置檔案,註冊配置檔案中的服務,配置完成後啟動該類即可完成服務的註冊。
配置監控中心。如果我們需要對自己的服務進行監控和檢視需要安裝Monitor服務。1.在Github上下載dubbo-admin專案後修改目錄下的dubbo.properties檔案:
1)配置zk地址:
dubbo.registry.address=zookeeper://127.0.0.1:2181
2)配置登入使用者root密碼:
dubbo.admin.root.password=roo
2.構建專案,在dubbo-admin目錄下
使用maven命令打包:mvn clean package
3.執行dubbo-admin專案可以用以下兩種方式:
1)mvn --projects dubbo-admin-server spring-boot:run
2)cd dubbo-admin-distribution/targe;java -jar dubbo-admin-0.1.jar
4.執行成功後即可透過預設的127.0.0.1:8080訪問監控後臺頁面
新建服務消費者專案實現對服務提供者進行服務消費,在eclipse下建立名為:dubbo-customer的maven專案。
1.引入或建立服務介面QueryUserInfoService類
2.在resources資料夾下建立applicationContext.xml配置註冊中心資訊,用來獲取服務資訊。
3.建立一個消費測試類QueryUserInfoService呼叫服務。
Dubbo架構介紹
Dubbo經常會和SpringCloud微服務架構作比較,但實際上兩者側重的領域是有很大不同的。Dubbo側重於服務治理即服務的註冊更新、管理服務的生命週期、定製服務的遵從規則,確保服務一致性、服務監控等、服務的呼叫等。而SpringCloud則側重於整個微服務生態,除了服務治理以外對服務閘道器、分散式配置、服務跟蹤、訊息匯流排、資料流、批次任務等都有很好的技術規範實現。可以看出來Dubbo可以作為SpringCloud生態的一部分和SpringCloud整合在一起提供服務治理方面的支援。雖然功能沒有SpringCloud整個生態完善,但是就服務治理來講,Dubbo有著諸多優勢:
1.支援更多協議,如:rmi、hessian、http、webservice等。
2.效率更高,因為訪問方式的不同Dubbo能有更好的表現。
3.服務治理提供粒度更小的管理。
Dubbo核心功能:
1.遠端通訊,提供對多種基於長連線的 NIO 框架抽象封裝,包括多種執行緒模型,序列化,以及“請求-響應”模式的資訊交換方式。
2.叢集容錯,提供基於介面方法的透明遠端過程呼叫,包括多協議支援,以及軟負載均衡,失敗容錯,地址路由,動態配置等叢集支援。
3.自動發現,基於註冊中心目錄服務,使服務消費方能動態的查詢服務提供方,使地址透明,使服務提供方可以平滑增加或減少機器。
Dubbo架構如下圖所示:
由上圖可知Dubbo的服務呼叫流程如下:
1.服務提供者將自己釋出註冊到服務註冊中心暴露服務
2.服務消費者從服務註冊中心訂閱服務
3.服務消費者根據註冊中心獲取的服務進行進行遠端呼叫
Dubbo本地開發環境搭建
Duoobo服務註冊註冊中心的搭建,我們將使用Zookeeper作為實際註冊中心進行操作演練。
Dubbo專案的搭建
使用eclipse新建一個服務提供者的maven專案。這裡新建一個專案名為:dubbo-provider用來提供根據使用者名稱來返回使用者資訊的簡單例項:
1.首先將Dubbo和Zookeeper的依賴架包進行引入。
新建服務提供介面和具體實現類,在eclipse下建立名為:dubbo-provider的maven專案。
1.建立使用者資訊查詢服務介面QueryUserInfoService提供一個根據使用者名稱返回使用者資訊的介面getUserInfo(String name)。
2.建立具體的實現類QueryUserInfoServiceImpl,實現根據使用者名稱返回一個使用者資訊的字串。
3.在resources資料夾下建立applicationProvider.xml配置服務類的相關資訊,用來註冊和暴露服務。
4.建立服務註冊類:ServerMain讀取配置檔案,註冊配置檔案中的服務,配置完成後啟動該類即可完成服務的註冊。
配置監控中心。如果我們需要對自己的服務進行監控和檢視需要安裝Monitor服務。1.在Github上下載dubbo-admin專案後修改目錄下的dubbo.properties檔案:
1)配置zk地址:
dubbo.registry.address=zookeeper://127.0.0.1:2181
2)配置登入使用者root密碼:
dubbo.admin.root.password=roo
2.構建專案,在dubbo-admin目錄下
使用maven命令打包:mvn clean package
3.執行dubbo-admin專案可以用以下兩種方式:
1)mvn --projects dubbo-admin-server spring-boot:run
2)cd dubbo-admin-distribution/targe;java -jar dubbo-admin-0.1.jar
4.執行成功後即可透過預設的127.0.0.1:8080訪問監控後臺頁面
新建服務消費者專案實現對服務提供者進行服務消費,在eclipse下建立名為:dubbo-customer的maven專案。
1.引入或建立服務介面QueryUserInfoService類
2.在resources資料夾下建立applicationContext.xml配置註冊中心資訊,用來獲取服務資訊。
3.建立一個消費測試類QueryUserInfoService呼叫服務。