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

文章目录

  • 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 捐献到开源社区,它很快成为了国内开源服务框架选型的事实标准框架,得到了业界更广泛的应用。
微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第1张图片

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

微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第2张图片

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)
微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第3张图片

2.启动注册中心。
微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第4张图片

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

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

如果端口都是默认的话,直接启动就好了(可以在idea直接启动,也可以使用java -jar 命令启动 springboot,别用jdk17会报错)
微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第5张图片

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

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

npm i
  1. 运行项目
npm run dev

微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第6张图片

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

2.3.1.创建接口模块

创建父工程。

  • 按照官网提示修改下pom文件
    微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第7张图片
  <properties>
        <dubbo.version>3.2.0-beta.4dubbo.version>
        <spring-boot.version>2.7.8spring-boot.version>
        <maven.compiler.source>17maven.compiler.source>
        <maven.compiler.target>17maven.compiler.target>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    properties>

    <dependencyManagement>
        <dependencies>
            
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-dependenciesartifactId>
                <version>${spring-boot.version}version>
                <type>pomtype>
                <scope>importscope>
            dependency>

            
            <dependency>
                <groupId>org.apache.dubbogroupId>
                <artifactId>dubbo-bomartifactId>
                <version>${dubbo.version}version>
                <type>pomtype>
                <scope>importscope>
            dependency>

            <dependency>
                <groupId>org.apache.dubbogroupId>
                <artifactId>dubbo-dependencies-zookeeper-curator5artifactId>
                <version>${dubbo.version}version>
                <type>pomtype>
            dependency>
        dependencies>
    dependencyManagement>


    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-maven-pluginartifactId>
                    <version>${spring-boot.version}version>
                plugin>
            plugins>
        pluginManagement>
    build>

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

pom文件没有特别需要修改的。
微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第8张图片

  • 然后暴露接口
    微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第9张图片
public interface DemoService {

    String sayHello(String name);
}

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

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

这里需要注意的是吧接口maven依赖地址修改成你自己接口模块maven的地址
微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第10张图片

 <dependency>
            <groupId>org.apache.dubbogroupId>
            <artifactId>dubbo-spring-boot-interfaceartifactId>
            <version>${project.parent.version}version>
        dependency>
    <dependencies>
        <dependency>
            <groupId>org.apache.dubbogroupId>
            <artifactId>dubbo-spring-boot-interfaceartifactId>
            <version>${project.parent.version}version>
        dependency>

        
        <dependency>
            <groupId>org.apache.dubbogroupId>
            <artifactId>dubbo-spring-boot-starterartifactId>
        dependency>
        <dependency>
            <groupId>org.apache.dubbogroupId>
            <artifactId>dubbo-dependencies-zookeeper-curator5artifactId>
            <type>pomtype>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-reload4jartifactId>
                    <groupId>org.slf4jgroupId>
                exclusion>
            exclusions>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starterartifactId>
        dependency>

    dependencies>

2. 服务端(提供者)实现接口‘
微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第11张图片

@DubboService
public 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

微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第12张图片

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

微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第13张图片
最后开启在启动类上打上@EnableDubbo注解

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

  • 配置yml
    微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第14张图片
  • 配置消费者请求任务
@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();
    }
}

微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第15张图片
最后开启在启动类上打上@EnableDubbo注解

2.3.3.启动测试

测试成功!(QAQ)
微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第16张图片
微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第17张图片

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

  • 监控中心(dubbo-admin)
  • 1.监控中心后端服务微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第18张图片
  • 2.监控中心前端服务
    微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第19张图片3. 注册中心(Zookeeper)
    微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第20张图片
    4.服务端(提供者)
    微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第21张图片
    5.消费者
    微服务的起点---DUBBO(快速开始,入门,springboot搭建环境)(一款高性能RPC框架,3.2.0-beta.4)_第22张图片
    共计5个服务。

你可能感兴趣的:(dubbo,微服务,rpc)