日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深造分布式 打败面试官 招式一 小试牛刀

發布時間:2024/1/8 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深造分布式 打败面试官 招式一 小试牛刀 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

分布式系統和單體系統之間到底有什么區別?

    • 前言
      • 問題
      • 解答
      • 演變
      • 提出問題
      • 問題分析
      • Case1: 為什么系統構建的主流方式會從單體系統演變到現在的分布式系統?
      • Case2:傳統單體系統存在哪些核心問題
      • Case3:相較單體系統,分布式系統具體有哪些優勢?
      • Case 4 :分布式系統的本質特性
        • 網絡傳輸的三態性
        • 請求的容錯性
        • 系統的異構性
        • 數據的一致性
    • 結尾

前言

無論是傳統系統、還是互聯網應用,分布式無疑是當下軟件設計和實現的主流技術體系。

圍繞分布式系統(Distributed System)的基本概念以及實現方式,開發人員需要掌握一系列對應的技術組件。另一方面,我們也需要認識到分布式系統的誕生并不是一蹴而就的,而是從傳統的單體系統(Monolith System)發展和演進而來。可以認為,分布式系統是對單體系統的一種改進,但這種改進同樣也帶來了復雜度和實現難度。

問題

那么,究竟什么是分布式系統?分布式系統和單體系統之間到底有什么區別?本講內容將圍繞這一問題展開討論。

解答

相信你對單體系統并不陌生,現實中很多單體系統都還運行在生產環境中。那么,什么樣的系統是單體系統呢?

所謂的單體系統,簡單來說,就是只包含一個物理組件的系統,能夠獨立進行部署和運行。下圖展示的就是一個典型的單體系統結構圖,可以看到在單體系統內部可以采用分層的方式合理組織代碼結構,但從物理上看就是一個能夠獨立運行的應用程序,服務都在同一個模塊里面 所以我們在使用的時候不會出現服務之間的配合系統的復雜度比較低 同時整個項目的復雜度相對于分布式相對較低 但是單模塊的體積比較大 容錯率比較低。

演變

現在,讓我們往上圖中再添加一個單體系統,這樣整個系統就有了兩個能夠獨立運行的應用程序。顯然,它們可以有自己的數據庫,并通過網絡通信完成交互,這就構成了一種分布式系統。如下圖所示:

在上圖中,雖然我們只是簡單把兩個獨立的單體系統組合在了一起,但是從系統本身而言卻發生了本質性的變化。原本一個單體系統可以完成的操作現在就需要兩個系統之間的有效協作,這顯然增加了系統的復雜度。但在這背后,也為我們更好地利用系統資源、構建合理的架構體系提供了基礎。在日常開發過程中,我們在引入分布式系統時需要分析具體的應用場景和需求,等同于 用復雜度換資源的合理利用 在剛使用分布式系統的時候 我們首先感覺的是復雜 一個數據可能需要多個服務之間的配合 但是從長遠來看等到項目有一定規模 分布式的好處就會慢慢的體現出來

從面試角度講,關于分布式系統的討論往往比較發散,屬于典型的概念類面試題。但凡概念類的面試題,提問的方式通常是比較靈活的。關于單體系統和分布式系統的相關概念,以下幾種提問方式都屬于同一類的面試題:

提出問題

  • 為什么系統構建的主流方式會從單體系統演變到現在的分布式系統?
  • 傳統單體系統存在哪些核心問題?
  • 相較單體系統,分布式系統具體有哪些優勢?
  • 分布式系統的本質特性有哪些?

問題分析

任何系統設計方法和思想的誕生都具有一定的背景和條件,這點對于單體系統和分布式系統同樣如此。

Case1: 為什么系統構建的主流方式會從單體系統演變到現在的分布式系統?

在互聯網時代還沒有到來之前,技術人員主要的工作就是開發單體系統。所以,單體系統本身也是有很多優勢的,否則的話就無法成為當時主流的系統構建方式。事實上,時至今日,在線上運行的單體系統也并不少見。

那么,是什么原因導致分布式系統的出現呢?歸根結底是因為業務需求的復雜度、用戶數據的體量以及系統的開發和維護速度等因素的變化,導致了技術的演進。這是我們首先需要闡述的一點。

那么,為什么上述變化的出現,就會導致單體系統不能適應時代的發展要求呢?原因在于單體系統無論在應對業務復雜度和產品迭代速度,還是在處理高并發、大數據量的用戶請求,亦或是在代碼維護和團隊協作等方面都存在一系列問題。正是單體系統存在的這些問題,促使了我們不得不引入分布式系統。這是我們在面試過程中必須要重點闡述的,也是兩者之間差異點的一個重要維度。

另一方面,只要我們采用了分布式系統,就意味著所有這些問題都能得到解決嗎?顯然不是。任何事物都具有兩面性。雖然,和單體系統相比,分布式系統具備優勢,但它也引入了新的問題,包括網絡傳輸的三態性、數據的一致性和可用性等。這些分布式系統的本質特性是理解的的另一個重要維度。

