中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現Spring Cloud Alibaba和Dubbo融合

發布時間:2020-08-04 09:56:23 來源:億速云 閱讀:315 作者:小豬 欄目:編程語言

這篇文章主要講解了如何實現Spring Cloud Alibaba和Dubbo融合,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

服務提供者

創建一個名為 hello-dubbo-nacos-provider 的服務提供者項目

POM

<&#63;xml version="1.0" encoding="UTF-8"&#63;>
<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.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>

  <groupId>com.antoniopeng</groupId>
  <artifactId>hello-dubbo-nacos-provider</artifactId>
  <packaging>pom</packaging>
  
  <modules>
    <module>hello-dubbo-nacos-provider-api</module>
    <module>hello-dubbo-nacos-provider-service</module>
  </modules>
</project>

該項目下有兩個子模塊,分別是 hello-dubbo-nacos-provider-api 和 hello-dubbo-nacos-provider-service,前者用于定義接口,后者用于實現接口。

服務提供者接口模塊

在服務提供者項目下創建一個名為 hello-dubbo-nacos-provider-api 的模塊, 該項目模塊只負責 定義接口

POM

<&#63;xml version="1.0" encoding="UTF-8"&#63;>
<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.antoniopeng</groupId>
    <artifactId>hello-dubbo-nacos-provider</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>

  <artifactId>hello-dubbo-nacos-provider-api</artifactId>
  <packaging>jar</packaging>
</project>

定義一個接口

public interface EchoService {
  String echo(String string);
}

服務提供者接口實現模塊

創建名為 hello-dubbo-nacos-provider-service 服務提供者接口的實現模塊,用于實現在接口模塊中定義的接口。

引入依賴

在 pom.xml 中主要添加以下依賴

<!-- Nacos And Dubbo-->
<dependency>
	<groupId>org.apache.dubbo</groupId>
	<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
	<groupId>org.apache.dubbo</groupId>
	<artifactId>dubbo</artifactId>
</dependency>
<dependency>
	<groupId>org.apache.dubbo</groupId>
	<artifactId>dubbo-serialization-kryo</artifactId>
</dependency>
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>dubbo-registry-nacos</artifactId>
</dependency>
<dependency>
	<groupId>com.alibaba.nacos</groupId>
	<artifactId>nacos-client</artifactId>
</dependency>
<dependency>
	<groupId>com.alibaba.spring</groupId>
	<artifactId>spring-context-support</artifactId>
</dependency>

<!-- 依賴接口模塊,用于實現接口 -->
<dependency>
	<groupId>com.antoniopeng</groupId>
	<artifactId>hello-dubbo-nacos-provider-api</artifactId>
	<version>${project.parent.version}</version>
</dependency>

相關配置

在 application.yml 中加入相關配置

spring:
 application:
  name: dubbo-nacos-provider
 main:
  allow-bean-definition-overriding: true
dubbo:
 scan:
  # 接口掃描路徑
  base-packages: com.antoniopeng.hello.dubbo.nacos.provider.service
 protocol:
  name: dubbo
  # -1 代表自動分配端口
  port: -1
  # 配置高速序列化規則
  serialization: kryo
 registry:
  # 服務注冊地址,也就是 Nacos 的服務器地址
  address: nacos://192.168.127.132:8848
 provider:
  # 配置負載均衡策略(輪詢)
  loadbalance: roundrobin

附:Duubo 負載均衡策略

  • random:隨機
  • roundrobin:輪詢
  • leastactive:最少活躍數
  • consistenthash:一致性 Hash
     

實現接口

通過 org.apache.dubbo.config.annotation 包下的 @Service 注解將接口暴露出去

import com.antoniopeng.hello.dubbo.nacos.provider.api.EchoService;
import org.apache.dubbo.config.annotation.Service;

@Service(version = "1.0.0")
public class EchoServiceImpl implements EchoService {

