11. Springboot集成Dubbo3(二)示例demo

这篇具有很好参考价值的文章主要介绍了11. Springboot集成Dubbo3(二)示例demo。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、前言

2、注册中心

3、快速开始

3.1、添加dubbo3依赖

3.2、dubbo3-api

​编辑

3.3、dubbo3-server

3.3.1、添加依赖

3.3.2、实现IUserService

3.3.3、添加配置文件application.properties

3.3.4、修改Application启动类

3.3.5、出错解决

3.4、dubbo3-portal

3.4.1、添加依赖

3.4.2、定义Controller

3.4.3、添加配置文件application.properties

3.4.4、修改启动类

3.4.5、启动成功,访问测试

4、小结


1、前言

Dubbo3从Dubbo2演进过来之后,已经从单纯的RPC框架改进成为了一个微服务框架,具备RPC框架能力的同时,还兼备服务治理能力。今天简单介绍下Dubbo3和Springboot的集成过程。

2、注册中心

官方仍然推荐zookeeper作为注册中心。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

先下载Zookeeper:Apache ZooKeeper

11. Springboot集成Dubbo3(二)示例demo,Spring Boot,spring boot,后端,java

下载最新版本后解压。

11. Springboot集成Dubbo3(二)示例demo,Spring Boot,spring boot,后端,java

接着,打开conf文件夹,把zoo_sample.cfg文件复制一份为zoo.cfg。以为zookeeper默认会读取zoo.cfg,zookeeper刚解压出来的版本仅仅提供了一个最简配置文件zoo_sample.cfg,需要我们自行修订。我们不做任何修订,直接复制一份出来。

11. Springboot集成Dubbo3(二)示例demo,Spring Boot,spring boot,后端,java

我们可以观察一下zoo.cfg中的一些简单配置,我们删除一下注释内容,只剩下以下配置:

# 时间配置最小但域,其他时间配置以整数倍tickTime计算
tickTime=2000
#Leader允许Follower启动时在initLimit时间内完成数据同步,单位:tickTime
initLimit=10
# Leader发送心跳包给集群中所有Follower,若Follower在syncLimit时间内没有响应,那么Leader就认为该follower已经挂掉了,单位:tickTime
syncLimit=5
# 配置zookeeper的数据目录
dataDir=/tmp/zookeeper
# 用于接收客户端请求的端口
clientPort=2181

最后,我们直接双击binzkServer.cmd,看下以下内容,就说明启动成功了。

11. Springboot集成Dubbo3(二)示例demo,Spring Boot,spring boot,后端,java

3、快速开始

简单示例场景:项目分Server服务层和Portal消费层。Portal调用Server提供的sayHello方法,输出相应内容,使用dubbo3进行Portal和Server的RPC通信。

3.1、添加dubbo3依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>3.2.10</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-dependencies-zookeeper -->
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-dependencies-zookeeper</artifactId>
        <version>3.2.10</version>
        <type>pom</type>
    </dependency>
</dependencies>

3.2、dubbo3-api

这一层我们定义一个公用的接口类和实体类。我们定义了IUserService。

public interface IUserService {
    String sayHello(String name);
}

11. Springboot集成Dubbo3(二)示例demo,Spring Boot,spring boot,后端,java

3.3、dubbo3-server

3.3.1、添加依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>3.2.10</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-dependencies-zookeeper -->
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-dependencies-zookeeper</artifactId>
        <version>3.2.10</version>
        <type>pom</type>
    </dependency>

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>dubbo3-api</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>

</dependencies>

3.3.2、实现IUserService

定义service实现类,实现IUserService接口。这里的Service需要加上@DubboService,声明自己托管给dubbo进行管理。

import com.example.dubbo3api.service.IUserService;
import org.apache.dubbo.config.annotation.DubboService;

@DubboService
public class UserServiceImpl implements IUserService {

    @Override
    public String sayHello(String name){
        return name + "say hello, my bro.";
    }
}

3.3.3、添加配置文件application.properties

server.port=7010

# 该服务注册到dubbo中暴露的协议端口
dubbo.protocol.port=20080
# 该服务注册到dubbo中暴露的协议
dubbo.protocol.name=dubbo
# 注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.application.name=dubbo3-server

