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

微服務(wù)的顆粒度難題:找到合適的微服務(wù)大小

開發(fā)
關(guān)于服務(wù)顆粒度的主觀性,即什么是單一職責(zé),是我們作為開發(fā)人員在微服務(wù)顆粒度方面犯錯的地方。為了克服開發(fā)團(tuán)隊(duì)在確定微服務(wù)大小時面臨的困境,理解顆粒度的驅(qū)動因素是至關(guān)重要的。

前言

在微服務(wù)架構(gòu)風(fēng)格中,微服務(wù)通常按照單一職責(zé)原則(SRP)設(shè)計(jì),作為一個單獨(dú)部署的軟件單元,專注于做一件事情。我們作為開發(fā)人員往往傾向于盡可能將服務(wù)設(shè)計(jì)得更小,卻沒有考慮為什么要這樣做!關(guān)于服務(wù)顆粒度的主觀性,即什么是單一職責(zé),是我們作為開發(fā)人員在微服務(wù)顆粒度方面犯錯的地方。為了克服開發(fā)團(tuán)隊(duì)在確定微服務(wù)大小時面臨的困境,理解顆粒度的驅(qū)動因素是至關(guān)重要的。

顆粒度

在微服務(wù)中,有兩個概念——模塊化,涉及將系統(tǒng)拆分為獨(dú)立的部分,另一個是——顆粒度,涉及這些獨(dú)立部分的大小。

確定顆粒度的合適水平——服務(wù)的大小之一是微服務(wù)架構(gòu)中許多困難的部分,我們作為開發(fā)人員很難解決。顆粒度不是由服務(wù)中的類或代碼行數(shù)來定義的,而是由服務(wù)所做的事情決定的——因此,在正確確定服務(wù)顆粒度時存在這種難題。

服務(wù)的顆粒度分為兩種相反的力量——顆粒度分解器和顆粒度整合器。

顆粒度分解器

我應(yīng)該在什么時候考慮將服務(wù)拆分成更小的部分?然而,

我應(yīng)該在什么時候考慮將服務(wù)重新組合?

顆粒度分解器

由于我們生活在微服務(wù)和納米服務(wù)的時代,大多數(shù)開發(fā)團(tuán)隊(duì)通過隨意拆分服務(wù)并忽視隨之而來的后果而犯錯。為了找到合適的大小,應(yīng)該在不同的參數(shù)上進(jìn)行權(quán)衡分析,并根據(jù)微服務(wù)的上下文和邊界做出明智的決定。

顆粒度分解器的驅(qū)動因素為何拆分服務(wù)提供了指導(dǎo)和理由。讓我們看看這些驅(qū)動因素如何影響微服務(wù)大小的分析,以一個例子為例。

示例:考慮一個典型的通知服務(wù),負(fù)責(zé)通過短信、電子郵件或郵寄的紙質(zhì)信件通知客戶。

讓我們通過分解器驅(qū)動因素對這種情況進(jìn)行分析,并找到合適的大小。我們從以下開始:

1.服務(wù)范圍和功能

服務(wù)是否執(zhí)行了太多無關(guān)的事情?服務(wù)的范圍和功能主要取決于兩個屬性——首先是內(nèi)聚性,即特定服務(wù)操作的程度和方式相互關(guān)聯(lián)。第二個是組件的整體大小,通常用責(zé)任的數(shù)量、服務(wù)的入口點(diǎn)數(shù)量或兩者的組合來衡量。 場景:看看通知服務(wù),有人可能說將此服務(wù)拆分為三個單一用途的服務(wù)。但這是正確的嗎?答案是否定的!因?yàn)檫@個服務(wù)具有相對強(qiáng)的內(nèi)聚性,即所有這些功能都與一個目標(biāo)相關(guān),即通知,并且具有一個單一的目的。因此,無需拆分服務(wù),因?yàn)樗鼞?yīng)該是一個執(zhí)行三個任務(wù)的服務(wù)。接下來是:

