如何实现SpringCloudAlibaba和Dubbo融合

这篇文章主要讲解了如何实现Spring Cloud Alibaba和Dubbo融合,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

九原ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

服务提供者

创建一个名为 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融合有进一步的了解,如果还想学习更多内容,欢迎关注创新互联行业资讯频道。

当前文章:如何实现SpringCloudAlibaba和Dubbo融合
网站网址:https://www.cdcxhl.com/article44/ijhdhe.html

成都网站建设公司_创新互联,为您提供移动网站建设网站设计网站导航营销型网站建设做网站网站维护

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司