天天看點

Dubbo

1、webservice:效率不高基于soap協定。項目中不推薦使用。

2、使用restful形式的服務:http+json。很多項目中應用。如果服務太多,服務之間調用關系混亂,需要治療服務。

3、使用dubbo。使用rpc協定進行遠端調用,直接使用socket通信。傳輸效率高,并且可以統計出系統之間的調用關系、調用次數。

Dubbo

單一應用架構

當網站流量很小時,隻需一個應用,将所有功能都部署在一起,以減少部署節點和成本。

此時,用于簡化增删改查工作量的 資料通路架構(orm) 是關鍵。

垂直應用架構

當通路量逐漸增大,單一應用增加機器帶來的加速度越來越小,将應用拆成互不相幹的幾個應用,以提升效率。

此時,用于加速前端頁面開發的 web架構(mvc) 是關鍵。

分布式服務架構

當垂直應用越來越多,應用之間互動不可避免,将核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。

此時,用于提高業務複用及整合的 分布式服務架構(rpc) 是關鍵。

流動計算架構

當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個排程中心基于通路壓力實時管理叢集容量,提高叢集使用率。

此時,用于提高機器使用率的 資源排程和治理中心(soa) 是關鍵。

dubbo就是資源排程和治理中心的管理工具。

官網

Dubbo

provider: 暴露服務的服務提供方。

consumer: 調用遠端服務的服務消費方。

registry: 服務注冊與發現的注冊中心。這裡用zookeeper。

monitor: 統計服務的調用次調和調用時間的監控中心。在zookeeper的伺服器上裝tomcat中部署一個war項目,war項目在dubbo的git項目中有,監控中心在打開的時候dubbo是調用不了接口的!!!。

container: 服務運作容器。

下載下傳zookeeper,要提前裝好jre

解壓壓縮包

tar -zxvf zookeeper-3.4.6.tar.gz

進入zookeeper-3.4.6目錄,建立data檔案夾。

把conf/zoo_sample.cfg改名為zoo.cfg

[root@localhost conf]# mv zoo_sample.cfg zoo.cfg

修改zoo.cfg中data屬性:datadir=/usr/java/zookeeper-3.4.6/data

啟動zookeeper

[root@localhost bin]# ./zkserver.sh start

關閉:[root@localhost bin]# ./zkserver.sh stop

檢視狀态:[root@localhost bin]# ./zkserver.sh status

Dubbo

注意:需要關閉防火牆,不然provider和consumer連不上端口。

service iptables stop

永久關閉修改配置開機不啟動防火牆:

chkconfig iptables off

如果不能成功啟動zookeeper,需要删除data目錄下的zookeeper_server.pid檔案。

在maven項目pom中加入,其中consumer要依賴provider的interface工程

為了更好的測試使用tomcat插件,提供者和消費者端口名不能重複

提供者xml

代碼釋出

Dubbo

消費者xml

代碼調用,因為傳回的結果要在網絡中傳輸,是以pojo對象要實作serializable

遇到的坑:

1.雖然注冊時用的是外網,但是dubbo監控中還是用内網ip

2.如果消費者調用失敗,會導緻進入不了繼承dispatcherservlet的servlet類中,進而導緻一些初始化失敗

Dubbo