精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

聊聊這個有趣的話題:分布式單體

jf_ro2CN3Fa ? 來源:程序猿DD ? 2023-08-16 16:08 ? 次閱讀

這是一個或許對你有用的開源項目

國產 Star 破 10w+ 的開源項目,前端包括管理后臺 + 微信小程序,后端支持單體和微服務架構。

功能涵蓋 RBAC 權限、SaaS 多租戶、數據權限、商城、支付、工作流、大屏報表、微信公眾號等等功能:

Boot 地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro

Cloud 地址:https://gitee.com/zhijiantianya/yudao-cloud

視頻教程:https://doc.iocoder.cn

分布式單體為什么不好

改造走樣的元兇

1. 領域拆分的不合理,引出了過多的同步遠程調用

2. 簡單粗暴的實現,缺少分布式的保護機制

昨晚睡覺前,順手擼了幾個群聊的聊天記錄。發現一個很有意思的名詞“分布式單體 ”,順藤摸瓜看了一下之前的聊天記錄,由于內容罵罵咧咧,我就不貼出來了。大致內容就是某公司在做微服務改造,但改的不倫不類,形式上像微服務,而本質上依然是單體,甚至連單體都不如。

這樣的改造現象,其實在國內還是蠻多見的。今天我們就來聊聊這個有趣的話題分布式單體 。各位看官,看看你們公司是不是也犯了這樣的錯誤?

分布式單體為什么不好

先思考一個問題:從單體改造到微服務的時候,你們是不是按這樣的步驟來的?

確定業務領域,拆分存儲,定義各微服務的邊界

改造代碼邏輯,將原來的內部service調用改成dubbo或feign這樣的遠程調用

通過這樣的改造,我們得到了很多好處,比如:

代碼庫分開了,減少了麻煩的解決代碼沖突的困擾

CI/CD分開了,每個拆分后的服務都可以獨立開發、部署、運行

數據庫分開了,獨立運行,不同業務模塊不會互相影響

這樣一頓操作,我們把一個臃腫的單體應用變成了多個精煉的分布式應用,似乎完美的實現了改造?但這樣就實現了微服務的核心目標了嗎?繼續思考下面的問題:

代碼庫是分開了,但每個服務都在獨立迭代嗎?是不是每個需求都要協調一大堆同步接口?

CI/CD是分開了,但每次發布都是自由的嗎?是不是每次功能的發布都拖上了一大推的服務要一起發布?

數據庫是分開了,但似乎有個服務掛了,依然導致很多功能就都不正常了?

看似我們得到了很多好處,但我們的開發效率真的得到了提升嗎?雖然我們以前一個單體應用啟動要3分鐘,現在拆分后,一個項目啟動30秒,但每次開發調試要同時開好幾個項目同時啟動?這樣的開發體驗真的爽到了嗎?

看似完成了微服務改造,實則依然是個單體應用,只是從原本的集中式實現,變成是分布式實現。原來我們只是做了一次無用功,真正的收益微乎其微。

而實際上,這樣的改造,除了收益不高之外,還帶出了更多的壞處。如果你們公司是這樣做的,有沒有發現,這樣做之后,好像系統故障的頻率更高了?穩定性似乎比單體應用還差?(如果沒有,那一定要感謝你們的運維團隊真的很給力,同時建議把這篇轉給運維團隊,采訪下這樣的改造是不是他們變得更累了?!)

為什么這樣的改造會導致系統更加不穩定呢?其實道理很簡單,原本我們在單體應用中,未拆分的遠程調用都是內部調用,這個內部調用所能引發的故障率是微乎其微的,而將這部分內容拆成了遠程調用后,每一個調用都增加了網絡IO的因素,每一次調用的故障率都增加了。那么系統的整體故障率是隨著系統擁有多少同步遠程調用的數量增加而增加的。當運維團隊與開發水平沒有支持好這部分增加的復雜度時,那么改造的系統,必然穩定性會比原來的單體應用更差。

