實體服務是一種反模式
在微服務架構中,最重要的是要保持服務間的隔離。實體服務(Entity Service)是被廣泛應用於微服務架構上的一種模式,但其實它是一種反模式,因為它背離了服務隔離的原則。Michael Nygard在他的微服務系列部落格中提到了這一點。
\\Nygard是“Release It!”的作者,他說實體服務被用於解決一個非常常見的問題,在微軟的一本關於微服務架構的電子書中和Spring的兩個教程中均用到了這種模式。
\\在Nygard看來,反模式只會讓事情變得更糟。為了說明實體服務是一種反模式,他使用一個大型的遺留單體作為例子。這個應用程式有多個例項,每個例項都包含了所有特性:
\\\\根據Spring的教程,使用微服務架構對這個應用程式進行重構,將特性分解到單獨的服務中。但Nygard說,大部分特性仍然需要多個實體,這樣就會在多個實體之間形成依賴。比如,計算購物車的價錢需要所有服務的介入:
\\\\Nygard認為,這些依賴會造成耦合,從而影響可用性、效能和容量。他還強調說,這些依賴導致語義上的耦合,一個服務的變更會波及到其他服務。在最糟糕的情況下,這樣會導致一個服務需要與不同版本的服務打交道。
\\Nygard總結了在微服務架構中使用實體服務將會產生的結果:
\\- 團隊仍然可以按照他們的節奏釋出服務。\\\t
- 語義上的耦合導致了跨團隊的協商。\\\t
- 大量請求需要呼叫實體服務,增加了流量負載。\\\t
- 整體的可用性取決於更多的服務。\
基於以上幾點,Nygard認為實體服務是一種反模式。
\\來自Fourth.com的首席架構師Ben Morris在另一篇博文中引用了Nygard的文章,他說,在微服務架構中使用實體服務比單體架構還要糟糕。Morris認為,微服務的優勢之一就是它的自治性,但細粒度的服務越多,它們之間的耦合就越大,從而降低了自治性。他強調說,流程的變更會變得很困難,因為困難涉及到大量的服務,而如果服務是由不同的開發團隊進行維護的,那麼變更會變得更加困難。使用大量小型耦合服務的另一個風險在於,一個服務發生故障會產生級聯效應,影響到更多的服務。
\\Nygard的博文引發了長時間的討論。微軟那本電子書的作者說,他們在書中已經針對使用HTTP呼叫來耦合微服務這樣的做法提供了警告。他也強調,正確使用領域模型可以提升微服務的自治性。
\\在Nygard後續的博文中,他將會介紹實體服務的替代方案。
\\相關文章
- AI人工智慧的業務模式不同於傳統軟體,實則是一種服務型企業模式 -Andreessen HorowitzAI人工智慧模式
- 為什麼Event Sourcing是一種微服務通訊反模式 - Oliver Libutzki微服務模式
- 打通微信和釘釘服務是一種怎樣的體驗?
- [譯] JavaScript 的函數語言程式設計是一種反模式JavaScript函數程式設計模式
- 自媒體+雲桌面是一種什麼模式?模式
- 單體模式部署Loki服務模式Loki
- Spotify模型的統一運維開發者門戶Backstage是一種反模式 - lastweekinaws模型運維模式AST
- 運維一款月變更70+次的服務,是一種什麼體驗?運維
- [譯] 通知是一種「暗模式」嗎?模式
- 決策表模式: 一種業務規則引擎實現方式模式
- Knative是FaaS的反模式嗎?模式
- 系列:開源是一種開發模式、商業模式還是其他什麼?(一)模式
- 蘋果,你還是一家軟體服務公司嗎?蘋果
- 服務限流,我有6種實現方式…
- 設計+雲桌面是一種什麼模式模式
- 家政服務平臺的商業模式是什麼模式
- 模式:每個服務一個資料庫模式資料庫
- 服務容錯模式模式
- 【go】【rpc】【同一埠,提供多種服務】GoRPC
- 物聯網將變成一種服務
- Go 語言中常見的幾種反模式Go模式
- 雲端計算的三種服務模式:IaaS,PaaS和SaaS模式
- GRPC 服務呼叫實踐(一)RPC
- 客戶成功是一種思維模式 | ONES 人物模式
- Optional.isPresent()是反模式的用法 - stephan模式
- Java的Void方法是反模式的? - DZoneJava模式
- Linux環境下安裝配置vsftpd服務(三種認證模式)LinuxFTP模式
- 亞馬遜計劃開設更多實體店擴充Prime服務種類亞馬遜
- 高度自律是一種什麼體驗??
- “一學就會,一做就廢”微服務的架構模式:一個服務一個資料庫模式微服務架構模式資料庫
- Spring Boot微服務是一種安全的SOASpring Boot微服務
- 容器服務 TKE 上服務暴露的幾種方式
- 健康醫療服務平臺的商業模式是什麼模式
- 推特:即使是川普 違反服務條款也會被封號
- shell——一鍵部署服務實戰
- ICT 服務,一站就Go!新華三商城開創ICT服務新模式Go模式
- 通過CaaS理解雲服務三種模式的區別:IaaS,PaaS,SaaS模式
- 細說TF服務鏈丨服務鏈的冗餘是如何實現的
- [翻譯]微服務設計模式 - 5. 服務發現 - 服務端服務發現微服務設計模式服務端