2.代碼波動

更改是否僅限于服務(wù)的某一部分?代碼波動是源代碼更改的速率。我們必須衡量服務(wù)中源代碼更改的頻率,這有助于充分理由拆分服務(wù)。

場景:假設(shè)我們對服務(wù)功能有以下指標(biāo):

現(xiàn)在,如果我們按照更改的度量標(biāo)準(zhǔn)進(jìn)行分析,郵寄信件通知部分的頻繁更改也要求測試短信和電子郵件,因此作為單個服務(wù),它增加了測試范圍和部署風(fēng)險。那么我們該如何解決呢?

如果我們將此服務(wù)拆分為兩個獨(dú)立服務(wù),電子通知和郵寄通知,頻繁的更改現(xiàn)在隔離到其自己的服務(wù)中,因此測試范圍減小,部署風(fēng)險降低。

3.可擴(kuò)展性和吞吐量

服務(wù)的部分是否需要以不同的方式擴(kuò)展?可以客觀地測量服務(wù)不同功能的可擴(kuò)展性需求,以量化服務(wù)是否應(yīng)該被拆分。

場景:再次考慮通知服務(wù)示例,測量單個服務(wù)的可擴(kuò)展性需求如下:

在這種情況下,作為單個服務(wù),電子郵件和郵寄信件功能必須不必要地?cái)U(kuò)展以滿足短信通知的需求,影響成本和彈性,即啟動的平均時間。這完全證明了將通知服務(wù)拆分為獨(dú)立服務(wù)——短信、電子郵件和信件,因?yàn)樗试S每個服務(wù)獨(dú)立擴(kuò)展以滿足其各自不同的吞吐量需求。

4.容錯性

是否存在導(dǎo)致服務(wù)內(nèi)關(guān)鍵功能失敗的錯誤?在特定領(lǐng)域內(nèi)應(yīng)用程序即使發(fā)生致命崩潰(例如OOM),仍然能夠繼續(xù)運(yùn)行的能力。 場景:考慮到通知服務(wù)的情況,假設(shè)電子郵件功能繼續(xù)出現(xiàn)OOM錯誤并發(fā)生致命崩潰,整個合并服務(wù)會中斷,包括短信和郵寄信件處理。將這個單一的合并通知服務(wù)拆分成三個獨(dú)立服務(wù)為客戶通知領(lǐng)域提供了一定程度的容錯性。因此,電子郵件功能的致命錯誤不會影響短信或郵寄信件。

進(jìn)一步:現(xiàn)在這里可能會出現(xiàn)一個問題,因?yàn)殡娮余]件是唯一與頻繁崩潰有關(guān)的問題,為什么不將短信和郵寄信件功能合并?這是一個合理的問題。如果記得,當(dāng)我們討論代碼波動的情景時,我們將郵寄信件與電子郵件分開,然后將短信和郵寄信件合并成一個——電子通知。如果我們在那里能夠做到這一點(diǎn),為什么在這里不行呢?因?yàn)殡娮余]件和短信是相關(guān)的,它們都是電子通知的一部分。但在這里,短信和郵寄通知沒有任何共同之處,無法合并。

注意:記住,如果一個服務(wù)因?yàn)樗鼒?zhí)行多個無關(guān)的任務(wù)而難以命名,那么考慮拆分該服務(wù)。其次,無論出于哪種驅(qū)動因素拆分服務(wù),都要始終檢查是否可以通過“剩余”功能形成強(qiáng)內(nèi)聚性。因此,將通知服務(wù)分解為三個獨(dú)立服務(wù)在這里是有道理的。最后但并非最不重要的驅(qū)動因素是:

5.可擴(kuò)展性

服務(wù)是否始終在擴(kuò)展以添加新功能?在服務(wù)擴(kuò)展時添加附加功能的能力。 場景:假設(shè)我們要向通知服務(wù)添加新功能,例如移動推送通知、桌面通知、社交媒體通知等。這些新功能當(dāng)然可以添加到單個合并的通知服務(wù)中。然而,每次添加新的通知時,整個通知服務(wù)都需要進(jìn)行測試,并且所有通知的功能都需要不必要地部署到生產(chǎn)環(huán)境。