所以,這樣改造的結果,不但沒有得到很多的收益,反而會帶來很多穩定性上的損失。

基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://github.com/YunaiV/ruoyi-vue-pro

視頻教程:https://doc.iocoder.cn/video/

改造走樣的元兇

那么為什么會造成上面所說的問題呢?我覺得主要有兩方面:

1. 領域拆分的不合理,引出了過多的同步遠程調用

這個是最根本的問題,也是在改造過程中最常見的。這部分說實話是整個改造過程中最難的,因為需要對業務有非常深入的認識,對系統設計的領域模型、用戶行為有足夠的理解。在做拆分的時候,盡可能的減少同步遠程調用,取而代之的是走消息的異步交互,同時根據業務需要也可以做適當的數據冗余。這樣就能保證,每個被拆分后的微服務之間可以獲得更低耦合度。

因為更低的耦合度,我們才能在不做任何優化的情況下,獲得更少的分布式所帶來的穩定性損失。對于后面要將的第2點的工作量也就越少。同時,對于真正的獨立開發、部署、運行也成為可能。

2. 簡單粗暴的實現,缺少分布式的保護機制

在很多團隊里,因為業務需求多與人員配置少的矛盾之下,開發人員很容易出現對遠程調用不做足夠的保護機制,比如:接口提供方的限流策略(保護自己不被別人搞死),接口調用方的降級策略(保護業務更高的可用性),接口調用方的熔斷策略(保護自己不被別人拖死)。只有認真對待每一個分布式環境下的依賴點,那么才能解決因為分布式改造所牽連出的諸多問題。

但要做好這一點的核心,還是對第一點的把握,只有在領域模型上做更合理的拆分規劃,才能支持開發人員做好這個點,不然隨意的拆分,一大堆接口調用壓給本就壓力很大的開發人員,那這部分的開發質量肯定很難保障了,自然而然的系統穩定性就開始隨著接口復雜度的增加而不斷下降了。最后,開發人員就會開始來我們群里吐槽了...甚至大家也開始懷疑微服務根本帶不來效率的提升!

最后,思考一下,你們的微服務改造有出現這里我說的情況嗎?還是有其他不一樣的問題呢?歡迎留言區說說你們的問題,聊聊你的觀點!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 分布式
    +關注

    關注

    1

    文章

    880

    瀏覽量

    74470
  • 模型
    +關注

    關注

    1

    文章

    3178

    瀏覽量

    48730
  • 微服務
    +關注

    關注

    0

    文章

    134

    瀏覽量

    7328

