都dubbo3了,别再用xml了配置dubbo服务了

这里是weihubeats ,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党

背景

最近项目再准备升级dubbo3,所以打算简单实现一个dubbo3的demo。

来学习一下dubbo

dubbo3

dubbo3主要是为了融入云原生打造的

Dubbo 3 提供的核心特性列表,主要包括四部分。

  1. 全新服务发现模型。应用粒度服务发现,面向云原生设计,适配基础设施与异构系统;性能与集群伸缩性大幅提升。
  2. 下一代 RPC 协议 Triple。基于 HTTP/2 的 Triple 协议,兼容 gRPC;网关穿透性强、多语言友好、支持 Reactive Stream。
  3. 统一流量治理模型。面向云原生流量治理,SDK、Mesh、VM、Container 等统一治理规则;能够支持更丰富的流量治理场景。
  4. Service Mesh。在最新的3.1.0的版本中支持Sidecar Mesh 与 Proxyless Mesh,提供更多架构选择,降低迁移、落地成本。

dubbo3实践

目前官方已经给我们总结很多大公司的一些dubbo3使用案例,如果需要升级的,可以参考这些案例

dubbo3实践

本次打算基于spring boot + dubbo3做一个简单的demo

项目结构

dubbo版本

  • 3.3.0-beta.1

interface

就是公共接口,给双方公用的

  • DemoService
java 复制代码
public interface DemoService {

    String sayHello(String name);
}

provider

  1. 添加依赖
xml 复制代码
       <dependency>
            <groupId>io.github.weihubeats</groupId>
            <artifactId>spring-boot-dubbo-3x-interface</artifactId>
            <version>${project.parent.version}</version>
        </dependency>

        <!-- dubbo -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-zookeeper-curator5-spring-boot-starter</artifactId>
        </dependency>
  1. 启动类添加@EnableDubbo
java 复制代码
@SpringBootApplication
@EnableDubbo
public class ProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }
}
  1. rpc服务类添加@DubboService注解
java 复制代码
@DubboService
public class DemoServiceImpl implements DemoService {

    @Override
    public String sayHello(String name) {
        return "Hello " + name;
    }
}
  1. application.yml
application 复制代码
dubbo:
  application:
    name: dubbo-springboot-demo-provider
  protocol:
    name: dubbo
    port: -1
  registry:
    address: zookeeper://${zookeeper.address:127.0.0.1}:2181

这里我们使用dubbo协议,不使用Triple协议,启动端口使用-1,随机。zookeeper作为注册中心,默认使用本地的zookeeper

consumer

  1. 添加依赖

同上面provider

  1. 启动类添加@EnableDubbo

同上面provider

  1. 添加一个定时任务定时调用dubboRPC服务进行测试
java 复制代码
@Component
public class Task implements CommandLineRunner {
    @DubboReference
    private DemoService demoService;

    @Override
    public void run(String... args) throws Exception {
        String result = demoService.sayHello("world");
        System.out.println("Receive result ======> " + result);

        new Thread(()-> {
            while (true) {
                try {
                    Thread.sleep(1000);
                    System.out.println(new Date() + " Receive result ======> " + demoService.sayHello("world"));
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    Thread.currentThread().interrupt();
                }
            }
        }).start();
    }
}
  1. application.yml
application 复制代码
dubbo:
  application:
    name: dubbo-springboot-demo-consumer
    qos-port: 33333
  protocol:
    name: dubbo
    port: -1
  registry:
    address: zookeeper://${zookeeper.address:127.0.0.1}:2181

这里我们需要制定一个qos-port端口,避免端口冲突。其他的配置和provider类似

测试

  1. 先启动provider
  2. 再启动consumer

查看控制台:

看看zookeeper的元数据目录

总结

我们用基于Spring BootZookeeper注册中心快速入门使用了dubbo3。可以看到dubbo3并不需要像以前那样配置xml 比如这样

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <context:property-placeholder/>

    <!-- 定义应用名 -->
    <dubbo:application name="demo-provider"/>

    <!-- 定义注册中心地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>

    <!-- 定义订阅信息,Dubbo 会在 Spring Context 中创建对应的 bean -->
    <dubbo:reference id="greetingsService" interface="org.apache.dubbo.samples.api.GreetingsService"/>

</beans>

相对xml来说注解的使用更为简单。从spirngspring boot就可以说明xml文件令人讨厌。 所以我们使用高版本的duboo还是能尽量用注解就用注解吧,毕竟注解还是方便很多的.

想了解更多duubo3相关的内容可以参考dubbo官方文档,非常完善的中文文档

源码

参考

相关推荐
路在脚下@3 分钟前
Spring如何处理循环依赖
java·后端·spring
海绵波波1071 小时前
flask后端开发(1):第一个Flask项目
后端·python·flask
AI人H哥会Java4 小时前
【Spring】控制反转(IoC)与依赖注入(DI)—IoC容器在系统中的位置
java·开发语言·spring boot·后端·spring
凡人的AI工具箱4 小时前
每天40分玩转Django:Django表单集
开发语言·数据库·后端·python·缓存·django
奔跑草-4 小时前
【数据库】SQL应该如何针对数据倾斜问题进行优化
数据库·后端·sql·ubuntu
中國移动丶移不动4 小时前
Java 并发编程:原子类(Atomic Classes)核心技术的深度解析
java·后端
Q_19284999065 小时前
基于Spring Boot的旅游推荐系统
spring boot·后端·旅游
愤怒的代码5 小时前
Spring Boot对访问密钥加密解密——RSA
java·spring boot·后端
美美的海顿5 小时前
springboot基于Java的校园导航微信小程序的设计与实现
java·数据库·spring boot·后端·spring·微信小程序·毕业设计
愤怒的代码5 小时前
Spring Boot中幂等性的应用
java·spring boot·后端