通過上述分析,我們明確了這類問題背后的要點所在,開發人員往往只關注于具體分布式開發工具和框架的應用,關于分布式系統背后的設計思想和理念并不十分清楚

接下來,我們具體來分析一下背后的知識體系。

Case2:傳統單體系統存在哪些核心問題

在分布式系統成為主流的系統構建形式之前,開發人員在很長的一段時間里構建的都是單體系統。單體系統的主要優勢就是簡單。例如,如果我們使用 Spring Boot 框架來構建一個單體系統,那么它的表現形式就是一個能夠獨立運行的 JAR 包。開發人員通過簡單幾個步驟就可以開發出基于 HTTP 協議的 Web 服務。

但是,這種簡單性是相對的。如果業務需求變化很快、用戶請求體量巨大,那么通過構建一個簡單的單體系統就無法應對系統發展的要求

在接下來的內容中,我們先來具體分析單體系統所存在的核心問題。
單體系統的核心問題表現在三個方面,即業務擴展性、性能伸縮性和代碼復雜度,如下圖所示:

我們先來看業務擴展性。所謂擴展性,指的是當系統的業務需求發生變化時,我們對現在系統的改動程度的一種控制能力。改動程度越大,擴展性就越差。顯然,對于單體系統而言,任何改動都會導致整個系統進行重新構建和發布,所以它的擴展性是比較低的。

另一方面,單體系統的可伸縮也不高。和擴展性關注業務變化的角度不同,伸縮性關注的是性能指標。如果通過簡單擴容就能確保系統的性能得到等比例的提升,那么我們就認為該系統具備較好的伸縮性。對于單體系統而言,由于內存密集型和 CPU 密集型的代碼都位于同一個服務器上,所以很難做到對資源的充分利用

下圖展示的就是一個典型的例子,可以看到系統中的 A、B、C 組件的資源利用率是不同的。因為我們無法對單體系統中的這些組件進行拆分,所以也就無法單獨對圖中的 B、C 組件進行資源利用率的提升。

至于第三點的代碼復雜度問題,我們也不難理解。由于我們無法對單塊系統中的代碼進行物理上的拆分,所以不同組件之間的代碼邊界往往很難清晰劃分,這就無法有效控制代碼結構的復雜度。久而久之,因為代碼復雜度引起的系統缺陷就會難以維護

上述三點是任何單體系統所普遍存在的問題。為了解決這些問題,分布式系統就應運而生了。

Case3:相較單體系統,分布式系統具體有哪些優勢?

什么是分布式系統?所謂分布式系統,區別于單體系統,會將整個系統拆分成多個能夠獨立運行的服務,這些服務在物理上是隔離的,相互之間基于網絡進行通信和協調

下圖展示的就是現實場景中常見的一種分布式系統,可以看到這里有專門針對業務處理的業務服務 1 和業務服務 2 這兩個獨立的服務,也存在 Web 服務、消息中間件、緩存等提供技術能力的獨立組件。

顯然,想要實現分布式系統,首要的就是完成對系統中各個服務的合理拆分。通常,我們有兩種主流的拆分方式,即縱向(Vertical)拆分和橫向(Horizontal)拆分。

可以認為縱向拆分的目的就是更好地完成對系統中業務服務的合理組織。圍繞一個完整而復雜的業務執行流程,我們通常可以根據不同的業務場景以及數據屬性來完成對業務服務的拆分。例如,在常見的互聯網醫院系統中,具備最基本的醫生、患者以及問診等業務處理場景和數據,這時候我們就可以基于這些場景和數據來分別提取獨立的業務服務,如下圖所示:

介紹完縱向拆分,我們再來看橫向拆分。橫向拆分的切入點在于復用,即我們在提取一系列獨立服務的同時,還需要考慮通過一定的手段將它們高效地整合在一起。這樣,整個系統就可以像是在搭積木一樣對各個服務進行排列組合,如下圖所示:

在上圖中,我們注意到引入了一個分布式服務框架。通過該框架,系統中的醫生服務、患者服務等一系列獨立服務就可以進行合理地編排和整合,從而構建業務 A、業務 B 等不同的業務場景。顯然,分布式服務框架在這里扮演了重要作用,而本小冊后續內容中所要介紹的 Dubbo 和 Spring Cloud 就是目前主流的分布式服務框架。

請注意,分布式系統相較于單體系統而言具備優勢的同時,也存在一些我們不得不考慮的特性,包括以下。

Case 4 :分布式系統的本質特性

網絡傳輸的三態性

我們知道對于單體系統中的函數式方法調用而言,只有“成功”或“失敗”這兩種狀態。但是分布式系統則不同,因為遠程請求是通過網絡進行傳輸的,而網絡在處理請求時還會出現"超時"這個狀態,這樣就相當于有三個狀態。

顯然,網絡傳輸的三態性為系統開發帶來新的挑戰。面對超時狀態,我們不能簡單把它處理成是一種成功或失敗,而是要具體場景具體分析,避免出現請求丟失或請求重復發送現象。在分布式系統設計過程中,我們需要考慮這種由于網絡通信所導致的用戶體驗問題。

請求的容錯性

從錯誤發生的幾率而言,分布式系統顯然比單體系統更加容易出錯,因為系統的調用鏈路變得更長、更復雜。每個分布式服務自身可能會發生異常,而這種異常在整個調用鏈路上會進行擴散,最終可能導致整個系統都不可用。

在分布式系統設計過程中,一大挑戰就是需要確保部分服務的異常情況不會影響到整個系統的可用性。

系統的異構性

分布式系統的異構性很好理解,原則上,每個服務都可以采用一套完全不同的技術體系來進行實現,只要它們對外暴露接口是統一的。但是,因為技術異構性的存在,會增加分布式系統的開發難度和維護成本。

數據的一致性

在分布式系統中,各個服務通常都會構建屬于自身的數據庫,這樣就會導致業務數據無法進行集中管理,也就無法通過傳統的事務機制確保它們之間的一致性。如何實現數據的一致性是分布式系統構建過程的一大難點。

以上幾點是分布式系統的基本特性,我們無法避免,只能想辦法進行利用和管理,這就給我們設計和實現分布式系統提出了挑戰。

結尾

后續不斷更新分布式系列問題 一鍵三連支持一下 后續不迷路 下一文請查看鏈接: 深造分布式 打敗面試官 招式二

總結

以上是生活随笔為你收集整理的深造分布式 打败面试官 招式一 小试牛刀的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产免费av网站 | 免费在线观看你懂的 | 相亲对象是问题学生在线观看 | 四川话毛片少妇免费看 | 欧美日韩精品一区 | 亚洲制服一区二区 | 国产二区免费 | 中文字幕无码精品亚洲 | 超碰91人人 | 日本精品久久久久久 | 国产精品毛片va一区二区三区 | 久久久久人妻一区精品色欧美 | 亚洲高清视频在线播放 | 欧美aaa大片| 粗了大了 整进去好爽视频 日本女优中文字幕 | 先锋资源一区二区 | 白浆一区 | 图片区小说区视频区 | 日韩美女网站 | 欧美a级黄色 | 99爱视频在线观看 | 久草视频播放 | 国产超碰av | 天天看视频 | 午夜色网| 不卡中文 | 无码国产精品一区二区免费式直播 | 久久国产小视频 | 国产一区二区免费电影 | 欧美呦呦呦 | 国产夫妻自拍小视频 | а√天堂资源官网在线资源 | 国产欧美一区二区三区免费看 | xxxxx毛片| 国产在线播放一区二区三区 | 国产精品99精品无码视亚 | 观看av在线 | 色女综合 | 产乳奶汁h文1v1 | jizz中国女人高潮 | 久久久久久国产视频 | 久久久久国产精品夜夜夜夜夜 | 国产一区二区视频在线播放 | 午夜国产在线观看 | 欧美精品日韩在线 | 大尺度一区二区 | 国产在线视频在线观看 | 国产色悠悠 | sm国产在线调教视频 | 色综合久久久久综合体桃花网 | 亚洲天堂久 | 久久精品精品 | 亚洲爽妇网 | 国产精品porn | 日本在线网站 | 五月天婷婷在线播放 | www,色| 国产一级做a爱片久久毛片a | 国产1区2区在线观看 | 国产一级片麻豆 | 99re这里只有精品在线观看 | 国产级毛片 | 精品亚洲国产成人av制服丝袜 | 国产精品69毛片高清亚洲 | 欧美不在线| 午夜影院在线视频 | 精品国产乱码久久久久久婷婷 | 美女福利视频在线 | 国产成人免费网站 | a天堂中文网 | www.久热| 日韩免费观看视频 | 欧美深夜福利 | 纯爱无遮挡h肉动漫在线播放 | 欧美色欧美色 | 久久在现| 女人被狂躁c到高潮喷水电影 | av资源网在线观看 | 青青操国产 | www.久久.com| 国产男女无套免费网站 | 亚洲av毛片| 精品久久久噜噜噜久久久 | 爱情岛论坛av | 精品网站999 | 视频一区二区三区在线 | 亚洲视频自拍 | 日韩高清在线观看一区 | 一区二区三区不卡在线观看 | 91网在线看 | 日日操日日操 | 日本精品久久久久久久 | 国产精品123 | 成人做爰www看视频软件 | 亚洲小说专区 | 日韩欧美黄色片 | 成人h动漫在线 | 亚洲国产高清国产精品 | 美女网站免费观看视频 |