Dubbo快速入门
前言
1. 技术选型
在 Dubbo 简介章节中我们对比了 RPC 生态相关技术选型:以下罗列出比较流行的 RPC 框架对比
| Dubbo | Montan | rpcx | gRPC | Thrift | |
|---|---|---|---|---|---|
| 语言环境 | Java | Java | Go | 跨语言 | 跨语言 |
| 分布式 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
| 多序列化框架 | 支持 | 支持 (当前支持Hessian2、Json,可扩展) | 支持 | 不支持 (只支持Protobuf) | 不支持 (Thrift格式) |
| 多种注册中心 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
| 管理中心 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
| 跨编程语言 | 不支持 | 不支持(支持Php Client和C server) | 不支持 | 支持 | 支持 |
-
Dubbo:阿里巴巴开源
-
Montan:新浪微博开源
-
rpcx:Golang net/rpc
-
gRPC:Google 开源
-
Thrift:Facebook 开源
以下是来自于压力测试结果,我们主要对比 gRPC、Dubbo、montan、Thrift:

我们主要从几个维度来考察一个框架的成熟度:
-
社区活跃和成熟度。
-
框架配置管理工具。
-
与成熟框架集成度。 例如:Spring、SpringBoot等
-
框架入侵程度。
-
性能指标。
综合以上多个维度考虑 Dubbo 自2010年开源至今国内线上或线下社区活跃度极高、Dubbo 服务治理工具相对完善、对 Spring 以及 SpringBoot 完美集成、框架对代码入侵极低甚至几个注解就能搞定、在高并发情况下依然维持相对好的表现能力。
2. SpringBoot 环境搭建
Tips:在这里我们选择使用SpringBoot2.3.4最新版本。
首先新建 SpringBoot 项目有很多种方式可以根据自己使用的开发工具来生成,这里我主要介绍两种方式:
第一种使用 Idea 工具:
-
首先打开 Idea File->New->Project->Spring Initializr 选择JDK版本点击Next。

-
设置 Group、Artifact 等等 点击Next。

-
这里我们选择 Web 用于测试 点击Next。

第二种使用 Spring 官网提供的代码生成工具:
-
首先打开https://start.spring.io地址 。


-
设置 Group、Artifact 等等 点击
ADD DEPENDENCIES...⌘ + B按钮添加 Web 依赖。 -
点击
GENERATE⌘ + ⏎按钮生成项目。项目结构如下:
3. Dubbo 框架集成
Tips:使用 Dubbo2.7.8 最新版本,这里我们使用 *-starer 简化集成操作。
首先我们到Maven中央仓库搜索Dubbo 选择dubbo-spring-boot-starer

在我们的项目pom.xml中加入:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
Tips:这里我们使用的 apache 的版本,alibaba 维护的版本有一些差异。
其次部署 zookeeper3.6.2 ,下载地址:https://downloads.apache.org/zookeeper/zookeeper-3.6.2/不会安装的小伙伴可以参考网上相关文章。
4. 实战
这里我们模拟一个获取图书列表的服务,通过一个 Http 请求的方式转发调用我们的 Dubbo 接口,这里的 Dubbo接口模拟的就是我们后端的微服务应用。架构图如下:

目录结构:
|- quickstart
|-- domain :存放领域模型
|-- facade:Dubbo 对外暴露服务
|-- web:对外提供 Http 服务

配置application.properties文件:
#Web端口
server.port=8080
#应用名称
spring.application.name=course
#Dubbo扫描路径
dubbo.scan.base-packages=com.muke.dubbocourse
#使用协议
dubbo.protocol.name=dubbo
#Dubbo端口
dubbo.protocol.port=12345
#配置zookeeper注册中心
dubbo.registry.address=zookeeper://127.0.0.1:2181
具体的实现代码小伙伴可以下载源码:https://gitee.com/newitman/course.git
5. Demo演示
-
启动项目的 main 函数
com.muke.dubbocourse.DubbocourseApplication#main。 -
我们通过浏览器访问地址:http://127.0.0.1:8080/books/query获取书列表信息。

调用流程图:

6. 小结
在本小节中我们主要学习了 Dubbo 在 RPC 技术选择中的优势、SpringBoot 项目的两种搭建方式以及 SpringBoot与 Dubbo 的集成流程。最后用一个简单的获取图书 Demo 例子完整的演示了 Dubbo 项目的基本开发流程。
本节课程的重点如下:
-
了解 Dubbo 在 RPC 技术选择中的优势
-
理解 SpringBoot 快速搭建项目方式
-
了解 SpringBoot 与 Dubbo 项目整合
-
基本的 Dubbo 服务开发流程
作者
个人从事金融行业,就职过易极付、思建科技、某网约车平台等重庆一流技术团队,目前就职于某银行负责统一支付系统建设。自身对金融行业有强烈的爱好。同时也实践大数据、数据存储、自动化集成和部署、分布式微服务、响应式编程、人工智能等领域。同时也热衷于技术分享创立公众号和博客站点对知识体系进行分享。关注公众号:青年IT男 获取最新技术文章推送!
博客地址:
微信公众号:

浙公网安备 33010602011771号