3.3.4、修改Application启动类

启动类需要加上EnableDubbo注解,表示开启dubbo。

@EnableDubbo
@SpringBootApplication
public class Dubbo3ServerApplication {

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

}

接着就可以直接启动server层了。直接启动,发现一直卡在连接zookeeper上,过了一会直接报错了。

11. Springboot集成Dubbo3(二)示例demo,Spring Boot,spring boot,后端,java

3.3.5、出错解决

由于我使用的是JDK17,当Zookeeper对象实例化时,会调用InetSocketAddress的toString方法;而在jdk17中,该方法解析空字符串会拼装/。所以要么降回去使用JDK8,要么修改这个问题。降是不可能降的,一辈子都不可能降的。所以我们开始升级zookeeper版本,由于自带的zookeeper版本为3.4.14,太低了,我们排除后,升级zookeeper版本,问题即可解决。

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-dependencies-zookeeper</artifactId>
    <version>3.2.10</version>
    <type>pom</type>
    <exclusions>
        <exclusion>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.9.1</version>
</dependency>

继续启动,看到如下输出,启动成功。

11. Springboot集成Dubbo3(二)示例demo,Spring Boot,spring boot,后端,java

3.4、dubbo3-portal

3.4.1、添加依赖

同样需要排除zookeeper版本,自己引入高版本的zookeeper。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>3.2.10</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-dependencies-zookeeper -->
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-dependencies-zookeeper</artifactId>
        <version>3.2.10</version>
        <type>pom</type>
        <exclusions>
            <exclusion>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.9.1</version>
    </dependency>

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>dubbo3-api</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>

3.4.2、定义Controller

定义controller,调用userService的sayHello()。引用IUserService时,需要使用@DubboReference注入。

@RestController
public class UserController {

    @DubboReference
    private IUserService userService;

    @GetMapping("sayHello/{name}")
    public String sayHello(@PathVariable String name){
        return userService.sayHello(name);
    }

}

3.4.3、添加配置文件application.properties

server.port=8010

# 连接注册中心,需要与dubbo3-server的注册中心一致
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.application.name=dubbo3-portal

3.4.4、修改启动类

启动类需要加上EnableDubbo注解,表示开启dubbo。

@EnableDubbo
@SpringBootApplication
public class Dubbo3PortalApplication {

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

}

3.4.5、启动成功,访问测试

11. Springboot集成Dubbo3(二)示例demo,Spring Boot,spring boot,后端,java

4、小结

Dubbo3与Springboot的简单集成几步就可以了,集成还是相当容易的。目前为止Dubbo3和Dubbo2在集成上发现还是有一些区别的。如:

  1. Server注册到Zookeeper中,Dubbo2的注解为@Service,Dubbo3使用@DubboService。而@Service已经被标注为删除。相比Dubbo2来讲更加有辨识度,相信不少因为@Service用成了Spring的注解,而导致service一致注册失败问题而抓狂的朋友吧。
  2. Portal注入Service时,Dubbo2注解为@Reference,Dubbo3使用@DubboReference,命名上更加有辨识度。
  3. 配置上,同样Dubbo2和Dubbo3提供了XML配置方式和注解方式,但是Dubbo3相比Dubbo2,配置起来更加简单
  4. 依赖不同,Dubbo3特地提供了Springboot集成模块依赖,而不是独立的apache依赖。

简单使用下来发现目前有这几点不同,其他的功能还有待继续深入研究。文章来源地址https://www.toymoban.com/news/detail-829335.html

