dubbo(重點篇)
1.dubbo簡介
隨著網際網路的發展,網站應用的規模不斷擴大,常規的垂直應用架構已無法應對,分散式服務架構以及流動計算架構勢在必行,需一個治理系統確保架構有條不紊的演進。Dubbo是 阿里巴巴公司開源的一個高效能優秀的服務框架,使得應用可通過高效能的 RPC 實現服務的輸出和輸入功能,可以和sprping框架無縫整合。
2>soa架構
將表現層與服務層分離,使服務層成為一個像WebService那樣的介面表現層直接呼叫即可
3>架構演變:orm > mvc > rpc > soa
單一應用架構
當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本。此時,用於簡化增刪改查工作量的 資料訪問框架(ORM) 是關鍵。
垂直應用架構
當訪問量逐漸增大,單一應用增加機器帶來的加速度越來越小,將應用拆成互不相干的幾個應用,以提升效率。此時,用於加速前端頁面開發的 Web框架(MVC) 是關鍵。
分散式服務架構
當垂直應用越來越多,應用之間互動不可避免,將核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。此時,用於提高業務複用及整合的 分散式服務框架(RPC) 是關鍵。
流動計算架構
當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個排程中心基於訪問壓力實時管理叢集容量,提高叢集利用率。此時,用於提高機器利用率的 資源排程和治理中心(SOA) 是關鍵。
Dubbo就是資源排程和治理中心的管理工具。
4>dubbo的架構
步驟:1>提供服務端首先去註冊中心註冊服務 並提供服務端呼叫介面,2>呼叫服務端到註冊中心查詢服務端的介面等 3>呼叫端根據註冊中心得到的介面等資訊去服務端呼叫介面 4>監控中心負責監控上面的步驟(不參與)
2.使用dubbo(劃重點)
1>服務層:在匯入約束前記得在window > preferences > xml >xml catalog中匯入dubbo的xds檔案約束
新增dubbo的jar及其依賴
<!-- dubbo相關 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
</dependency>
在applicationContext-service.xml中配置約束和使用dubbo:service釋出服務
約束:xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
http://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd
<!-- 使用dubbo釋出服務 -->
<!-- 提供方應用資訊,用於計算依賴關係 -->
<dubbo:application name="e3-manager" />
<dubbo:registry protocol="zookeeper"
address="192.168.247.131:2181" />
<!-- 用dubbo協議在20880埠暴露服務 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 宣告需要暴露的服務介面 -->
<dubbo:service interface="com.e3mall.service.ItemService" ref="itemServiceImpl" timeout="600000"/>
2>表現層
新增jar包及其依賴
<!-- dubbo相關 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
</dependency>
在springmvc.xml中配置約束和使用dubbo:reference 引用服務
匯入約束:xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
http://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd
<!-- 引用dubbo服務 -->
<dubbo:application name="e3-manager-web"/>
<dubbo:registry protocol="zookeeper" address="192.168.247.131:2181"/>
<dubbo:reference interface="com.e3mall.service.ItemService" id="itemService" />
3.dubbo的註冊中心與監控中心的安裝(在linux上)
1>註冊中心Zookeeper的安裝
Zookeeper是java開發的可以執行在windows、linux環境。需要先安裝jdk。
安裝步驟:
第一步:安裝jdk
第二步:把zookeeper的壓縮包上傳到linux系統。
第三步:解壓縮壓縮包
tar -zxvf zookeeper-3.4.6.tar.gz
第四步:進入zookeeper-3.4.6目錄,建立data資料夾。
第五步:把zoo_sample.cfg改名為zoo.cfg
[[email protected] conf]# mv zoo_sample.cfg zoo.cfg
第六步:修改data屬性:dataDir=/root/zookeeper-3.4.6/data
第七步:啟動zookeeper
[[email protected] bin]# ./zkServer.sh start
關閉:[[email protected] bin]# ./zkServer.sh stop
檢視狀態:[[email protected] bin]# ./zkServer.sh status
注意:需要關閉防火牆。
service iptables stop
永久關閉修改配置開機不啟動防火牆:
chkconfig iptables off
如果不能成功啟動zookeeper,需要刪除data目錄下的zookeeper_server.pid檔案。
如果啟動service的提供端出現連線失敗:關閉防火牆
firewall-cmd --state 檢視防火牆是否關閉
systemctl stop firewalld.service 關閉防火牆
systemctl disable firewalld.service 將防火牆設定成禁止開機啟動
2>監控中心(只是用來檢視所提供的服務,不影響dubbo執行)
需要安裝tomcat,然後部署監控中心即可。
1、部署監控中心:
[[email protected] /]# cp dubbo-admin-2.5.4.war tomcat8/webapps/dubbo-admin.war
2、啟動tomcat
3、訪問http://192.168.25.167:8080/dubbo-admin/
使用者名稱:root
密碼:root
如果監控中心和註冊中心在同一臺伺服器上,可以不需要任何配置。
如果不在同一臺伺服器,需要修改配置檔案:
/tomcat8/webapps/dubbo-admin/WEB-INF/dubbo.properties