日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

從單體架構(gòu)向微服務(wù)遷移:模塊化單體是如何幫助的

來源: 責(zé)編: 時間:2023-12-20 09:23:41 266觀看
導(dǎo)讀你開始構(gòu)建一個漂亮的單體系統(tǒng)。也許是一個模塊化的單體系統(tǒng)。隨著時間的推移,系統(tǒng)不斷增長,需求也在不斷變化。漸漸地,系統(tǒng)開始出現(xiàn)裂痕。這可能是出于組織原因,需要在團(tuán)隊(duì)之間分配工作。也可能是由于擴(kuò)展性問題和性能瓶

你開始構(gòu)建一個漂亮的單體系統(tǒng)。也許是一個模塊化的單體系統(tǒng)。隨著時間的推移,系統(tǒng)不斷增長,需求也在不斷變化。漸漸地,系統(tǒng)開始出現(xiàn)裂痕。VDd28資訊網(wǎng)——每日最新資訊28at.com

這可能是出于組織原因,需要在團(tuán)隊(duì)之間分配工作。也可能是由于擴(kuò)展性問題和性能瓶頸。你開始評估可能的解決方案,以及每種解決方案的優(yōu)勢和權(quán)衡。最后,你做出了一個決定。是時候?qū)⑾到y(tǒng)的部分部分遷移到獨(dú)立的(微)服務(wù)中了。VDd28資訊網(wǎng)——每日最新資訊28at.com

那么,我們?nèi)绾螐膯误w架構(gòu)遷移到微服務(wù)呢?VDd28資訊網(wǎng)——每日最新資訊28at.com

VDd28資訊網(wǎng)——每日最新資訊28at.com

使用有界上下文進(jìn)行解耦

從單體架構(gòu)轉(zhuǎn)移到微服務(wù)的第一步是識別有界上下文。因?yàn)樗鼈兇砹丝捎糜谔崛〉念I(lǐng)域的內(nèi)聚部分。VDd28資訊網(wǎng)——每日最新資訊28at.com

一個解決方案是使用領(lǐng)域驅(qū)動設(shè)計(jì)戰(zhàn)略建模來識別有界上下文。VDd28資訊網(wǎng)——每日最新資訊28at.com

有界上下文定義了模塊之間的顯式邊界,并分離了各自的責(zé)任。這是遷移到微服務(wù)時面臨的最大挑戰(zhàn)之一。確定良好的邊界確保微服務(wù)專注于一個問題領(lǐng)域。VDd28資訊網(wǎng)——每日最新資訊28at.com

在單體中定義邊界也更容易,因?yàn)槟悴皇窃谔幚矸植际较到y(tǒng)。重構(gòu)不良邊界風(fēng)險較低,你有更多自由度去“搞定”。VDd28資訊網(wǎng)——每日最新資訊28at.com

VDd28資訊網(wǎng)——每日最新資訊28at.com

接下來你需要解決的問題是耦合。耦合表現(xiàn)為兩種方式:VDd28資訊網(wǎng)——每日最新資訊28at.com

  • 數(shù)據(jù)庫依賴
  • 模塊間的通信

你可以通過構(gòu)建模塊化單體來從一開始解決這些問題。但我也會解釋你可以使用的指導(dǎo)原則來解決耦合。VDd28資訊網(wǎng)——每日最新資訊28at.com

模塊化單體如何解決耦合

模塊化單體是一個響亮的名字,指的是由幾個有界上下文(模塊)構(gòu)建的單體系統(tǒng),并遵循一系列控制耦合的原則。每個模塊包含一組內(nèi)聚的功能,并且在系統(tǒng)中與其他模塊隔離。這種隔離涉及數(shù)據(jù)庫依賴和模塊間的通信。VDd28資訊網(wǎng)——每日最新資訊28at.com

VDd28資訊網(wǎng)——每日最新資訊28at.com

你可以把一個模塊看作系統(tǒng)中的一個獨(dú)立應(yīng)用程序。一個模塊擁有自己的領(lǐng)域、實(shí)體、用例和數(shù)據(jù)庫表。模塊作為一個單一可執(zhí)行應(yīng)用程序一起部署。但在其他方面它們是獨(dú)立的。VDd28資訊網(wǎng)——每日最新資訊28at.com

你可以對每個模塊應(yīng)用不同的架構(gòu)方法,比如清晰架構(gòu)。VDd28資訊網(wǎng)——每日最新資訊28at.com

我提到你需要減少模塊間的耦合。VDd28資訊網(wǎng)——每日最新資訊28at.com

以下是解決數(shù)據(jù)庫耦合的兩個原則:VDd28資訊網(wǎng)——每日最新資訊28at.com

  • 模塊不能在數(shù)據(jù)庫中共享表
  • 模塊不能直接查詢其他模塊的數(shù)據(jù)庫表

