1. 程式人生 > >《商城專案01》--用dubbo實現對子系統的遠端呼叫

《商城專案01》--用dubbo實現對子系統的遠端呼叫

        最近加班不太多, 琢磨著把之前做的基於SOA架構的《商城專案》簡單整理下。記得當時做的時候涉及到dubbo, redis, activeMQ, solr等覺著挺六的技術,現在每天寫寫介面,偶爾客串寫寫前端,分散式相關的那些東西忘的差不多了,等在用到的時候估計還得從頭來過,想想都費勁。所以這篇算是簡單開個頭,今後琢磨啥新的東西的時候,有必要將學習過程簡單做個記錄,當再次用到的時候只需要看看記錄就能較快的上手。

一, 專案架構

1,初始架構

2,改造之後的SOA面向服務架構

面向服務,在這就是將service服務層單獨拿出來細化為會員、訂單等各個子系統,供web層系統選擇性呼叫。在這裡web層系統對service層系統的遠端呼叫,用的是dubbo技術實現的。

 

二,dubbo的應用

1,先盜用一個簡單的dubbo工作流程圖

節點角色說明:

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

Consumer: 呼叫遠端服務的服務消費方。

Registry: 服務註冊與發現的註冊中心。

Monitor: 統計服務的呼叫次調和呼叫時間的監控中心。

Container: 服務執行容器

在這裡,service層系統(Provider)將服務釋出到註冊中心Registry(專案中用的zookeeper),web層系統根據連線引數到註冊中心Registry呼叫已釋出的服務。

 

2,zookeeper的安裝配置

2.1 解壓安裝包

連結:https://pan.baidu.com/s/1NxoCs8W-12IFvuDSMf07Wg
提取碼:zfrl

2.2 在zookeeper-3.4.9目錄下新建名為data的資料夾

2.3 修改配置檔案 conf/zoo.cfg(複製於zoo_sample.cfg)

2.4  配置相關引數

dataDir: 2.2中新建的data資料夾路徑(改成自己的)

clientPort: 執行埠號

2.5 啟動測試

     zookeeper-3.4.9/ bin/ zkServer.cmd    -->ok

 

3,在專案中的具體應用

3.1 在對應的應用中新增需要依賴的jar包; ( e3-service/e3-web  pom.xml )

<!-- 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>

3.2  釋出方應用進行釋出服務相關配置; ( e3-service --applicationContext*.xml)

<應用/註冊中心/dubbo埠/釋出服務>

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
	
	<!-- 配置包掃描器 -->
	<!-- 對應的是e3-interface中的包 -->
	<context:component-scan base-package="cn.e3mall.service"></context:component-scan>
	
	<!-- 使用dubbo釋出服務 -->
	<!-- 提供方應用資訊,用於計算依賴關係 -->
	<dubbo:application name="e3-manager" />
	<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" /> 
	<!-- 用dubbo協議在20880埠暴露服務 -->
	<dubbo:protocol name="dubbo" port="20880" />
	<!-- 宣告需要暴露的服務介面;  timeout用於設定debug超時時間(30秒) --> 
	<dubbo:service interface="cn.e3mall.service.ItemService" ref="itemServiceImpl" timeout="30000" />
	<dubbo:service interface="cn.e3mall.service.ItemCatService" ref="itemCatServiceImpl" timeout="30000" />
	
	
</beans>

3.3  呼叫方應用進行釋出服務相關配置; ( e3-manager-web )

<應用/註冊中心/呼叫服務>

其中命xmlns名空間同上,

<!-- 引用dubbo服務 -->
	<dubbo:application name="e3-manager-web"/>
	<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>	
	<!-- 相當於建立一個名為itemService的bean -->
	<dubbo:reference interface="cn.e3mall.service.ItemService" id="itemService" />
	<dubbo:reference interface="cn.e3mall.service.ItemCatService" id="itemCatServiceTest007" />

需要注意一點:有兩行是後期額外新增的:

3.4, 啟動應用, 測試遠端呼叫服務的效果; ( e3-web呼叫e3-service釋出的對應介面)

 

三、Dubbo-admin的應用

1, Dubbo-admin的安裝配置

1.1 可新建一Tomcat安裝包,執行Dubbo-admin

1.2  將dubbo-admin.war複製到對應Tomcat安裝包的webapps目錄下

(在此附上dubbo-admin.war下載連結  https://pan.baidu.com/s/19sAuIaLl01Kl_D1W4RI3dw    提取碼:35ll)

 

1.3  執行Tomcat直接訪問(http://localhost:8080/dubbo-admin/),其中埠8080可自定義修改

此為註冊中心監控, 可檢視對應的服務釋出者和消費者

登入: root/root,能出現下圖即操作ok!!!

到此,使用dubbo進行系統之間的遠端呼叫算是ok了,到點了洗洗碎覺。