注意:僅在事先知道計(jì)劃并希望將額外的合并功能作為領(lǐng)域的一部分時才應(yīng)用此場景。

推薦做法

  • 如果一個服務(wù)因?yàn)閳?zhí)行多個無關(guān)的任務(wù)而難以命名,那么考慮拆分該服務(wù)。
  • 無論出于哪種驅(qū)動因素拆分服務(wù),都要始終檢查是否可以通過“剩余”功能形成強(qiáng)內(nèi)聚性。
  • 拆分服務(wù)時,根據(jù)業(yè)務(wù)能力而不是技術(shù)能力進(jìn)行檢查。
  • 在設(shè)計(jì)微服務(wù)時使用單一職責(zé)原則(SRP),但要牢記強(qiáng)內(nèi)聚性的全局圖景。
  • 最后,使用分解器驅(qū)動因素分析拆分服務(wù)的權(quán)衡。
責(zé)任編輯:趙寧寧 來源: 小技術(shù)君
相關(guān)推薦

2024-07-02 14:23:12

2022-04-11 17:33:29

微服務(wù)架構(gòu)單體

2020-05-28 22:41:54

微服務(wù)架構(gòu)并發(fā)量

2016-09-22 15:36:15

微服務(wù)架構(gòu)

2019-02-22 09:12:33

微服務(wù)架構(gòu)服務(wù)化

2023-12-04 07:14:40

通信微服務(wù)

2019-09-10 11:34:23

軟件技術(shù)數(shù)據(jù)庫

2020-08-14 09:27:50

微服務(wù)容器架構(gòu)

2020-12-17 10:34:47

微服務(wù)分布式系統(tǒng)

2023-07-27 14:03:51

微服務(wù)

2021-12-29 08:30:48

微服務(wù)架構(gòu)開發(fā)

2024-07-02 10:58:53

2024-11-06 16:27:12

2024-10-28 08:00:00

微服務(wù)架構(gòu)開發(fā)

2020-12-10 10:04:45

微服務(wù)Kubernetes容器

2018-12-12 09:59:47

微服務(wù)架構(gòu)分布式系統(tǒng)

2018-10-28 18:09:22

微服務(wù)Microservic架構(gòu)

2023-07-28 09:23:24

微服務(wù)架構(gòu)

2022-08-14 07:04:44

微服務(wù)架構(gòu)設(shè)計(jì)模式
點(diǎn)贊
收藏

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

主站蜘蛛池模板: japan21xxxxhd美女| 久久人人国产 | 电影91久久久 | 日本视频在线播放 | 久久99这里只有精品 | 欧洲一区二区三区 | 波多野结衣一区二区 | 国产精品毛片 | 永久精品 | 欧美一区在线视频 | www亚洲免费国内精品 | 人人玩人人干 | 成人在线播放网站 | 欧美成人一区二区三区 | 手机看黄av免费网址 | 亚洲精品国产第一综合99久久 | 91porn在线观看| 日本一本视频 | 欧美中文字幕在线观看 | 自拍偷拍第一页 | 69av网| 中文字幕爱爱视频 | 成人欧美一区二区三区黑人孕妇 | 在线国产一区二区 | a级在线观看 | 在线亚洲精品 | 亚洲国产成人精品女人久久久 | 91正在播放 | 中文在线a在线 | 日本五月婷婷 | a级片在线观看 | 请别相信他免费喜剧电影在线观看 | 成人网址在线观看 | 欧美国产精品一区二区 | 亚洲国产精品自拍 | 欧美日韩不卡合集视频 | 久久久九九九九 | 欧美成人精品一区二区男人看 | 欧美aⅴ片 | 在线免费看毛片 | 中文字幕综合 |