成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

除了「加機(jī)器」,其實(shí)你的微服務(wù)還能這樣優(yōu)化

開發(fā) 架構(gòu)
本文從「AKF擴(kuò)展立方」說起,介紹了提高服務(wù)負(fù)載能力的幾種服務(wù)治理方式。除了X軸擴(kuò)展(加機(jī)器)外,還可以通過Y軸擴(kuò)展(功能/業(yè)務(wù)拆分)、Z軸擴(kuò)展(數(shù)據(jù)分區(qū))等方式,更優(yōu)雅、更精細(xì)地進(jìn)行優(yōu)化。?

?生產(chǎn)實(shí)踐中,如果遇到業(yè)務(wù)流量變高導(dǎo)致服務(wù)負(fù)載升高甚至報(bào)警,我們的第一反應(yīng)往往是「加機(jī)器」。

俗話說,能用錢解決的問題都不是問題。

俗話又說,充錢你就能變得更強(qiáng)。

但是,作為一個(gè)有理想有抱負(fù)的架構(gòu)師,除了「加機(jī)器」,其實(shí)你的微服務(wù)還能更優(yōu)雅、更精細(xì)地進(jìn)行優(yōu)化。

本文預(yù)計(jì)閱讀時(shí)間 10分鐘,將從以下三個(gè)方面展開:

  • 從「AKF擴(kuò)展立方」說起
  • Y軸擴(kuò)展的常用模式
  • z軸擴(kuò)展的思想與應(yīng)用

1.從「AKF擴(kuò)展立方」說起

在上一篇文章,我們從「服務(wù)維度」學(xué)習(xí)架構(gòu)師的常用能力——微服務(wù)設(shè)計(jì)與治理。

圍繞著微服務(wù)生命周期的七個(gè)階段,總結(jié)了常用的16條原則。

其中原則15在微服務(wù)服務(wù)治理實(shí)踐中非常重要,本文將重點(diǎn)進(jìn)行拆解分析。

原則15:參考「AKF擴(kuò)展立方」模型,服務(wù)除了「水平擴(kuò)容」外,還可以考慮「功能拆分」或者 「數(shù)據(jù)分區(qū)」。

所謂AKF擴(kuò)展立方體(AKF Scale Cube),是一個(gè)描述從單體應(yīng)用到一個(gè)分布式可擴(kuò)展架構(gòu)的模型概念。

圖片

  • X軸:服務(wù)和數(shù)據(jù)的水平擴(kuò)容。
  • Y軸:功能/業(yè)務(wù)拆分
  • Z軸:沿客戶邊界的服務(wù)和數(shù)據(jù)分區(qū)?

「水平擴(kuò)容」比較容易理解,就是我們常見的操作——加機(jī)器。

根據(jù)AKF模型,面對(duì)服務(wù)負(fù)載升高的情況,其實(shí)除了加機(jī)器外,我們還可以考慮「功能拆分」或者 「數(shù)據(jù)分區(qū)」。

2.Y軸擴(kuò)展的常用模式

「Y軸擴(kuò)展」相對(duì)復(fù)雜,我總結(jié)了幾種模式:

微服務(wù)拆分。根據(jù)具體業(yè)務(wù)模型、領(lǐng)域模型拆分更細(xì)粒度的微服務(wù)。

業(yè)務(wù)隔離拆分。利用消息隊(duì)列,將在線業(yè)務(wù)(OLTP)和耗費(fèi)大量資源的計(jì)算任務(wù)拆分隔離。

核心與非核心隔離。對(duì)于一個(gè)微服務(wù),可以將SKA客戶與普通客戶進(jìn)行隔離,SKA客戶使用獨(dú)立的集群資源,提高穩(wěn)定性。

2.1 微服務(wù)拆分

某個(gè)微服務(wù)負(fù)載過高,一個(gè)非常常見的原因就是這個(gè)微服務(wù)承擔(dān)了過多的職責(zé)。這個(gè)時(shí)候,我們需要根據(jù)具體業(yè)務(wù)模型、領(lǐng)域模型拆分更細(xì)粒度的微服務(wù)。也是我們常說的「垂直拆分」。

圖片

最典型的拆分方法論就是按照領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)進(jìn)行拆分。

以電商領(lǐng)域?yàn)槔凑疹I(lǐng)域可以拆分為:

  • 用戶服務(wù)
  • 商品服務(wù)
  • 訂單服務(wù)
  • 評(píng)價(jià)服務(wù)
  • 其他

圖片

系統(tǒng)按照領(lǐng)域拆分為多個(gè)微服務(wù)后,各個(gè)微服務(wù)由單獨(dú)的團(tuán)隊(duì)負(fù)責(zé)整個(gè)生命周期的維護(hù),單獨(dú)部署運(yùn)行。