原文標題:你以為在做的是微服務?不!你只是做了個比單體還糟糕的分布式單體!

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    分布式軟件系統

    分布式軟件系統分布式軟件系統(Distributed Software Systems)是支持分布式處理的軟件系統,是在由通信網絡互聯的多處理機體系結構上執行任務的系統。它包括分布式
    發表于 07-22 14:53

    分布式發電技術與微型電網

    幾種分布式發電簡介2.分布式發電與配電網互聯問題3.微型電網技術4.分布式發電(電源)技術應用的障礙和瓶頸5.分布式發電(電源)技術發展方向6.結語
    發表于 03-11 13:37

    分布式光伏發電安全性

    的特殊性,還是需要業主關心分布式光伏發電系統的整體安全性能,養成定期維護的良好習慣。南京研旭作為專業的光伏產業廠商之一,在光伏發電系統的建設方面也積累了深厚的行業經驗。如果您對分布式光伏發電產業的安全性有疑問的話,歡迎致電南京研
    發表于 10-12 15:35

    如何設計分布式干擾系統?

    ”的電子戰系統,共同完成對敵信號的探測、定位、干擾任務。因此,嵌入網關是分布式干擾系統研究的關鍵技術之一。目前國內對分布式干擾系統的研究還停留在理論基礎上,而對其關鍵技術的研究不多。怎么利用嵌入
    發表于 08-08 06:57

    分布式系統的優勢是什么?

    當討論分布式系統時,我們面臨許多以下這些形容詞所描述的 同類型: 分布式的、刪絡的、并行的、并發的和分散的。分布式處理是一個相對較新的領域,所以還沒有‘致的定義。與順序計算相比、并行的、并發的和
    發表于 03-31 09:01

    HarmonyOS應用開發-分布式設計

    設計理念HarmonyOS 是面向未來全場景智慧生活方式的分布式操作系統。對消費者而言,HarmonyOS 將生活場景中的各類終端進行能力整合,形成“One Super Device”,以實現
    發表于 09-22 17:11

    各種分布式電源的電氣特性

    PS:滲透率的概念:從字面上理解,“滲透”就是由分布式電源發出的功率進入(滲入)到配電系統,所謂的“率”就是由分布式電源發出的電和整個系統所消耗的電(或者說總發電量)的一個比值。各種分布式電源的電氣
    發表于 07-12 07:54

    如何高效完成HarmonyOS分布式應用測試?

    作者:liuxun,HarmonyOS測試架構師HarmonyOS是新一代的智能終端操作系統,給開發者提供了設備發現、設備連接、跨設備調用等豐富的分布式API。隨著越來越多的開發者投入到
    發表于 12-13 18:07

    聊聊關于架構的話題

     技術需要架構,芯片的架構,軟件需要架構,公司需要架構,建筑需要架構,產品需要架構,人也需要架構,聊聊架構的話題
    的頭像 發表于 09-28 02:48 ?2204次閱讀

    關于分布式系統的幾個問題

    本文摘自:華為云社區 作者:華為加拿大研究院軟件專家 Jet老師 小引 分布式系統是一個古老而寬泛的話題,而近幾年因為 大數據 概念的興起,又煥發出了新的青春與活力。本文將會通過對如下幾個問題展開談
    的頭像 發表于 09-23 16:28 ?3044次閱讀

    什么是鴻蒙分布式游戲?為什么要做分布式游戲?

    “鴻蒙”(Harmony)無疑是近期以來最為熱點的話題之一,而在技術層面上,“分布式”又是鴻蒙最核心的關鍵點之一,無論應用還是游戲都與之息息相關。
    的頭像 發表于 01-30 09:49 ?4592次閱讀

    華為鴻蒙系統之分布式游戲詳解

    “鴻蒙”(Harmony)無疑是近期以來最為熱點的話題之一,而在技術層面上,“分布式”又是鴻蒙最核心的關鍵點之一,無論應用還是游戲都與之息息相關。
    的頭像 發表于 01-30 10:42 ?7152次閱讀

    為什么需要分布式鎖 基于Zookeeper鎖安全嗎

    這篇文章我想和你聊一聊,關于 Redis 分布式鎖的「安全性」問題。 Redis 分布式的話題,很多文章已經寫爛了,我為什么還要寫這篇文章呢? 因為我發現網上 99% 的文章,并沒有把這個
    的頭像 發表于 08-10 18:06 ?5586次閱讀

    分享一個有趣的鴻蒙分布式小游戲

    ?? 今天給大家分享一個有趣的鴻蒙分布式小游戲:你畫我猜。 ??? ? 開發心得(如有錯誤還請大佬及時指正): ? 分布式流轉: 一個 APP 應用在設備之間互相拉起遷移,只在一個終端上運行
    的頭像 發表于 11-01 14:29 ?2502次閱讀
    分享一個<b class='flag-5'>有趣</b>的鴻蒙<b class='flag-5'>分布式</b>小游戲

    為什么需要分布式ID?求一種分布式ID生成方案

    對于單體系統來說,主鍵ID可能會常用主鍵自動的方式進行設置,這種ID生成方法在單體項目是可行的,但是對于分布式系統,分庫分表之后,就不適應了
    的頭像 發表于 01-09 10:43 ?1166次閱讀