大家好,從現在開始給大家分享 — Dubbo 專題。那么我們為什么要學習 Dubbo 呢?Dubbo 是什么東西呢?對於剛接觸或剛開始工作的小伙伴可能有很多疑問。首先 Dubbo 是我們微服務開發的基礎能力框架,在國內可以說是首屈一指的 RPC 框架,它不僅有完整的服務治理能力、服務注冊發現能力、容錯能力、集群能力等等,而且還提供豐富的可插拔的拓展能力。那什么是 RPC 以及市面上有哪些 RPC 框架呢?他們的性能優勢如何呢?那么通過我們這個 Dubbo 專題系列進行詳細的講解。
前言
-
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男 獲取最新技術文章推送!
博客地址:
微信公眾號: