《電子技術應用》
您所在的位置:首頁 > 人工智能 > 業(yè)界動態(tài) > 放棄微服務,,構建單體應用

放棄微服務,,構建單體應用

2021-10-29
來源:CSDN
關鍵詞: 微服務 單體應用

  噩夢般的數(shù)據(jù)管理

  跨多個微服務保持數(shù)據(jù)同步是一個很大的難題,。

  通常人們推薦的方式是每個微服務一個數(shù)據(jù)庫,。這樣不僅可以實現(xiàn)松散耦合,,而且還可以讓各個服務的團隊獨立運作,,同時不會影響共享代碼的協(xié)作速度,。

  然而,,如果兩個微服務應該互相同步,,但其中一個發(fā)生故障,,后果會怎樣?例如,,其中一個微服務更新了數(shù)據(jù)庫,,而另一個沒有。這樣的狀況會導致數(shù)據(jù)的不一致,。

  根據(jù)我的個人經(jīng)驗,,跨服務調(diào)查數(shù)據(jù)的不一致會非常痛苦。由于錯誤跨多個服務,,因此需要某個人跨多個服務修正錯誤,。不幸的是,這導致微服務喪失了其優(yōu)勢之一:每項服務由一個開發(fā)團隊負責,。

  而單體應用則可以通過一個原子事務打包兩個數(shù)據(jù)庫調(diào)用,,保證兩個插入操作都成功或都失敗,從而輕松防止出現(xiàn)相同的情況,。十分簡單,。

  但是對于微服務,松散耦合導致這些操作變得更加困難,。

  設置時間更長

  構建微服務架構所需的時間比將相同的功能整合到單體應用更長,。雖然微服務的一個服務很簡單,但交互的服務集合比類似的單體應用要復雜得多,。

  單體應用中的函數(shù)可以調(diào)用任何其他公共函數(shù),。但是微服務中的函數(shù)僅限于調(diào)用同一個微服務中的函數(shù),。這就導致服務之間需要通信。而構建通信所需的API或消息系統(tǒng)并非易事,。

  此外,,微服務之間的代碼重復無法避免。單體應用則可以定義一個模塊,,并多次導入,,而微服務本身就是應用,所有的模塊和庫定義都在內(nèi)部,。

  微服務更適合大型團隊

  將微服務分配給每個團隊的做法更適合大型工程團隊,。

  盡管這是該架構的優(yōu)勢之一,但只有當工程團隊有足夠的人手,,可以為每個服務分配多名工程時,,這種優(yōu)勢才能發(fā)揮出來??s小代碼的范圍,可以讓開發(fā)人員更好地理解代碼,,并提高開發(fā)速度,。

  然而,大多數(shù)創(chuàng)業(yè)公司并沒有這樣奢侈的資源,。創(chuàng)業(yè)早期,,公司的資源往往不足,有些工程師需要負責所有的服務,。不幸的是,,開發(fā)人員的思維需要在多個應用之間來回跳躍,因此會導致生產(chǎn)力低下,。

  此外,,跨多個陌生的微服務調(diào)查 bug 真心累。

  開發(fā)運維更加復雜

  絕大多數(shù)人選擇微服務的主要原因之一就在于,,能夠在多個不同類型的服務器上運行不同的服務,。

  為什么?React 前端的需求完全不同于訓練機器學習模型的服務,,比如內(nèi)存,、CPU 和正常運行的時間等。針對每個服務選擇正確的基礎設施可以大大降低成本,。但同時也會帶來挑戰(zhàn),。舉個例子,在職業(yè)生涯的早期,,我曾經(jīng)造成了大量生產(chǎn)數(shù)據(jù)丟失,,因為在更新完某個服務的代碼后,,我忘了重啟服務,舊代碼通過API請求接收數(shù)據(jù),,然后出錯了,,未能成功地將這些數(shù)據(jù)保存到數(shù)據(jù)庫,也沒有報錯,。所以,,數(shù)據(jù)永久地丟失了。

  我舉這個例子是為了說明與單體應用相比,,配置,、維護和監(jiān)控多個微服務需要付出更多的努力。此外,,擁有多個應用也會導致黑客攻擊的途徑增加,。

  理論上,“松散耦合”可以保證某個服務發(fā)生故障時,,其他服務繼續(xù)運行,。但這只是癡人說夢,對于業(yè)務非常復雜的客戶來說,,真正實現(xiàn)松散耦合幾乎是不可能的,。

  最后,架構的可靠程度取決于最薄弱的環(huán)節(jié),?;顒拥牟糠衷蕉啵鲥e的概率就越大,。

  總結

  雖然許多公司都采用了微服務,,但實際上并沒有必要。盡管如今微服務的人氣很高,,但并不適合初創(chuàng)公司,。

  對于大多數(shù)公司來說,單體應用才是更好的選擇,。等到有必要時,,再將單體應用的各個部分拆分為微服務。

  當然,,資金雄厚的大型科技公司完全可以從零開始構建微服務架構,。

  對于剛起步的創(chuàng)業(yè)公司來說,微服務并不適合,,而且還會浪費大量的時間和精力,。




1.png

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點,。轉載的所有的文章,、圖片、音/視頻文件等資料的版權歸版權所有權人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權者,。如涉及作品內(nèi)容、版權和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]