当前位置:   article > 正文

微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_微服务框架dubbo是基于springboot

微服务框架dubbo是基于springboot

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项目

记得cd到ui的目录里,如果没有相关环境,可以搜索vue文章,安装下vue3的相关环境。
2. 安装相关依赖

npm i
  • 1
  1. 运行项目
npm run dev
  • 1

在这里插入图片描述

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>
            <!-- Spring Boot -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- Dubbo -->
            <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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

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

pom文件没有特别需要修改的。
在这里插入图片描述

  • 然后暴露接口
    在这里插入图片描述
public interface DemoService {

    String sayHello(String name);
}
  • 1
  • 2
  • 3
  • 4

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

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

这里需要注意的是吧接口maven依赖地址修改成你自己接口模块maven的地址
在这里插入图片描述

 <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-interface</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
    <dependencies>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-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-dependencies-zookeeper-curator5</artifactId>
            <type>pom</type>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-reload4j</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>

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

    </dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

2. 服务端(提供者)实现接口‘
在这里插入图片描述

@DubboService
public class DemoServiceImpl implements DemoService {

    @Override
    public String sayHello(String name) {
        return "Hello " + name;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

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

在这里插入图片描述

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

在这里插入图片描述
最后开启在启动类上打上@EnableDubbo注解

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

  • 配置yml
    在这里插入图片描述
  • 配置消费者请求任务
@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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

在这里插入图片描述
最后开启在启动类上打上@EnableDubbo注解

2.3.3.启动测试

测试成功!(QAQ)
在这里插入图片描述
在这里插入图片描述

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

  • 监控中心(dubbo-admin)
  • 1.监控中心后端服务在这里插入图片描述
  • 2.监控中心前端服务
    在这里插入图片描述3. 注册中心(Zookeeper)
    在这里插入图片描述
    4.服务端(提供者)
    在这里插入图片描述
    5.消费者
    在这里插入图片描述
    共计5个服务。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/387075
推荐阅读
相关标签
  

闽ICP备14008679号