  @Override
  public String echo(String string) {
    return "Echo Hello Dubbo " + string;
  }
}

注意:@Service 注解要注明 version 屬性

驗證是否成功

啟動項目,通過瀏覽器訪問Nacos Server 網址 http://192.168.127.132:8848/nacos ,會發現有一個服務已經注冊在服務列表中。

服務消費者

創建一個名為 hello-dubbo-nacos-consumer 的服務消費者項目

引入依賴

同樣在 pom.xml中添加以下主要依賴

<!-- Nacos And Dubbo -->
<dependency>
	<groupId>org.apache.dubbo</groupId>
	<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
	<groupId>org.apache.dubbo</groupId>
	<artifactId>dubbo-serialization-kryo</artifactId>
</dependency>
<dependency>
	<groupId>org.apache.dubbo</groupId>
	<artifactId>dubbo-spring-boot-actuator</artifactId>
</dependency>
<dependency>
	<groupId>org.apache.dubbo</groupId>
	<artifactId>dubbo</artifactId>
</dependency>
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>dubbo-registry-nacos</artifactId>
</dependency>
<dependency>
	<groupId>com.alibaba.nacos</groupId>
	<artifactId>nacos-client</artifactId>
</dependency>
<dependency>
	<groupId>com.alibaba.spring</groupId>
	<artifactId>spring-context-support</artifactId>
</dependency>

<!-- 依賴服務提供者接口模塊,用于調用接口 -->
<dependency>
	<groupId>com.antoniopeng</groupId>
	<artifactId>hello-dubbo-nacos-provider-api</artifactId>
	<version>${project.parent.version}</version>
</dependency>

相關配置

在 application.yml 中添加以下配置

spring:
 application:
  name: dubbo-nacos-consumer
 main:
  allow-bean-definition-overriding: true

dubbo:
 scan:
  # 配置 Controller 掃描路徑
  base-packages: com.antoniopeng.dubbo.nacos.consumer.controller
 protocol:
  name: dubbo
  port: -1
 registry:
  address: nacos://192.168.127.132:8848

server:
 port: 8080

# 服務監控檢查
endpoints:
 dubbo:
  enabled: true
management:
 health:
  dubbo:
   status:
    defaults: memory
    extras: threadpool
 endpoints:
  web:
   exposure:
    include: "*"

Controller

通過 org.apache.dubbo.config.annotation 包下的 @Reference 注解以 RPC 通信的方式調用服務,而對外提供以 HTTP 通信的方式的 Restful API

import com.antoniopeng.dubbo.nacos.provider.api.EchoService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class EchoController {

  @Reference(version = "1.0.0")
  private EchoService echoService;

  @GetMapping(value = "/echo/{string}")
  public String echo(@PathVariable String string) {
    return echoService.echo(string);
  }
}

驗證是否成功

通過瀏覽器訪問 Nacos Server 網址 http:192.168.127.132:8848/nacos ,會發現又多了一個服務在服務列表中。

然后再訪問服務消費者對外提供的 RESTful API http://localhost:8080/echo/hi,瀏覽器會響應以下內容:

Echo Hello Dubbo hi

到此,實現了 Nacos 與 Dubbo 的融合。

看完上述內容,是不是對如何實現Spring Cloud Alibaba和Dubbo融合有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绵阳市| 庆城县| 天峻县| 宿迁市| 内丘县| 河津市| 兴文县| 寿阳县| 镇安县| 威海市| 隆德县| 朝阳县| 余姚市| 绵竹市| 临潭县| 鸡泽县| 垣曲县| 墨玉县| 云林县| 江安县| 那曲县| 锦屏县| 临桂县| 咸丰县| 西华县| 隆回县| 嘉祥县| 喀喇沁旗| 托克逊县| 陆河县| 乐清市| 简阳市| 黄冈市| 和顺县| 武义县| 彝良县| 襄汾县| 南郑县| 满洲里市| 嘉祥县| 霍城县|