共享數(shù)據(jù)庫表會導(dǎo)致高度耦合,而這恰恰是你要避免的。你可以使用模式在邏輯層面或物理上使用不同的數(shù)據(jù)庫為每個模塊隔離數(shù)據(jù)。VDd28資訊網(wǎng)——每日最新資訊28at.com

一個模塊應(yīng)該暴露一個其他模塊可以調(diào)用的公共 API。這個公共 API 是模塊的入口點(diǎn)。這是模塊間通信的唯一方式。VDd28資訊網(wǎng)——每日最新資訊28at.com

模塊間通信可以是同步的,使用方法調(diào)用,或者異步的,使用消息總線。VDd28資訊網(wǎng)——每日最新資訊28at.com

我更傾向于使用消息傳遞的異步通信。它耦合度低,使得向微服務(wù)的轉(zhuǎn)變更加容易。VDd28資訊網(wǎng)——每日最新資訊28at.com

為系統(tǒng)添加消息代理

為了在模塊間實(shí)現(xiàn)異步通信,你可以引入一個消息代理。但你無需從一開始引入一個完整的消息代理。VDd28資訊網(wǎng)——每日最新資訊28at.com

你可以使用諸如MassTransit這樣的抽象來在模塊之間實(shí)現(xiàn)消息傳遞,同時將傳輸機(jī)制抽象化。VDd28資訊網(wǎng)——每日最新資訊28at.com

MassTransit 有一個內(nèi)存?zhèn)鬏敊C(jī)制,可以很好地在單個進(jìn)程中工作。它非??焖?。但它不是持久化的,如果總線停止,你可能會丟失消息。VDd28資訊網(wǎng)——每日最新資訊28at.com

在引入真正的消息代理時,你只需要配置不同的傳輸機(jī)制。但你不需要改變你的消息傳遞代碼。VDd28資訊網(wǎng)——每日最新資訊28at.com

VDd28資訊網(wǎng)——每日最新資訊28at.com

在模塊化單體中引入消息傳遞的目的是什么?VDd28資訊網(wǎng)——每日最新資訊28at.com

這樣設(shè)計(jì)系統(tǒng)可以使模塊之間松耦合和獨(dú)立。在項(xiàng)目成熟后,你在開始時增加的復(fù)雜性是合理的。VDd28資訊網(wǎng)——每日最新資訊28at.com

將模塊提取到微服務(wù)中

我們決定從單體系統(tǒng)遷移到微服務(wù)。因?yàn)槲覀円阅K化的方式構(gòu)建了系統(tǒng),所以遷移的關(guān)鍵在于將一個模塊提取到一個新的進(jìn)程中。VDd28資訊網(wǎng)——每日最新資訊28at.com

你應(yīng)該在服務(wù)前面引入一個反向代理,來路由進(jìn)入的流量。這將隱藏微服務(wù)系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié),不讓客戶端應(yīng)用程序知道。VDd28資訊網(wǎng)——每日最新資訊28at.com

新的微服務(wù)需要連接到消息總線,但我們不需要在代碼中做任何改變。使用消息傳遞在模塊之間進(jìn)行通信簡化了遷移過程。這可能讓你想起事件驅(qū)動架構(gòu)。VDd28資訊網(wǎng)——每日最新資訊28at.com

如果你使用方法調(diào)用來實(shí)現(xiàn)模塊間通信,你必須將這種實(shí)現(xiàn)替換為通過網(wǎng)絡(luò)的 HTTP 調(diào)用。因?yàn)槟悻F(xiàn)在正在構(gòu)建一個分布式系統(tǒng),之前的方法調(diào)用實(shí)現(xiàn)將無法工作。你還需要考慮認(rèn)證、容錯等問題……VDd28資訊網(wǎng)——每日最新資訊28at.com

VDd28資訊網(wǎng)——每日最新資訊28at.com

從單體系統(tǒng)中提取模塊會用新微服務(wù)的功能替換舊系統(tǒng)的所有功能。這個遷移到微服務(wù)的過程遵循了榕樹模式。VDd28資訊網(wǎng)——每日最新資訊28at.com

總結(jié)思考

從單體架構(gòu)遷移到微服務(wù)的最大障礙是耦合。耦合是變更的阻止者。因此,這是你需要解決的第一件事。VDd28資訊網(wǎng)——每日最新資訊28at.com

你需要在數(shù)據(jù)庫層面和代碼中的組件間解決耦合。以模塊化的方式構(gòu)建系統(tǒng)可以從一開始就避免這些問題。VDd28資訊網(wǎng)——每日最新資訊28at.com

這就是為什么模塊化單體是一個很好的方法。VDd28資訊網(wǎng)——每日最新資訊28at.com

