文章目录
- 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.服务治理
提供了:
- 流量管控
- 微服务生态
- 可视化控制台
- 安全体系
- 服务网络
2.快速开始
参考文档
- dubbo官方文档(dubbo*springboot快速开始)
2.1.windows启动测试中心
1.下载启动zookeeper(版本3.7.1)
2.启动注册中心。
2.2.配置监控中心(可视化监控与管理)
- 下载编译dubbo-admin
源码地址
如果端口都是默认的话,直接启动就好了(可以在idea直接启动,也可以使用java -jar 命令启动 springboot,别用jdk17会报错)
打开? 打不开! 哈哈哈, 因为不是成品项目,需要自行编译运行前端vue项目
- 安装相关依赖
npm i
- 运行项目
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个服务。