dubbo筆記

http://www.cnblogs.com/umgsai/p/5836925.html


一、什麼是dubbo?
dubbo是一個分佈式服務框架,用於提高性能和透明化的rpc遠程服務調用方案,以及soa服務治理方案。


核心:
1、遠程通訊:
提供對多種基於長連接的NIO框架抽象封裝,包括多種線程模型,序列化,以及“請求”
只要簡單配置,就能像調用本地方法一樣調用遠程方法。
2、集羣容錯:
失敗容錯,軟負載均衡
3、自動發現:
服務自動註冊與發現,基於註冊中心目錄服務,使服務提供方可以平滑增加或減少機器


二、架構圖:




Provider: 服務提供方
Consumer:服務消費方
Registry:註冊中心
Monitor:監控中心,統計服務調用次數和時間
Container:服務運行容器


1、服務容器啓動、加載、運行服務提供者
2、服務提供者向註冊中心註冊
3、服務消費者啓動,訂閱所需服務
4、註冊中心返回服務提供者列表給消費者,如果有變更,註冊中心
將基於長連接推送變更數據給消費者
5、服務消費者基於軟負載均衡算法,從提供者列表中選一臺提供者進行調用,
如果失敗,再選另外一臺調用
6、服務提供者跟消費者,在內存中累計調用次數和時間,定時發送統計數給監控中心


三、Dubbo服務的運行方式 


1.使用Servlet容易運行(Tomcat Jetty等) 不可取 
缺點:增加複雜性(端口、管理) 浪費資源(內存) 
2.自建Main方法類來運行(Spring容器) 不建議(本地調試可用) 
缺點:Dubbo本身提供的高級特性沒用上,自己編寫的啓動類可能有缺陷 
3.使用Dubbo框架提供的Main方法類來運行(Spring容器) 建議使用 
優點:框架本身提供(com.alibaba.dubbo.container.Main) 可實現優雅關機(ShutdownHook)
   注意點:spring-context.xml <import resource="classpath:spring/spring-xxx.xml"/>


四、Dubbo主要配置
1、提供方 provider.xml


<!-- 提供方應用信息,用於計算依賴關係 -->
 <dubbo:application name="demo-provider" /> 


<!-- 使用zookeeper註冊中心暴露服務地址 --> 
<dubbo:registry protocol="zookeeper" address="172.24.51.28:2181" /> 


<!-- 用dubbo協議在20880端口暴露服務 --> 
<dubbo:protocol name="dubbo" port="20880" /> 


<!-- 用戶服務接口 --> 
<dubbo:service interface="com.demo.service.UserService" ref="userService" />


2、消費方 consumer.xml


<!--消費方應用名,用於計算依賴關係,不是匹配條件,不要與提供方一樣 -->
 <dubbo:application name="demo-consumer"/>


 <!--zookeeper註冊中心 -->
 <dubbo:registry protocol="zookeeper" address="172.24.51.28:2181" /> 


<!--使用multicast廣播註冊中心暴露的服務地址 --> 
<!--<dubbo:registryaddress="multicast://10.57.41.19:1234" /> --> 


<!-- 生成遠程服務代理,可以和本地bean一樣使用demoService,
默認check="true",如果爲false,則可以先啓動消費方不報錯
-->
 <dubbo:reference id="userService" interface="com.demo.service.UserService" />


五、Dubbo管理控制檯
Dubbo管控臺可以對註冊到zookeeper註冊中心的服務或服務消費者進行管理

一般把包放置/webapps目錄下

六、Dubbo協議


Dubbo允許配置多協議,不同服務支持不同協議或者同一服務同時支持多種協議
比如大數據用短連接協議,小數據大併發用長連接協議
1、Dubbo
Dubbo缺省使用dubbo協議,單一長連接和NIO異步通訊,適用於小數據大併發,消費
服務機器數量遠大於提供者情況,不合適大數據量,比如傳文件,視頻等


2、RMI
短連接,jdk序列化,適用:傳入傳出參數數據包大小混合,消費者與提供者個數差不多。可傳文件


3、Hessian
底層http通訊,適用:傳入傳出參數數據包較大,提供者大於消費者,可傳文件


4、其他
http、webservice、thrift、mencached、redis


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章