日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

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

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

概述

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

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

架構


(0)provider基于dubbo容器啟動

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

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

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

(4)consumer直接調用provider接口

(5)monitor監控流量請求數據

Spring Cloud Alibaba 整合 Dubbo

創建主工程

創建一個空的工程,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>

創建provider子工程:hello-dubbo-provider

在alibaba-dubbo工程下,創建子工程,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工程下,創建hello-dubbo-provider子工程。目的是定義接口,后續consumer會引用該工程,然后就能直接調用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>

創建接口類EchoService:

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

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

在hello-dubbo-provider工程下,創建hello-dubbo-provider-service子工程。該工程是api工程的具體實現,因此必須依賴上一步創建的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>

創建EchoServiceImpl實現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,不要弄錯了

創建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工程結構如下

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

在主工程下創建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>

創建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);} }

創建啟動類

@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

附上整個工程結構:

測試

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。