Dubbo直连方式
一、簡(jiǎn)介
官網(wǎng):http://dubbo.apache.org/zh-cn/
Dubbo是[1]阿里巴巴公司開(kāi)源的一個(gè)高性能優(yōu)秀的服務(wù)框架,使得應(yīng)用可通過(guò)高性能的 RPC 實(shí)現(xiàn)服務(wù)的輸出和輸入功能,可以和[2]Spring框架無(wú)縫集成。
Dubbo是一款高性能、輕量級(jí)的開(kāi)源Java RPC框架,它提供了三大核心能力:面向接口的遠(yuǎn)程方法調(diào)用,智能容錯(cuò)和負(fù)載均衡,以及服務(wù)自動(dòng)注冊(cè)和發(fā)現(xiàn)
二、Dubbo程序(直連式)
業(yè)務(wù)接口名即服務(wù)名稱(chēng)。無(wú)論是服務(wù)提供者向服務(wù)注冊(cè)中心注冊(cè)服務(wù),還是服務(wù)消費(fèi)者從注冊(cè)中心索取服務(wù),都是通過(guò)接口名稱(chēng)進(jìn)行注冊(cè)與查找的。即,提供者與消費(fèi)者都依賴(lài)于業(yè)務(wù)接口。所以,一般情況下,會(huì)將業(yè)務(wù)接口專(zhuān)門(mén)定義為一個(gè)工程,讓提供者與消費(fèi)者依賴(lài)
三、創(chuàng)建業(yè)務(wù)接口工程00-api
(1)創(chuàng)建業(yè)務(wù)接口工程00-api
(2)創(chuàng)建業(yè)務(wù)接口
(3) 修改pom文件
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>00-api</groupId> <artifactId>00-api</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> </project>
四、創(chuàng)建提供者(自建Spring容器)00-api-provider
(1)創(chuàng)建工程
創(chuàng)建一個(gè)Maven的Java工程,并命名為00-api-provider
(2) 在pom中導(dǎo)入依賴(lài)
主要包含三類(lèi)依賴(lài):
業(yè)務(wù)接口依賴(lài)
Dubbo依賴(lài)(2.7.0版本)
Spring依賴(lài)(4.3.16版本)
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>00-api-provider</groupId> <artifactId>00-api-provider</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <!-- 自定義版本號(hào) --> <spring-version>4.3.16.RELEASE</spring-version> </properties> <dependencies> <!--業(yè)務(wù)接口工程依賴(lài)--> <dependency> <groupId>00-api</groupId> <artifactId>00-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!-- dubbo依賴(lài) --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>2.7.2</version> </dependency> <!-- Spring依賴(lài) --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring-version}</version> </dependency> <!-- commons-logging依賴(lài) --> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> </dependencies> </project>
(3) 定義接口實(shí)現(xiàn)類(lèi)
(4) 定義spring-provider配置文件
在src/main/resources下定義spring-provider.xml配置文件
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> <!--指定當(dāng)前工程在管控平臺(tái)中的名稱(chēng)--> <dubbo:application name="01-provider"/> <!--指定注冊(cè)中心:不使用注冊(cè)中心--> <dubbo:registry address="N/A"/> <!--注冊(cè)業(yè)務(wù)接口實(shí)現(xiàn)類(lèi),它是真正的服務(wù)提供者--> <bean id="someService" class="com.dubbo.provider.SomeServiceImpl"/> <!--服務(wù)暴露--> <dubbo:service interface="com.dubbo.provider.SomeService" ref="someService"/></beans>
(5) 定義測(cè)試類(lèi)
在/src/test/java中創(chuàng)建測(cè)試類(lèi)RunProvider
五、創(chuàng)建提供者(Main啟動(dòng)) 01-api-provider
使用自建Spring容器方式是比較浪費(fèi)資源的。容器的作用僅僅就是創(chuàng)建一個(gè)單例的提供者對(duì)象,其本身并不需要 Tomcat 或 JBoss 等 Web 容器的功能。如果硬要用 Web 容器去加載服務(wù)提供方,就增加了代碼的復(fù)雜性,也浪費(fèi)了資源。
Dubbo提供了一個(gè)Main.main()方法可以直接創(chuàng)建并啟動(dòng)Provider,其底層僅僅是加載了一個(gè)簡(jiǎn)單的用于暴露服務(wù)的Spring容器。該方式要求Spring配置文件必須要放到類(lèi)路徑下的META-INF/spring目錄中,Spring配置文件名稱(chēng)無(wú)所謂
(1)工程創(chuàng)建
復(fù)制00-api-provider工程,并修改其工程名01-api-provider
(2) 創(chuàng)建目錄并移動(dòng)配置文件
在resources目錄中創(chuàng)建META-INF/spring目錄,并將spring-provider.xml配置文件拖入其中
(3) 修改啟動(dòng)類(lèi)
六、創(chuàng)建消費(fèi)者01-consumer
(1) 創(chuàng)建工程
創(chuàng)建一個(gè)Maven的Java工程,并命名為01-consumer
(2) 在pom中導(dǎo)入依賴(lài)
該工程的依賴(lài)與Provider中的完全相同,直接復(fù)制來(lái)就可以
(3) 定義spring-consumer配置文件
(4) 定義消費(fèi)者類(lèi)
七、效果
(1)啟動(dòng)提供者
(2)消費(fèi)者消費(fèi)
總結(jié)
- 上一篇: 番茄todo如何删除专注记录
- 下一篇: 路由器怎么插到电脑上如何把路由器装到电脑