簡介
官網:http://dubbo.io/
源碼下載:https://github.com/alibaba/dubbo
發佈包下載:http://repo1.maven.org/maven2/com/alibaba/dubbo/
DUBBO是一個分佈式服務框架,致力於提供高性能和透明化的RPC遠程服務調用方案,是阿里巴巴SOA服務化治理方案的核心框架,每天爲2,000+個服務提供3,000,000,000+次訪問量支持,並被廣泛應用於阿里巴巴集團的各成員站點。
Dubbo是Alibaba開源的分佈式服務框架,它最大的特點是按照分層的方式來架構,使用這種方式可以使各個層之間解耦合(或者最大限度地松耦合)。從服務模型的角度來看,Dubbo採用的是一種非常簡單的模型,要麼是提供方提供服務,要麼是消費方消費服務,所以基於這一點可以抽象出服務提供方(Provider)和服務消費方(Consumer)兩個角色。關於註冊中心、協議支持、服務監控等內容。
什麼是RPC?
百度百科
通過Maven構建dubbo
dubbo的主要模塊:
雖然阿里已經給我們打包好了核心框架的jar包,但在實際開發過程中,核心框架、管理控制檯、簡易監控中心、簡易註冊中心可能我們都需要用到,而且業務需求可能要修改dubbo源碼,再次打包。基於以上原因我們需要構建dubbo。構建的過程還是有些講究的,在此記錄下maven構建的步驟,方便以後回顧。
源碼:dubbo-dubbo-2.5.3(包含依賴hessian-lite、opensesame)
1、先導入編譯依賴,再導入dubbo核心源碼到Eclipse
2、安裝hessian-lite到本地倉庫
4、安裝opensesame到本地倉庫
5、構建dubbo
構建完成:
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] dubbo-parent ....................................... SUCCESS [ 0.561 s]
[INFO] dubbo-common ....................................... SUCCESS [ 7.344 s]
[INFO] dubbo-container .................................... SUCCESS [ 0.004 s]
[INFO] dubbo-container-api ................................ SUCCESS [ 1.150 s]
[INFO] dubbo-container-spring ............................. SUCCESS [ 0.538 s]
[INFO] dubbo-container-jetty .............................. SUCCESS [ 0.430 s]
[INFO] dubbo-container-log4j .............................. SUCCESS [ 0.412 s]
[INFO] dubbo-container-logback ............................ SUCCESS [ 0.645 s]
[INFO] dubbo-remoting ..................................... SUCCESS [ 0.003 s]
[INFO] dubbo-remoting-api ................................. SUCCESS [ 3.842 s]
[INFO] dubbo-remoting-netty ............................... SUCCESS [ 0.903 s]
[INFO] dubbo-remoting-mina ................................ SUCCESS [ 0.657 s]
[INFO] dubbo-remoting-grizzly ............................. SUCCESS [ 1.027 s]
[INFO] dubbo-remoting-p2p ................................. SUCCESS [ 0.725 s]
[INFO] dubbo-remoting-http ................................ SUCCESS [ 0.524 s]
[INFO] dubbo-remoting-zookeeper ........................... SUCCESS [ 0.890 s]
[INFO] dubbo-rpc .......................................... SUCCESS [ 0.003 s]
[INFO] dubbo-rpc-api ...................................... SUCCESS [ 1.772 s]
[INFO] dubbo-rpc-default .................................. SUCCESS [ 1.593 s]
[INFO] dubbo-rpc-injvm .................................... SUCCESS [ 0.474 s]
[INFO] dubbo-rpc-rmi ...................................... SUCCESS [ 0.463 s]
[INFO] dubbo-rpc-hessian .................................. SUCCESS [ 0.828 s]
[INFO] dubbo-rpc-http ..................................... SUCCESS [ 0.751 s]
[INFO] dubbo-rpc-webservice ............................... SUCCESS [ 0.880 s]
[INFO] dubbo-cluster ...................................... SUCCESS [ 1.941 s]
[INFO] dubbo-registry ..................................... SUCCESS [ 0.005 s]
[INFO] dubbo-registry-api ................................. SUCCESS [ 1.311 s]
[INFO] dubbo-monitor ...................................... SUCCESS [ 0.004 s]
[INFO] dubbo-monitor-api .................................. SUCCESS [ 0.516 s]
[INFO] dubbo-filter ....................................... SUCCESS [ 0.003 s]
[INFO] dubbo-filter-validation ............................ SUCCESS [ 0.708 s]
[INFO] dubbo-filter-cache ................................. SUCCESS [ 0.603 s]
[INFO] dubbo-registry-default ............................. SUCCESS [ 0.509 s]
[INFO] dubbo-monitor-default .............................. SUCCESS [ 0.916 s]
[INFO] dubbo-registry-multicast ........................... SUCCESS [ 0.576 s]
[INFO] dubbo-config ....................................... SUCCESS [ 0.002 s]
[INFO] dubbo-config-api ................................... SUCCESS [ 1.284 s]
[INFO] dubbo-config-spring ................................ SUCCESS [ 0.930 s]
[INFO] dubbo-rpc-thrift ................................... SUCCESS [ 1.700 s]
[INFO] dubbo-rpc-memcached ................................ SUCCESS [ 0.523 s]
[INFO] dubbo-rpc-redis .................................... SUCCESS [ 0.914 s]
[INFO] dubbo-registry-zookeeper ........................... SUCCESS [ 0.584 s]
[INFO] dubbo-registry-redis ............................... SUCCESS [ 0.996 s]
[INFO] dubbo .............................................. SUCCESS [10:57 min]
[INFO] dubbo-simple ....................................... SUCCESS [ 0.004 s]
[INFO] dubbo-registry-simple .............................. SUCCESS [16:55 min]
[INFO] dubbo-monitor-simple ............................... SUCCESS [ 18.007 s]
[INFO] dubbo-admin ........................................ SUCCESS [ 9.432 s]
[INFO] dubbo-demo ......................................... SUCCESS [ 0.004 s]
[INFO] dubbo-demo-api ..................................... SUCCESS [ 0.729 s]
[INFO] dubbo-demo-provider ................................ SUCCESS [ 13.662 s]
[INFO] dubbo-demo-consumer ................................ SUCCESS [ 13.786 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 29:29 min
[INFO] Finished at: 2017-03-01T15:03:02+08:00
[INFO] Final Memory: 78M/247M
[INFO] ------------------------------------------------------------------------
Dubbo框架說明
背景
架構
調用關係:
1. 服務容器負責啓動,加載,運行服務提供者。
2. 服務提供者在啓動時,向註冊中心註冊自己提供的服務。
3. 服務消費者在啓動時,向註冊中心訂閱自己所需的服務。
4. 註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者。
5. 服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
6. 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。