你可以在系統(tǒng)中識別有界上下文,并將它們用作單體中的邊界。在單體中正確劃分邊界要容易得多。VDd28資訊網(wǎng)——每日最新資訊28at.com

遷移到微服務(wù)就是將模塊提取到獨(dú)立服務(wù)的過程。VDd28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)然,你仍然需要考慮安全性和容錯性,因?yàn)楝F(xiàn)在你有了一個分布式系統(tǒng)。VDd28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)談?wù)摮橄蟮募軜?gòu)時,可能難以理解,但在討論概念性解決方案時卻是很重要的。VDd28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-50038-0.html從單體架構(gòu)向微服務(wù)遷移:模塊化單體是如何幫助的

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Golang 清晰代碼指南

下一篇: 四大軟件架構(gòu):掌握單體、分布式、微服務(wù)、Serverless 的精髓

標(biāo)簽:
  • 熱門焦點(diǎn)
  • K60至尊版剛預(yù)熱 一加Ace2 Pro正面硬剛

    Redmi這邊剛?cè)缁鹑巛钡男麄髁薑60 Ultra的各種技術(shù)和硬件配置,作為競品的一加也坐不住了。一加中國區(qū)總裁李杰發(fā)布了兩條微博,表示在自家的一加Ace2上早就已經(jīng)采用了和PixelWo
  • 6月安卓手機(jī)好評榜:魅族20 Pro蟬聯(lián)冠軍

    性能榜和性價比榜之后,我們來看最后的安卓手機(jī)好評榜,數(shù)據(jù)來源安兔兔評測,收集時間2023年6月1日至6月30日,僅限國內(nèi)市場。第一名:魅族20 Pro好評率:95%5月份的時候魅族20 Pro就是
  • JavaScript 混淆及反混淆代碼工具

    介紹在我們開始學(xué)習(xí)反混淆之前,我們首先要了解一下代碼混淆。如果不了解代碼是如何混淆的,我們可能無法成功對代碼進(jìn)行反混淆,尤其是使用自定義混淆器對其進(jìn)行混淆時。什么是混
  • 2023年,我眼中的字節(jié)跳動

    此時此刻(2023年7月),字節(jié)跳動從未上市,也從未公布過任何官方的上市計(jì)劃;但是這并不妨礙它成為中國最受關(guān)注的互聯(lián)網(wǎng)公司之一。從2016-17年的抖音強(qiáng)勢崛起,到2018年的“頭騰
  • 破圈是B站頭上的緊箍咒

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準(zhǔn)追劇女孩們的古偶劇集,2021年有優(yōu)酷的《山河令》,2022年有愛奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 一條抖音4億人圍觀 ! 這家MCN比無憂傳媒還野

    作者:Hiu 來源:互聯(lián)網(wǎng)品牌官01 擦邊少女空降熱搜,幕后推手曝光被網(wǎng)友譽(yù)為“純欲天花板”的女網(wǎng)紅井川里予,近期因?yàn)橐唤M哥特風(fēng)照片登上熱搜,引發(fā)了一場互聯(lián)網(wǎng)世界關(guān)于
  • 華為Mate60標(biāo)準(zhǔn)版細(xì)節(jié)曝光:經(jīng)典星環(huán)相機(jī)模組回歸

    這段時間以來,關(guān)于華為新旗艦的爆料日漸密集。據(jù)此前多方爆料,今年華為將開始恢復(fù)一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • Windows 11發(fā)布,微軟一改往常對老機(jī)型開放的態(tài)度

    距離 Windows 11 發(fā)布已經(jīng)過去一周,在過去一周里,很多數(shù)碼愛好者圍繞其對 Android 應(yīng)用的支持、對老機(jī)型的升級問題展開了激烈討論。與以往不同的是,在這次大
  • 電博會上海爾智家模擬500平大平層,還原生活空間沉浸式體驗(yàn)

    電博會為了更好地讓參展觀眾真正感受到智能家居的絕妙之處,海爾智家的程傳嶺先生同樣介紹了展會上海爾智家的模擬500平大平層,還原生活空間沉浸式體驗(yàn)。程傳
Top 主站蜘蛛池模板: 长阳| 阿拉尔市| 十堰市| 天祝| 胶州市| 益阳市| 泊头市| 秦皇岛市| 木兰县| 兰溪市| 杭锦后旗| 镇平县| 彭泽县| 福清市| 商都县| 长白| 明溪县| 故城县| 富裕县| 河东区| 德保县| 鹿邑县| 井冈山市| 沅江市| 嘉善县| 大化| 盘锦市| 元氏县| 开阳县| 牟定县| 浮梁县| 临漳县| 外汇| 喀喇沁旗| 周口市| 青阳县| 广东省| 安徽省| 耒阳市| 石屏县| 秦安县|