日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

7.Spring Cloud Alibaba教程:整合Dubbo实现RPC调用

發(fā)布時間:2025/3/19 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7.Spring Cloud Alibaba教程:整合Dubbo实现RPC调用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

概述

Apache Dubbo 是一款高性能的、基于Java的開源RPC框架,它提供了以下特性:

  • 基于接口的遠程方法調(diào)用
  • 智能負載均衡
  • 服務自動注冊和發(fā)現(xiàn)
  • 高可擴展性
  • 運行期流量調(diào)度
  • 可視化的服務治理

架構(gòu)


(0)provider基于dubbo容器啟動

(1)provider注冊到注冊中心(Nacos)

(2)consumer訂閱注冊中心的服務變化

(3)注冊中心將服務變化結(jié)果異步地通知給consumer

(4)consumer直接調(diào)用provider接口

(5)monitor監(jiān)控流量請求數(shù)據(jù)

Spring Cloud Alibaba 整合 Dubbo

創(chuàng)建主工程

創(chuàng)建一個空的工程,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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.13.RELEASE</version></parent><groupId>com.train</groupId><artifactId>alibaba-dubbo</artifactId><version>1.0-SNAPSHOT</version><properties><project.version>1.0-SNAPSHOT</project.version><spring-cloud.version>Greenwich.SR6</spring-cloud.version><spring-cloud-alibaba.version>2.1.3.RELEASE</spring-cloud-alibaba.version></properties><modules><module>hello-dubbo-provider</module><module>hello-dubbo-consumer</module></modules><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><!-- Spring Boot --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Dubbo --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency><!-- Nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies> </project>

創(chuàng)建provider子工程:hello-dubbo-provider

在alibaba-dubbo工程下,創(chuàng)建子工程,pom.xml如下

<?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><parent><groupId>com.train</groupId><artifactId>alibaba-dubbo</artifactId><version>1.0-SNAPSHOT</version><relativePath>../pom.xml</relativePath></parent><artifactId>hello-dubbo-provider</artifactId><packaging>pom</packaging><modules><module>hello-dubbo-provider-api</module><module>hello-dubbo-provider-service</module></modules> </project>

在hello-dubbo-provider工程下,創(chuàng)建hello-dubbo-provider子工程。目的是定義接口,后續(xù)consumer會引用該工程,然后就能直接調(diào)用provider借口了

<?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><parent><groupId>com.train</groupId><artifactId>hello-dubbo-provider</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>hello-dubbo-provider-api</artifactId><packaging>jar</packaging></project>

創(chuàng)建接口類EchoService:

package com.train.dubbo.provider.api;public interface EchoService {String echo(String name); }

這樣api工程就完成了,很簡單

在hello-dubbo-provider工程下,創(chuàng)建hello-dubbo-provider-service子工程。該工程是api工程的具體實現(xiàn),因此必須依賴上一步創(chuàng)建的api工程

<?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><parent><groupId>com.train</groupId><artifactId>hello-dubbo-provider</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>hello-dubbo-provider-service</artifactId><packaging>jar</packaging><dependencies><dependency><groupId>com.train</groupId><artifactId>hello-dubbo-provider-api</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies> </project>

創(chuàng)建EchoServiceImpl實現(xiàn)EchoService接口

package com.train.dubbo.provider.service;import com.train.dubbo.provider.api.EchoService; import org.apache.dubbo.config.annotation.Service;@Service(version = "1.0.0") public class EchoServiceImpl implements EchoService {@Overridepublic String echo(String name) {return "Dubbo Hello:" + name;} }

注意:@Service注解必須引用dubbo的Service,而不是spring,不要弄錯了

創(chuàng)建Application啟動類

@SpringBootApplication public class ProviderApplication {public static void main(String[] args) {SpringApplication.run(ProviderApplication.class,args);} }

配置application.yml,前提必須安裝好nacos,還沒安裝的童鞋參考前面的文章

spring:application:name: dubbo-providermain:allow-bean-definition-overriding: truecloud:nacos:discovery:server-addr: 192.168.25.131:8848dubbo:scan:base-packages: com.train.dubbo.provider.serviceprotocol:name: dubboport: -1registry:address: spring-cloud://192.168.25.131:8848 server:port: 8010

整個provider工程結(jié)構(gòu)如下

啟動provider-service,然后查看Nacos,確認服務是否注冊

在主工程下創(chuàng)建hello-dubbo-consumer消費者工程,因為要消費provider接口,所以依賴provider-api工程

<?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><parent><groupId>com.train</groupId><artifactId>alibaba-dubbo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>hello-dubbo-consumer</artifactId><packaging>jar</packaging><dependencies><dependency><groupId>com.train</groupId><artifactId>hello-dubbo-provider-api</artifactId><version>${project.parent.version}</version></dependency></dependencies> </project>

創(chuàng)建controller接口以便測試

@RestController public class EchoController {@Reference(version = "1.0.0")private EchoService echoService;@GetMapping("/echo/{name}")public String echo(@PathVariable String name){return echoService.echo(name);} }

創(chuàng)建啟動類

@SpringBootApplication public class ConsumerApplication {public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class,args);} }

配置application.yml

server:port: 8020dubbo:protocol:name: dubboport: -1registry:address: spring-cloud://192.168.25.131:8848scan:base-packages: com.train.dubbo.consumer.controllercloud:subscribed-services: dubbo-provider spring:application:name: dubbo-consumercloud:nacos:discovery:server-addr: 192.168.25.131:8848main:allow-bean-definition-overriding: true

然后同樣啟動consumer工程,再確認Nacos

附上整個工程結(jié)構(gòu):

測試

在瀏覽器輸入http://localhost:8020/echo/zhangsan,能正常輸出provider-service實現(xiàn)的接口內(nèi)容,就說明正常運行

總結(jié)

以上是生活随笔為你收集整理的7.Spring Cloud Alibaba教程:整合Dubbo实现RPC调用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。