1. 程式人生 > >dubbo(重點篇)

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