文章目录

  • 1.DUBBO介绍
  • 1.1.DUBBO是什么?
    • 1.2.DUBBO的核心优势是什么?
  • 2.快速开始
    • 2.1.windows启动测试中心
    • 2.2.配置监控中心(可视化监控与管理)
    • 2.3.创建提供者和消费者(springboot创建)
      • 2.3.1.创建接口模块
      • 2.3.1.创建接口模块(用于暴露接口)
      • 2.3.2.创建消费者,提供者模块(两个工程创建同理)
      • 2.3.3.启动测试

1.DUBBO介绍

1.1.DUBBO是什么?

Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。
在云原生时代,Dubbo 相继衍生出了 Dubbo3、Proxyless Mesh 等架构与解决方案,在易用性、超大规模微服务实践、云原生基础设施适配、安全性等几大方向上进行了全面升级。

dubbo的开源小故事。

Apache Dubbo 最初是为了解决阿里巴巴内部的微服务架构问题而设计并开发的,在十多年的时间里,它在阿里巴巴公司内部的很多业务系统的到了非常广泛的应用。最早在 2008 年,阿里巴巴就将 Dubbo 捐献到开源社区,它很快成为了国内开源服务框架选型的事实标准框架,得到了业界更广泛的应用。

在 2017 年,Dubbo 被正式捐献 Apache 软件基金会并成为 Apache 顶级项目,开始了一段新的征程。

1.2.DUBBO的核心优势是什么?

1.快速易用
无论你是计划采用微服务架构开发一套全新的业务系统,还是准备将已有业务从单体架构迁移到微服务架构,Dubbo 框架都可以帮助到你。Dubbo 让微服务开发变得非常容易,它允许你选择多种编程语言、使用任意通信协议,并且它还提供了一系列针对微服务场景的开发、测试工具帮助提升研发效率

2.超高性能
高性能数据传输
构建可伸缩的微服务集群

3.服务治理
提供了:

  1. 流量管控
  2. 微服务生态
  3. 可视化控制台
  4. 安全体系
  5. 服务网络

2.快速开始

参考文档

  1. dubbo官方文档(dubbo*springboot快速开始)

2.1.windows启动测试中心

1.下载启动zookeeper(版本3.7.1)

2.启动注册中心。

2.2.配置监控中心(可视化监控与管理)

  1. 下载编译dubbo-admin
    源码地址

如果端口都是默认的话,直接启动就好了(可以在idea直接启动,也可以使用java -jar 命令启动 springboot,别用jdk17会报错)

打开? 打不开! 哈哈哈, 因为不是成品项目,需要自行编译运行前端vue项目

  1. 安装相关依赖
npm i
  1. 运行项目
npm run dev

2.3.创建提供者和消费者(springboot创建)

2.3.1.创建接口模块

创建父工程。

  • 按照官网提示修改下pom文件
  <properties>        <dubbo.version>3.2.0-beta.4</dubbo.version>        <spring-boot.version>2.7.8</spring-boot.version>        <maven.compiler.source>17</maven.compiler.source>        <maven.compiler.target>17</maven.compiler.target>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    </properties>    <dependencyManagement>        <dependencies>                        <dependency>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-dependencies</artifactId>                <version>${spring-boot.version}</version>                <type>pom</type>                <scope>import</scope>            </dependency>                        <dependency>                <groupId>org.apache.dubbo</groupId>                <artifactId>dubbo-bom</artifactId>                <version>${dubbo.version}</version>                <type>pom</type>                <scope>import</scope>            </dependency>            <dependency>                <groupId>org.apache.dubbo</groupId>                <artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>                <version>${dubbo.version}</version>                <type>pom</type>            </dependency>        </dependencies>    </dependencyManagement>    <build>        <pluginManagement>            <plugins>                <plugin>                    <groupId>org.springframework.boot</groupId>                    <artifactId>spring-boot-maven-plugin</artifactId>                    <version>${spring-boot.version}</version>                </plugin>            </plugins>        </pluginManagement>    </build>

2.3.1.创建接口模块(用于暴露接口)

pom文件没有特别需要修改的。

  • 然后暴露接口
public interface DemoService {    String sayHello(String name);}

2.3.2.创建消费者,提供者模块(两个工程创建同理)

1. 创建模块 (我这里提供者单词拼错了,。。。不过问题不大,先凑合着用)

这里需要注意的是吧接口maven依赖地址修改成你自己接口模块maven的地址

 <dependency>            <groupId>org.apache.dubbo</groupId>            <artifactId>dubbo-spring-boot-interface</artifactId>            <version>${project.parent.version}</version>        </dependency>
    <dependencies>        <dependency>            <groupId>org.apache.dubbo</groupId>            <artifactId>dubbo-spring-boot-interface</artifactId>            <version>${project.parent.version}</version>        </dependency>                <dependency>            <groupId>org.apache.dubbo</groupId>            <artifactId>dubbo-spring-boot-starter</artifactId>        </dependency>        <dependency>            <groupId>org.apache.dubbo</groupId>            <artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>            <type>pom</type>            <exclusions>                <exclusion>                    <artifactId>slf4j-reload4j</artifactId>                    <groupId>org.slf4j</groupId>                </exclusion>            </exclusions>        </dependency>                <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter</artifactId>        </dependency>    </dependencies>

2. 服务端(提供者)实现接口‘

@DubboServicepublic class DemoServiceImpl implements DemoService {    @Override    public String sayHello(String name) {        return "Hello " + name;    }}

3. 服务端(提供者)配置链接配置:

  • 我这里通过yml文件进行配置。
dubbo:  application:    name: dubbo-springboot-demo-provider  protocol:    name: dubbo    port: -1  registry:    address: zookeeper://${zookeeper.address:127.0.0.1}:2181

由于我的zookeeper都是默认值,所以直接这样配置就可以,可以按照自己的配置进行设置


最后开启在启动类上打上@EnableDubbo注解

3. 消费者配置链接配置:

  • 配置yml
  • 配置消费者请求任务
@Componentpublic 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();    }}


最后开启在启动类上打上@EnableDubbo注解

2.3.3.启动测试

测试成功!(QAQ)

不过在没有进行整理的情况下,需要启动的服务倒是不少,这里简单梳理一下。

  • 监控中心(dubbo-admin)
  • 1.监控中心后端服务
  • 2.监控中心前端服务
    3. 注册中心(Zookeeper)

    4.服务端(提供者)

    5.消费者

    共计5个服务。