Dubbo快速入门

Dubbo快速入门

 

前言

大家好,今天开始给大家分享 — Dubbo 专题之 Dubbo 快速入门:在前面的章节中我们介绍了 Dubbo 中四大角色以及服务注册和服务引用流程分析,那么从这个章节开始我们开始进入实战阶段。其中可能会引入一些新的概念和新技术,本手册主要讲解 Dubbo 相关知识体系,如果涉及到其他技术栈请各位小伙伴自行查阅资料或者我后面进行讲解分享。

 

1. 技术选型

在 Dubbo 简介章节中我们对比了 RPC 生态相关技术选型:以下罗列出比较流行的 RPC 框架对比

 DubboMontanrpcxgRPCThrift
语言环境 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:

rpc性能对比

我们主要从几个维度来考察一个框架的成熟度:

  • 社区活跃和成熟度。

  • 框架配置管理工具。

  • 与成熟框架集成度。 例如:Spring、SpringBoot等

  • 框架入侵程度。

  • 性能指标。

综合以上多个维度考虑 Dubbo 自2010年开源至今国内线上或线下社区活跃度极高、Dubbo 服务治理工具相对完善、对 Spring 以及 SpringBoot 完美集成、框架对代码入侵极低甚至几个注解就能搞定、在高并发情况下依然维持相对好的表现能力。

 

2. SpringBoot 环境搭建

Tips:在这里我们选择使用SpringBoot2.3.4最新版本。

首先新建 SpringBoot 项目有很多种方式可以根据自己使用的开发工具来生成,这里我主要介绍两种方式:

第一种使用 Idea 工具:

  • 首先打开 Idea File->New->Project->Spring Initializr 选择JDK版本点击Next。

    idea1

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

    idea2

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

    idea3

 

 

第二种使用 Spring 官网提供的代码生成工具:

  • 首先打开https://start.spring.io地址 。

    website1

    website2

  • 设置 Group、Artifact 等等 点击ADD DEPENDENCIES...⌘ + B按钮添加 Web 依赖。

  • 点击GENERATE⌘ + ⏎按钮生成项目。项目结构如下:

    idea4

 

3. Dubbo 框架集成

Tips:使用 Dubbo2.7.8 最新版本,这里我们使用 *-starer 简化集成操作。

首先我们到Maven中央仓库搜索Dubbo 选择dubbo-spring-boot-starer

maven

在我们的项目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 服务

 

idea5

配置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演示

  1. 启动项目的 main 函数com.muke.dubbocourse.DubbocourseApplication#main

  2. 我们通过浏览器访问地址:http://127.0.0.1:8080/books/query获取书列表信息。

braoser

调用流程图:

invoker

 

6. 小结

在本小节中我们主要学习了 Dubbo 在 RPC 技术选择中的优势、SpringBoot 项目的两种搭建方式以及 SpringBoot与 Dubbo 的集成流程。最后用一个简单的获取图书 Demo 例子完整的演示了 Dubbo 项目的基本开发流程。

本节课程的重点如下:

  1. 了解 Dubbo 在 RPC 技术选择中的优势

  2. 理解 SpringBoot 快速搭建项目方式

  3. 了解 SpringBoot 与 Dubbo 项目整合

  4. 基本的 Dubbo 服务开发流程

作者

个人从事金融行业,就职过易极付、思建科技、某网约车平台等重庆一流技术团队,目前就职于某银行负责统一支付系统建设。自身对金融行业有强烈的爱好。同时也实践大数据、数据存储、自动化集成和部署、分布式微服务、响应式编程、人工智能等领域。同时也热衷于技术分享创立公众号和博客站点对知识体系进行分享。关注公众号:青年IT男 获取最新技术文章推送!

博客地址: http://youngitman.tech

微信公众号:

posted @ 2021-05-26 17:50  青年IT男  阅读(397)  评论(0)    收藏  举报