Dubbo直连方式
一、簡介
官網:http://dubbo.apache.org/zh-cn/
Dubbo是[1]阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和[2]Spring框架無縫集成。
Dubbo是一款高性能、輕量級的開源Java RPC框架,它提供了三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動注冊和發現
二、Dubbo程序(直連式)
業務接口名即服務名稱。無論是服務提供者向服務注冊中心注冊服務,還是服務消費者從注冊中心索取服務,都是通過接口名稱進行注冊與查找的。即,提供者與消費者都依賴于業務接口。所以,一般情況下,會將業務接口專門定義為一個工程,讓提供者與消費者依賴
三、創建業務接口工程00-api
(1)創建業務接口工程00-api
(2)創建業務接口
(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>
四、創建提供者(自建Spring容器)00-api-provider
(1)創建工程
創建一個Maven的Java工程,并命名為00-api-provider
(2) 在pom中導入依賴
主要包含三類依賴:
業務接口依賴
Dubbo依賴(2.7.0版本)
Spring依賴(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> <!-- 自定義版本號 --> <spring-version>4.3.16.RELEASE</spring-version> </properties> <dependencies> <!--業務接口工程依賴--> <dependency> <groupId>00-api</groupId> <artifactId>00-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!-- dubbo依賴 --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>2.7.2</version> </dependency> <!-- Spring依賴 --> <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依賴 --> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> </dependencies> </project>
(3) 定義接口實現類
(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"> <!--指定當前工程在管控平臺中的名稱--> <dubbo:application name="01-provider"/> <!--指定注冊中心:不使用注冊中心--> <dubbo:registry address="N/A"/> <!--注冊業務接口實現類,它是真正的服務提供者--> <bean id="someService" class="com.dubbo.provider.SomeServiceImpl"/> <!--服務暴露--> <dubbo:service interface="com.dubbo.provider.SomeService" ref="someService"/></beans>
(5) 定義測試類
在/src/test/java中創建測試類RunProvider
五、創建提供者(Main啟動) 01-api-provider
使用自建Spring容器方式是比較浪費資源的。容器的作用僅僅就是創建一個單例的提供者對象,其本身并不需要 Tomcat 或 JBoss 等 Web 容器的功能。如果硬要用 Web 容器去加載服務提供方,就增加了代碼的復雜性,也浪費了資源。
Dubbo提供了一個Main.main()方法可以直接創建并啟動Provider,其底層僅僅是加載了一個簡單的用于暴露服務的Spring容器。該方式要求Spring配置文件必須要放到類路徑下的META-INF/spring目錄中,Spring配置文件名稱無所謂
(1)工程創建
復制00-api-provider工程,并修改其工程名01-api-provider
(2) 創建目錄并移動配置文件
在resources目錄中創建META-INF/spring目錄,并將spring-provider.xml配置文件拖入其中
(3) 修改啟動類
六、創建消費者01-consumer
(1) 創建工程
創建一個Maven的Java工程,并命名為01-consumer
(2) 在pom中導入依賴
該工程的依賴與Provider中的完全相同,直接復制來就可以
(3) 定義spring-consumer配置文件
(4) 定義消費者類
七、效果
(1)啟動提供者
(2)消費者消費
總結
- 上一篇: 番茄todo如何删除专注记录
- 下一篇: 路由器怎么插到电脑上如何把路由器装到电脑