到了这里,关于11. Springboot集成Dubbo3(二)示例demo的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot集成Redis简单示例

    要在Spring Boot中集成Redis,你可以使用Spring Data Redis库来简化操作。 下面是一个示例代码: 首先,在你的Spring Boot项目的pom.xml文件中添加以下依赖: 接下来,配置Redis连接信息。在application.properties(或application.yml)文件中添加以下配置: 然后,创建一个Redis服务类来执行一些

    2024年01月22日
    浏览(53)
  • 【Spring Boot丨(11 )】json的集成

    主页传送门:📀 传送 Spring boot 提供了三种json库的集成: Gson Jackson JSON-B 上述三种库提供了将Java对象转换为JSON字符串以及将JSON字符串转换为Java对象的功能。 其中 Jackson 是 Spring Boot 官方的首选推荐和默认库。   Spring Boot 提供了 Jackson 的自动配置,并且 Jackson 是 spring-bo

    2024年02月16日
    浏览(53)
  • Spring Boot集成ShardingSphere分片利器 AutoTable (二)—— 自动分片算法示例 | Spring Cloud 46

    在前面我们通过以下章节对 ShardingSphere 的 AutoTable 有了基础的了解: Spring Boot集成ShardingSphere分片利器 AutoTable (一)—— 简单体验 | Spring Cloud 45 书接上回,本章进行对 AutoTable 支持的自动分片算法进行逐一示例说明。 示例采用 springboot 集成 shardingsphere-jdbc 方式搭建。 shadi

    2024年02月10日
    浏览(41)
  • Spring Boot集成MyBatis Plus中的QueryWrapper的eq方法详解及示例代码

    1. 简介 MyBatis Plus是一个强大的MyBatis增强工具包,它为我们在进行数据库操作时提供了很多便利的方法。其中,QueryWrapper是MyBatis Plus中的一个重要类,它可以用于构建复杂的查询条件。 在QueryWrapper中,eq方法是最常用的一个,它用于构建等值条件查询。在本文中,我们将详细

    2024年02月10日
    浏览(39)
  • spring boot集成Elasticsearch-SpringBoot(25)

      搜索引擎(search engine )通常意义上是指:根据特定策略,运用特定的爬虫程序从互联网上搜集信息,然后对信息进行处理后,为用户提供检索服务,将检索到的相关信息展示给用户的系统。   而我们讲解的是捜索的索引和检索,不涉及爬虫程序的内容爬取。大部分公司

    2023年04月09日
    浏览(113)
  • spring boot学习第六篇:SpringBoot 集成WebSocket详解

    1、WebSocket简介 WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。 2、为什么需要WebSocket HTTP 是基于请求响应式的,即通信只能由客户端发起,服务端做出响应,无状态,无连接。 无状态:每次连

    2024年01月21日
    浏览(52)
  • 【SpringBoot3】Spring Boot 3.0 集成 Redis 缓存

    Redis缓存是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它主要用于作为数据库、缓存和消息中间件,以快速读写和丰富的数据结构支持而著称。 在应用程序和数据库之间,Redis缓存作为一个中间层起着关键

    2024年02月21日
    浏览(56)
  • Spring Boot学习随笔- 集成MyBatis-Plus,第一个MP程序(环境搭建、@TableName、@TableId、@TableField示例)

    学习视频:【编程不良人】Mybatis-Plus整合SpringBoot实战教程,提高的你开发效率,后端人员必备! MyBatis-Plus是一个基于MyBatis的增强工具,旨在简化开发,提高效率。它扩展了MyBatis的功能,提供了许多实用的特性,包括强大的CRUD操作、条件构造器、分页插件、代码生成器等。MyBa

    2024年02月04日
    浏览(56)
  • Spring Boot学习随笔- 集成MyBatis-Plus(一),第一个MP程序(环境搭建、@TableName、@TableId、@TableField示例)

    学习视频:【编程不良人】Mybatis-Plus整合SpringBoot实战教程,提高的你开发效率,后端人员必备! MyBatis-Plus是一个基于MyBatis的增强工具,旨在简化开发,提高效率。它扩展了MyBatis的功能,提供了许多实用的特性,包括强大的CRUD操作、条件构造器、分页插件、代码生成器等。MyBa

    2024年02月04日
    浏览(46)
  • Dubbo3.0系列(5)- 新版dubbo-admin安装使用

    在很早之前,dubbo管理控制台是这样子的: 随着dubbo项目的重启,dubbo-admin也进行了重新规划,使用spring boot+ VUE进行了重写,目前最新版本为0.3.0。 GitHub 在上面的GitHub地址下载安装包。 解压,进入apache-dubbo-admin-0.3.0-bin-releaseinconfig目录,编辑application.properties。注释掉zookeepe

    2024年02月07日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包