這種隔離拆分的方式,能帶來以下優(yōu)勢(shì):

  • 提高整體系統(tǒng)的負(fù)載能力
  • 各個(gè)微服務(wù)間具備 獨(dú)立擴(kuò)縮容、故障隔離 等能力。

2.2 耗時(shí)任務(wù)隔離拆分

「Y軸擴(kuò)展」除了按照領(lǐng)域進(jìn)行服務(wù)拆分之外,另外一種非常重要的拆分方式,是將在線業(yè)務(wù)(OLTP)類型服務(wù)中「耗時(shí)任務(wù)」進(jìn)行隔離拆分。

我們服務(wù)一般會(huì)采用Tomcat或者Jetty部署,同時(shí)采用同步調(diào)用的方式。以Jetty為例,默認(rèn)線程池最大線程數(shù)為200。如果請(qǐng)求中有耗時(shí)任務(wù),影響了同步請(qǐng)求的RT,那么線程池滿后就會(huì)阻塞請(qǐng)求。

正如利特爾法則(Little's law)表述的:在一個(gè)穩(wěn)定的系統(tǒng)(L)中,長(zhǎng)期的平均顧客人數(shù),等于長(zhǎng)期的有效抵達(dá)率(λ),乘以顧客在這個(gè)系統(tǒng)中平均的等待時(shí)間(W);或者,我們可以用一個(gè)代數(shù)式來表達(dá):

因此,耗時(shí)任務(wù)會(huì)顯著提高服務(wù)負(fù)載、降低在線業(yè)務(wù)服務(wù)的吞吐能力。

通過引入消息隊(duì)列或者任務(wù)隊(duì)列框架,我們可以將耗時(shí)任務(wù)從在線業(yè)務(wù)服務(wù)中進(jìn)行隔離拆分。

圖片

這種隔離拆分的方式,能帶來以下優(yōu)勢(shì):

  • 提高在線服務(wù)的吞吐能力
  • 避免耗時(shí)任務(wù)影響在線業(yè)務(wù)的穩(wěn)定性。

2.3 核心與非核心隔離拆分

「Y軸擴(kuò)展」的第三種方式,是將 核心 與 非核心 進(jìn)行拆分。

比如,我們通常可能會(huì)將「核心接口」與「非核心」接口通過一個(gè)服務(wù)內(nèi)的不同線程池實(shí)現(xiàn)隔離。但是在節(jié)點(diǎn)資源(cpu/內(nèi)存/帶寬等)上并不能實(shí)現(xiàn)隔離。

因此,我們可以更進(jìn)一步,通過集群拆分的形式進(jìn)行隔離。

圖片

通過服務(wù)路由的配置,將核心接口路由到核心集群(一般節(jié)點(diǎn)配置更高),非核心接口路由到非核心集群。

另外,也有saas服務(wù),通常會(huì)對(duì)SKA客戶做獨(dú)立集群,也是類似的邏輯。

圖片

其實(shí)按用戶拆分隔離跟「數(shù)據(jù)分區(qū)」有一點(diǎn)類似,也可以歸類到「z軸擴(kuò)展」

這種隔離拆分的方式,能帶來以下優(yōu)勢(shì):

  • 精細(xì)化提高服務(wù)吞吐能力(針對(duì)核心接口、核心客戶)
  • 核心業(yè)務(wù)獨(dú)享資源,提高核心業(yè)務(wù)穩(wěn)定性
  • 避免非核心接口/用戶 影響 核心接口/用戶 的穩(wěn)定性

3.Z軸擴(kuò)展的思想與應(yīng)用

Z軸擴(kuò)展的核心思想,是基于請(qǐng)求者或用戶獨(dú)特的需求,進(jìn)行系統(tǒng)劃分,并使得劃分出來的子系統(tǒng)是相互隔離但又是完整的。

生產(chǎn)實(shí)踐中,常用的z軸擴(kuò)展有兩種應(yīng)用:

  • 單元化架構(gòu)
  • 數(shù)據(jù)分區(qū)

3.1 單元化架構(gòu)

單元化架構(gòu)主要關(guān)注的是應(yīng)用部署、調(diào)用層面的問題。

一個(gè)單元,是一個(gè)五臟俱全的縮小版全站,它部署了所有微服務(wù)。

圖片

但它又不是真正的全站,因?yàn)槊總€(gè)單元只能操作一部分?jǐn)?shù)據(jù)。

從這里我們也能看出,單元化架構(gòu)要求系統(tǒng)必須具備的一項(xiàng)能力——數(shù)據(jù)分區(qū)。

當(dāng)然,僅把數(shù)據(jù)分區(qū)了還不夠,單元化的另外一個(gè)必要條件是,全站所有業(yè)務(wù)數(shù)據(jù)分區(qū)所用的拆分維度和拆分規(guī)則都必須一樣。

