Dubbo 服務(wù)治理簡介

前言

大家好,今天開始給大家分享 — Dubbo 專題之 Dubbo 服務(wù)治理簡介。在前面的章節(jié)中我們介紹了 Dubbo 序列化,了解到了 Dubbo 中支持的序列化方式以及其實現(xiàn)原理。那么從這個章節(jié)開始我們討論服務(wù)治理相關(guān)話題,在這個章節(jié)中我們會繼介紹 Dubbo 服務(wù)治理。那么什么是服務(wù)治理呢?為什么需要服務(wù)治理?Dubbo 中提供哪些服務(wù)治理方式呢?。那就讓我們快速開始吧!

1. 架構(gòu)演進(jìn)

首先在討論我們的服務(wù)治理之前我們先看看我們的軟件架構(gòu)設(shè)計的發(fā)展。在傳統(tǒng)的企業(yè)應(yīng)用或桌面應(yīng)用中,往往都是一個單體的應(yīng)用架構(gòu)設(shè)計如下圖所示:

單體架構(gòu)

可以看到我們的單體架構(gòu)很簡單一個 Java 進(jìn)程和數(shù)據(jù)庫就可以搞定。但是隨著業(yè)務(wù)的發(fā)展,我們的業(yè)務(wù)邏輯越來越復(fù)雜比如:我們一個電商系統(tǒng)主要包含用戶系統(tǒng)、商品系統(tǒng)、訂單系統(tǒng)、評價系統(tǒng)、支付系統(tǒng)、門店管理等等,同時我們的項目團(tuán)隊也可能隨著業(yè)務(wù)增長不斷擴(kuò)大,那么如果我們還在以前的單體系統(tǒng)上進(jìn)行開發(fā)可能會導(dǎo)致我們的系統(tǒng)代碼變得無法維護(hù)、一個系統(tǒng)上線可能導(dǎo)致所有服務(wù)不能使用等等問題。那么這個時候我們就使用多應(yīng)用架構(gòu)把功能在一個領(lǐng)域的放在一個系統(tǒng)中,同時應(yīng)用之間不能直接的交互架構(gòu)如下圖所示:

多應(yīng)用架構(gòu)

我們可以很直觀的感受到當(dāng)我們的系統(tǒng)發(fā)展到一定量的時候我們就需要對其進(jìn)行拆分。當(dāng)然上面的架構(gòu)有一個明顯的問題:應(yīng)用系統(tǒng)相互獨立后共同的業(yè)務(wù)或代碼無法復(fù)用。那怎么解決這個問題呢?接下來就是我們討論的重點分布式系統(tǒng)架構(gòu),在大型的電商系統(tǒng)中分布式架構(gòu)是我們常常使用的解決大數(shù)據(jù)量、高并發(fā)的有效解決方案,同時我們在實踐過程中常常遇到有很多的服務(wù)或者組件是共用的、用戶需求變更快、快速迭代等等問題。因此,我們希望分離變與不變,從而使組件或服務(wù)得到更好的復(fù)用和更容易拓展和維護(hù),上層的業(yè)務(wù)系統(tǒng)更加靈活多變的業(yè)務(wù)場景組合底層通用的公共服務(wù)能力來實現(xiàn)復(fù)雜多變的應(yīng)用場景。以下是簡要的分布式架構(gòu)圖:

分布式架構(gòu)

從圖中我們可以看出應(yīng)用層調(diào)用底層公共的抽象能力來組合成上層業(yè)務(wù)邏輯。

Tips:這里的架構(gòu)缺少接入網(wǎng)關(guān)系統(tǒng)。

2. 服務(wù)治理簡介

從上面介紹的架構(gòu)演進(jìn)中,我們可以知道當(dāng)我們系統(tǒng)隨著業(yè)務(wù)增加需要面對:高并發(fā)、大數(shù)據(jù)量、高吞吐量等問題。那么我們就需要調(diào)整我們的系統(tǒng)架構(gòu)使我們的系統(tǒng)服務(wù)化。服務(wù)治理主要作用是改變運行時服務(wù)的行為和選址邏輯、達(dá)到限流、權(quán)重配置等目的。下面我們通過服務(wù)化的特點、優(yōu)勢和所面臨的挑戰(zhàn)維度來進(jìn)行闡述。

服務(wù)化的特點:

  • 應(yīng)用按業(yè)務(wù)拆分成服務(wù)
  • 各個服務(wù)均可獨立部署
  • 服務(wù)可被多個應(yīng)用共享
  • 服務(wù)之間可以通信

服務(wù)化所帶來的優(yōu)勢:

  • 架構(gòu)上系統(tǒng)更加清晰
  • 核心模塊穩(wěn)定,以服務(wù)組件為單位進(jìn)行升級,避免了頻繁發(fā)布帶來的風(fēng)險
  • 開發(fā)管理方便
  • 單獨團(tuán)隊維護(hù)、工作分明,職責(zé)清晰
  • 業(yè)務(wù)復(fù)用、代碼復(fù)用
  • 非常容易拓展

服務(wù)化面臨的挑戰(zhàn):

  • 服務(wù)越來越多,配置管理復(fù)雜
  • 服務(wù)間依賴關(guān)系復(fù)雜
  • 服務(wù)之間的負(fù)載均衡
  • 服務(wù)的拓展
  • 服務(wù)監(jiān)控
  • 服務(wù)降級
  • 服務(wù)鑒權(quán)
  • 服務(wù)上線與下線

3. Dubbo 中服務(wù)治理

以下來自于官網(wǎng)的 Dubbo 服務(wù)治理架構(gòu)圖:

服務(wù)治理

其中 Dubbo 支持的服務(wù)治理能力包括:服務(wù)發(fā)現(xiàn)注冊、服務(wù)監(jiān)控、集群容錯、負(fù)載均衡、黑白名單、標(biāo)簽路由、條件路由、權(quán)重調(diào)節(jié)、服務(wù)降級等等。

4. 小結(jié)

在本小節(jié)中我們主要學(xué)習(xí)了 Dubbo 中服務(wù)治理,分別從單體架構(gòu)到分布式架構(gòu)的演進(jìn)進(jìn)行分析我們?yōu)槭裁匆粩嗟母倪M(jìn)我們的架構(gòu)設(shè)計。同時也知道了服務(wù)治理主要作用是改變運行時服務(wù)的行為和選址邏輯、達(dá)到限流、權(quán)重配置等目的,其中 Dubbo 服務(wù)治理提供了:服務(wù)發(fā)現(xiàn)注冊、服務(wù)監(jiān)控、集群容錯、負(fù)載均衡、黑白名單、標(biāo)簽路由、條件路由、權(quán)重調(diào)節(jié)等能力。

本節(jié)課程的重點如下:

  1. 理解 Dubbo 服務(wù)治理

  2. 了解架構(gòu)演進(jìn)背景

  3. 學(xué)習(xí) Dubbo 中提供的服務(wù)治理方式

作者

個人從事金融行業(yè),就職過易極付、思建科技、某網(wǎng)約車平臺等重慶一流技術(shù)團(tuán)隊,目前就職于某銀行負(fù)責(zé)統(tǒng)一支付系統(tǒng)建設(shè)。自身對金融行業(yè)有強(qiáng)烈的愛好。同時也實踐大數(shù)據(jù)、數(shù)據(jù)存儲、自動化集成和部署、分布式微服務(wù)、響應(yīng)式編程、人工智能等領(lǐng)域。同時也熱衷于技術(shù)分享創(chuàng)立公眾號和博客站點對知識體系進(jìn)行分享。關(guān)注公眾號:青年IT男 獲取最新技術(shù)文章推送!

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容