Dubbo 简介
大家好,从当初开始给大家分享 — Dubbo 专题。那么咱们为什么要学习 Dubbo 呢?Dubbo 是什么货色呢?对于刚接触或刚开始工作的小伙伴可能有很多疑难。首先 Dubbo 是咱们微服务开发的根底能力框架,在国内能够说是名列前茅的 RPC 框架,它不仅有残缺的服务治理能力、服务注册发现能力、容错能力、集群能力等等,而且还提供丰盛的可插拔的拓展能力。那什么是 RPC 以及市面上有哪些 RPC 框架呢?他们的性能劣势如何呢?那么通过咱们这个 Dubbo 专题系列进行具体的解说。
前言
首先解释一下什么是 RPC,RPC 其全称为 Remote Procedure Call 即近程过程调用。RPC 用于在近程计算机上调用函数过程(通常也能够在同一台机器上的过程之间应用它)。假如这个场景:服务 A、B 两个服务别离部署在两台服务器上,服务 A 须要调用服务 B 上的某个办法,此时因为这是在两台不同的服务器部署的服务,因而须要通过建设网络连接进行交互的这一过程就叫近程服务调用。下图展现常见的两种 RPC 调用形式:
- RPC 跨过程调用:即在雷同操作系统中不同过程间的服务调用
- PRC 跨零碎且跨过程调用:即在不同操作系统间且跨过程近程服务调用
从通信协定层面上讲能够分为:
-
基于 HTTP 协定:
1.1 SOAP (基于 XML 传输)
1.2 REST (基于 JSON 传输)
1.3 Hessian(基于二进制传输)
-
基于 TCP 协定:
2.1 Mina
2.2 Netty
从语言和平台层面可分为:
-
Java 平台
1.2 RMI
-
.NET 平台
2.1 Remoting
从调用过程可分为:
- 同步调用
- 异步调用
1. 什么是 Dubbo
Apache Dubbo 是由阿里巴巴开源的高性能,基于 Java 的 RPC 框架。像在许多 RPC 零碎中一样,Dubbo 围绕定义服务的思维,能够通过指定其 参数 、 办法 和返回类型 调用近程的办法。在服务器端,服务器实现此接口 ( 阐明:服务提供端提供服务所实现的接口标准 ) 并运行 Dubbo 服务器以解决客户端调用。在客户端,客户端有一个服务端存根 ( 阐明:服务端提供的接口标准),通过这个存根就能够像调用本地办法一样调用近程服务端办法。
2. RPC 生态比照
Tips:以下对目前比拟风行的 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 开源
3. Dubbo 倒退历史
-
2.5.x-2.6.x 次要性能个性
1.1 服务注册 / 发现
1.2 健康检查
1.3 多协定反对
1.4 序列化服务
1.5 服务集群
1.6 失败执行策略
1.7 负载平衡策略
1.8 服务治理
1.9 服务监控
1.10 服务运行容器
1.11 直连提供者
1.12 服务代理
1.13 版本 / 分组治理
1.14 泛化调用
1.15 提早裸露
1.16 本地存根
1.17 服务降级
1.18 路由规定配置
-
2.7.x 次要性能个性
2.1 利用粒度服务注册
2.2 HTTP/2 (gRPC) 协定反对
2.3 Protobuf 反对
2.4 性能优化,调用链路性能晋升 30%
2.5 反对 TLS 平安传输链路
2.6 优化的生产端线程模型
2.7 新增更适应多集群部署场景的负载平衡策略
2.8 全新的利用开发 API(兼容老版本利用)
2.9 服务自省
2.10 异步编程模型 – 生产端 / 提供端异步
-
Dubbo3.0 布局
3.1 Dubbo 内核之 Filter 链的异步化
3.2 Reactive(响应式)反对
3.3 云原生 / ServiceMesh 方向的摸索
3.4 交融并反对阿里外部
4. Dubbo 生态
Tips:上面是目前 Dubbo 框架反对的相干开源生态产品,包含了阿里本身开源保护的产品和其余国内外公司开源的产品。包含了:服务治理、注册核心、链路追踪、服务监控、JVM 服务诊断、日志治理、服务网关等等。这些生态产品根本都是开箱即用。
5. Dubbo 国内发展前景
随着目前微服务架构的炽热,基础架构技术选型根本如下几种模式:
- Spring Cloud Netflix 微服务技术套件
- Spring Cloud Alibaba 微服务技术套件
- SpringBoot、Dubbo、开源服务治理框架整合
Spring Cloud Netflix 是由 Netflix 奉献的一套残缺的微服务架构技术栈,目前很多组件 Netflix 官网曾经不在官网反对同时在微服务架构中一个重要的问题:分布式事务未能提供解决方案。
Spring Cloud Alibaba是由阿里巴巴开源的一套微服务解决方案最近两年发展势头十分猛,也提供了比较完善的生态组件反对并且对分布式事务提供了解决方案(Seata)。
基于 SpringBoot、Dubbo 技术体系是适度到 Spring Cloud Alibaba、Spring Cloud Netflix 或者下一代微服务架构的两头产物。目前国内有不少公司采纳这套架构来做,须要由公司架构师对整个技术栈进行架构设计和框架整合,自由发挥程度较高。
比照后面几种架构计划,在微服务架构中服务与服务间通信根本基于两种通信形式 (也能够是消息中间件):HTTP、RPC。咱们在技术选型中对于外部服务根本采纳 RPC 形式(高效、大数据传输等),而在国内 Dubbo 是名列前茅的 RPC 服务治理框架。
6. 版本阐明
本系列以 Dubbo 最新版本 2.7.x(目前最新版本:2.7.8)进行解说。
7. 基本技能
初学者应该具备根本的 Java 编程能力、网络通讯编程能力、常见的设计模式和肯定的我的项目编程实战能力。
8. 小结
在本大节中咱们次要学习了什么是 RPC、理解什么是 Dubbo、Dubbo 的倒退历史以及 Dubbo 国内生态环境等。
本节课程的重点如下:
- 了解 RPC
- 晓得 Dubbo 是什么
- 理解 Dubbo 的倒退历史
- 理解 Dubbo 国内发展前景
作者
集体从事金融行业,就任过易极付、思建科技、某网约车平台等重庆一流技术团队,目前就任于某银行负责对立领取零碎建设。本身对金融行业有强烈的喜好。同时也实际大数据、数据存储、自动化集成和部署、散布式微服务、响应式编程、人工智能等畛域。同时也热衷于技术分享创建公众号和博客站点对常识体系进行分享。关注公众号:青年 IT 男 获取最新技术文章推送!
博客地址: http://youngitman.tech
CSDN: https://blog.csdn.net/liyong1…
微信公众号:
技术交换群: