天天看點

dubbo分布式事務解決方案_想突破學習瓶頸,為什麼要認真的學一下Dubbo?

今天有學生在問,在學習dubbo的時候遇到瓶頸了怎麼辦,一些東西就感覺就在那裡,但是,就是碰不到,摸不着,陷入了迷茫,今天在這裡,就跟大家講一下怎麼突破這個瓶頸

先自我介紹一下哈,我是魯班學院的周瑜老師,擁有十年網際網路電商、網際網路金融行業從業經驗,在系統架構設計、系統性能調優、高并發秒殺系統、開源項目等方面有非常豐富的經驗。 曾任螞蟻金服進階開發工程師、大衆點評進階架構師,同時也是開源架構Dubbo的源碼貢獻者、魯班學院金牌講師。

進入正題:DubBo介紹

Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、輕量級的開源Java RPC架構。

什麼是RPC

百度:RPC(Remote Procedure Call)—遠端過程調用,它是一種通過網絡從遠端計算機程式上請求服務,而不需要了解底層網絡技術的協定。RPC協定假定某些傳輸協定的存在,如TCP或UDP,為通信程式之間攜帶資訊資料。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網絡分布式多程式在内的應用程式更加容易。

維基百科:遠端過程調用(英語:Remote Procedure Call,縮寫為 RPC)是一個計算機通信協定。該協定允許運作于一台計算機的程式調用另一台計算機的子程式,而程式員無需額外地為這個互動作用程式設計。如果涉及的軟體采用面向對象程式設計,那麼遠端過程調用亦可稱作遠端調用或遠端方法調用。

dubbo分布式事務解決方案_想突破學習瓶頸,為什麼要認真的學一下Dubbo?
dubbo分布式事務解決方案_想突破學習瓶頸,為什麼要認真的學一下Dubbo?

Dubbo的六大特點

面向接口的高性能RPC調用:提供高性能的基于代理的遠端調用能力,服務以接口為粒度,為開發者屏蔽遠端調用底層細節。

智能負載均衡:内置多種負載均衡政策,智能感覺下遊節點健康狀況,顯著減少調用延遲,提高系統吞吐量。

服務自動注冊與發現:支援多種注冊中心服務,服務執行個體上下線實時感覺。

高度可擴充能力:遵循微核心+插件的設計原則,所有核心能力如Protocol、Transport、Serialization被設計為擴充點,平等對待内置實作和第三方實作。

運作期流量排程:内置條件、腳本等路由政策,通過配置不同的路由規則,輕松實作灰階釋出,同機房優先等功能。

可視化的服務治理與運維:提供豐富服務治理、運維工具:随時查詢服務中繼資料、服務健康狀态及調用統計,實時下發路由政策、調整配置參數。

dubbo分布式事務解決方案_想突破學習瓶頸,為什麼要認真的學一下Dubbo?
dubbo分布式事務解決方案_想突破學習瓶頸,為什麼要認真的學一下Dubbo?

這個是使用DubbO前

dubbo分布式事務解決方案_想突破學習瓶頸,為什麼要認真的學一下Dubbo?

使用DubbO之後

你們對比一下前後有什麼變化沒有,我總結了一下幾點,各位可以看一下:

  • 使用Dubbo後服務調用位址透明

    *

  • 使用Dubbo後服務傳回參數公用

    *

  • 使用Dubbo後服務Http請求方法透明

    *

  • 使用Dubbo後對開發者服務調用更透明,開發效率更快

手寫模拟Dubbo

  • Provider子產品:提供API、實作API、暴露(啟動tomcat,nettyServer)、服務本地注冊、服務注冊中心注冊

    *

  • Consumer子產品:拿接口名從注冊中心擷取服務位址、調用服務

    *

  • Registry子產品:儲存服務配置資訊(服務名:List

    *

  • RpcProtocol子產品:基于Tomcat的HttpProtocol、基于Netty的DubboProtocol

    *

  • Framework子產品:架構實作
dubbo分布式事務解決方案_想突破學習瓶頸,為什麼要認真的學一下Dubbo?

Tomcat結構

dubbo分布式事務解決方案_想突破學習瓶頸,為什麼要認真的學一下Dubbo?
dubbo分布式事務解決方案_想突破學習瓶頸,為什麼要認真的學一下Dubbo?

那麼什麼是Dubbo Ecosystem呢??

Dubbo目前提供的能力逐漸的無法滿足開發者建構完整微服務的需求,開發者缺少一套完整的圍繞Dubbo的微服務解決方案,例如API gateway、熔斷限流、分布式監控和分布式事務等方面。開發者需要自研,或者調研各類開源的架構決定圍繞Dubbo打造一整套微服務的解決方案,涵蓋微服務開發過程中的各方面。這裡面的項目都是會經過Dubbo社群共同評估,和Dubbo高度內建,且在生産中得到過驗證的項目(這裡的項目不僅僅是阿裡巴巴開源的),我們把這個生态稱之為Apache Dubbo Ecosystem。

dubbo分布式事務解決方案_想突破學習瓶頸,為什麼要認真的學一下Dubbo?

Dubbo生态介紹

dubbo分布式事務解決方案_想突破學習瓶頸,為什麼要認真的學一下Dubbo?

Dubbo生态元件

L0層包括了Dubbo的核心RPC和Service Mesh的能力。L1層包含了服務的注冊發現、配置管理、系統高可用Reliability和Metrics的資料統計。如果說L0和L1是RPC領域的核心元件,那麼L2層開始則更加貼近微服務領域。L2層包含API Gateway、分布式跟蹤Tracing、分布式診斷Diagnosis和分布式事務Transaction等。L3層的元件則更加開放一些。Scheduling、Event Driven、Authenthentication和Function等方面都還沒有特别明确的方案出來,将會由第三方社群主導,形成開放生态。以Event Driven為例,社群主導使用的是RocketMQ,RocketMQ已經釋出了C、C++、Python和Go用戶端,并支援在Spring Boot中快速內建RocketMQ,同時支援Spring Message規範,友善開發者從其它MQ快速切換到RocketMQ。

dubbo分布式事務解決方案_想突破學習瓶頸,為什麼要認真的學一下Dubbo?
dubbo分布式事務解決方案_想突破學習瓶頸,為什麼要認真的學一下Dubbo?

“可以将Service Mesh比作是應用程式或者說微服務間的 TCP/IP,負責服務之間的網絡調用、限流、熔斷和監控。”

–魯班學院周瑜老師

dubbo教學視訊:https://www.bilibili.com/video/av79410607

本文由部落格一文多發平台 OpenWrite 釋出!