一般來說,我們絕大多數(shù)系統(tǒng)都是面向用戶的,按用戶維度對(duì)數(shù)據(jù)分區(qū),是一個(gè)最佳實(shí)踐。

當(dāng)然,如果是全球化部署的單元化架構(gòu),還需要考慮按照地域進(jìn)行分區(qū)。

3.2 數(shù)據(jù)分區(qū)

數(shù)據(jù)分區(qū)(shard),即是將全局?jǐn)?shù)據(jù)按照某一個(gè)維度水平劃分開來,每個(gè)分區(qū)的數(shù)據(jù)內(nèi)容互不重疊,這也就是數(shù)據(jù)庫(kù)「水平拆分」所做的事情。

前面提到了「數(shù)據(jù)分區(qū)」是「單元化」的必要條件,但是「數(shù)據(jù)分區(qū)」還有其他很多場(chǎng)景應(yīng)用。

最典型的,就是MySQL單機(jī)瓶頸后,需要進(jìn)行「分庫(kù)分表」。在服務(wù)中需要引入一些支持?jǐn)?shù)據(jù)拆分和路由的中間件,如sharding-jdbc、mycat等,在數(shù)據(jù)層面需要配置相應(yīng)的分片邏輯。

另外,其他數(shù)據(jù)庫(kù)的分區(qū)擴(kuò)展(如redis集群、mongo集群等),也是非常典型的應(yīng)用場(chǎng)景。

一般包括以下幾種數(shù)據(jù)劃分的方式:

  • 數(shù)據(jù)類型(如:業(yè)務(wù)類型)
  • 數(shù)據(jù)范圍(如:時(shí)間段,用戶 ID)
  • 數(shù)據(jù)熱度(如:用戶活躍度,商品熱度)
  • 按讀寫分(如:商品描述,商品庫(kù)存)

4.小結(jié)

本文從「AKF擴(kuò)展立方」說起,介紹了提高服務(wù)負(fù)載能力的幾種服務(wù)治理方式。

除了X軸擴(kuò)展(加機(jī)器)外,還可以通過Y軸擴(kuò)展(功能/業(yè)務(wù)拆分)、Z軸擴(kuò)展(數(shù)據(jù)分區(qū))等方式,更優(yōu)雅、更精細(xì)地進(jìn)行優(yōu)化。?

責(zé)任編輯:武曉燕 來源: 阿丸筆記
相關(guān)推薦

2020-06-19 10:07:36

人工智能人臉識(shí)別技術(shù)

2020-06-05 18:45:44

Python監(jiān)視Google

2020-08-24 07:19:13

主鍵自增數(shù)據(jù)庫(kù)

2020-07-27 10:09:02

微服務(wù)架構(gòu)規(guī)則

2024-12-03 09:45:34

2022-04-11 08:20:36

編程輔助工具GitHubCopilot

2020-11-16 13:38:31

PostMessage

2015-05-20 14:01:27

程序程序會(huì)做飯

2023-12-01 07:38:33

微服務(wù)訂單服務(wù)

2012-10-11 09:46:20

2019-06-18 05:00:52

5G4G網(wǎng)絡(luò)

2016-09-24 22:30:00

2021-07-28 06:10:47

拖拽設(shè)計(jì)器 transmat

2021-10-29 07:49:22

Spring事務(wù)管理

2021-09-05 07:55:37

前端Emoji 表情

2022-12-05 09:08:12

微服務(wù)灰度發(fā)布

2012-10-12 10:13:26

eclips代碼編寫Editplus

2025-02-26 08:46:31

2020-05-13 14:15:25

if-else代碼前端

2019-10-30 21:19:42

技術(shù)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 九九综合| 精品国产一区二区三区久久 | 国产精品99久久久久久www | 欧美久久久久久久 | 久久久久一区 | 成人国产在线视频 | 中文字幕免费观看 | 日韩精品一区二区三区在线 | 一区二区三区国产精品 | 欧美在线一区二区三区 | 国产区一区二区三区 | 亚洲精品91 | 中文成人无字幕乱码精品 | 欧美三区在线观看 | 日本一卡精品视频免费 | 午夜性视频 | 精品毛片 | 九九久久精品 | av播播 | 国产精品1区| 男人的天堂在线视频 | 视频在线一区 | 天天操天天射天天 | 国产一区在线免费观看视频 | 日韩成年人视频在线 | 日韩在线观看一区 | 成人欧美一区二区三区视频xxx | 男人午夜视频 | 99精品在线 | www.玖玖玖 | 久久久女女女女999久久 | 天天草天天射 | 午夜激情免费 | 欧美色性 | 91久久视频 | 成人欧美一区二区三区在线播放 | 精品国产99 | 精品二区| 天天搞天天搞 | 欧美日韩三级在线观看 | 欧美激情国产精品 |