天天看點

dubbo 入門1 介紹2 環境準備3 架構圖4 開始搭建項目5 監控

随着網際網路的發展,網站應用的規模不斷擴大,正常的垂直應用架構已無法應對,分布式服務架構以及流動計算架構勢在必行,亟需一個治理系統確定架構有條不紊的演進。

DUBBO是一個分布式服務架構,緻力于提供高性能和透明化的RPC遠端服務調用方案,是阿裡巴巴SOA服務化治理方案的核心架構。

啟動時檢查、叢集容錯、負載均衡、線程模型、直連提供者、隻訂閱、隻注冊、靜态服務、多協定、多注冊中心、服務分組、多版本、分組聚合、參數驗證、結果緩存、泛化引用、泛化實作、回聲測試、上下文資訊、隐式傳參、異步調用、本地調用、參數回調、事件通知、本地存根、本地僞裝、延遲暴露、并發控制、連接配接控制、延遲連接配接、粘滞連接配接、令牌驗證、路由規則、配置規則、服務降級、優雅停機、主機綁定、日志适配、通路日志、服務容器、Reference Config緩存、分布式事務

dubbo

rmi

http

webservice

thrift

memcached

redis

Java7、Java8

ZooKeeper

Maven

Tomcat7

Eclipse

dubbo 入門1 介紹2 環境準備3 架構圖4 開始搭建項目5 監控

節點角色說明及對應demo子產品:

Provider: 暴露服務的服務提供方。對應dubbo-demo-provider。

Consumer: 調用遠端服務的服務消費方。對應dubbo-demo-consumer

Registry: 服務注冊與發現的注冊中心。這個demo使用ZooKeeper,關于ZooKeeper的搭建可參考這篇文章。

Monitor: 統計服務的調用次調和調用時間的監控中心。需要搭建dubbo-admin,對應的war包可從這裡下載下傳,也可自行編譯運作。

Container: 服務運作容器。使用Tomcat跟Jetty。

我的demo代碼:https://github.com/JasperZXY/dubbo-demo

下面的代碼是在Java8下運作通過的。

名稱為dubbo-demo,加入需要的jar,這裡把各個項目需要的jar包都放入了父pom中,實際項目最好做好分類,如下

這個子產品用于定義接口以及互動的實體對象,建立一個User跟UserService

這個子產品用于提供服務,是使用main方法直接運作的。

1、需要添加dubbo-demo-api這個依賴,pom.xml如下

2、UserService的實作

3、Spring配置

注:如果<dubbo:标簽有報錯的,可下載下傳一個dubbo.xsd檔案(可從我的git上找到),在Eclipse上windows->preferrence->XML->XML Catalog->add->catalog entry->file system,選擇剛剛下載下傳的檔案路徑,修改key值(dubbo.xsd),儲存。在xml檔案右鍵validate即可解決。

4、編寫啟動方法

這個子產品用于調用dubbo-demo-provider提供的服務,使用SpringMVC進行運作。

2、Spring的配置

appContext.xml,主配置檔案

springmvc-servlet.xml

dubbo-consumer.xml

3、web.xml

4、controller

調用遠端服務并傳回前端資料。

先啟動ZooKeeper

啟動dubbo-demo-provider

啟動dubbo-demo-consumer,mvn jetty:run -Djetty.port=8083

通路http://127.0.0.1:8083/user/list擷取資料

自行編譯運作dubbo-admin或從我的git上下載下傳dubbo-admin-2.5.3.war,放入tomcat中運作。預設用的注冊中心是zookeeper://127.0.0.1:2181,可修改,在WEB-INF/dubbo.properties中進行修改。

啟動後通路http://127.0.0.1:8080/dubbo-admin-2.5.3,如果war包是改名為ROOT.war後運作的,則通路http://127.0.0.1:8080/,輸入賬号密碼(root/root)。

注意,由于現在很多機器都安裝了高版本的Java8,運作這個dubbo-admin将導緻出錯,報錯資訊為“Bean property 'URIType'

is not writable or has an invalid setter method”,詳見官方的issues。我自己的解決方法是下載下傳一個低版本的Java,修改tomcat對應的Java版本,找到setclasspath.bat中的set _RUNJAVA,set _RUNJDB這兩行,修改如下:

本文轉自帥氣的頭頭部落格51CTO部落格,原文連結http://blog.51cto.com/12902932/1925692如需轉載請自行聯系原作者

sshpp