分布式系統解決了什么問題?
簡單來說,分布式系統的出現,主要是為了解決單體系統的不足,
- 分布式系統解決了單機性能瓶頸導致的成本問題,由于摩爾定律失效,廉價PC機的性能瓶頸無法繼續突破,雖然小型機和大型機能夠實作更高的單機性能,但是成本太高,
- 分布式系統解決了用戶量和資料量爆炸性地增大導致的成本問題,
- 分布式系統滿足了業務高可用的需求,
- 分布式系統解決了大規模軟體系統的迭代效率和成本問題,
總之,在互聯網時代,單機系統無法解決成本、效率和高可用問題,這樣就促成了分布式系統的誕生,
分布式系統如何解決成本、效率和高可用問題?
分布式系統是指由一組通過網路進行通信,為了完成共同的任務,而協調作業的計算機節點組成的系統,它是通過多作業節點,來解決單機系統面臨的成本、效率和高可用問題,
如果一項技術能夠平民化,那么它一定是在成本、效率和穩定性方面都有非常突出的表現,我們可以把分布式系統看作單機系統的平民化和物美價廉的版本,
分布式系統帶來什么新問題?
分布式系統可以解決單體系統的不足,但有利就會有弊,分布式系統也帶來了內部作業節點的協調問題,主要體現在分布式系統內部組件、實體之間,通過異步網路進行通信和協調的問題上,
分布式計算帶來的協調問題
主要包括以下幾方面:
- 怎么找到服務? 在分布式系統內部,會有不同的服務,服務A怎么找到服務B,是需要解決的問題,我們一版使用服務注冊與發現的機制來解決,
- 怎么找到服務實體?在找到服務后,當前的請求需要轉發到服務的哪一個實體呢?一般來說,如果同一個服務的實體是完全對等的(無狀態的),那么按照負載均衡的策略來處理就足夠了,如果同一個服務的實體是不對等的(有狀態的),那么就需要通過路由服務來確定將當前請求轉發到哪一個服務實體上,
- 怎么管理配置? 在分布式系統內部,會有不同的服務,每個服務會有多個實體,并且還可能會自動擴縮容,在這種情況下,通過組態檔的方式來管理配置是低效、易出錯的,我們一般是通過一個中心化的存盤來統一管理系統的配置,即配置中心,
- 怎么進行協同? 在分布式系統中,不同的功能模塊已經拆分成不同的服務,并且一般運行在不同的機器上,這時就需要引入分布式事務來處理復雜業務,
- 怎么確保請求只執行一次? 在分布式系統中,各個模塊之間通過網路進行連接,如果出現網路抖動等情況,會導致模塊之間的呼叫失效,而呼叫失敗就可能觸發重試策略,使得程式可能出現沒有執行或者多次執行的情況,我們一般采用重試加冪等設計來確保請求只會被執行一次,
- 怎么避免雪崩? 系統雪崩是指由于正反饋回圈導致不斷擴大規則的故障,一次雪崩通過是由于整個系統中,一個很小的部分出現故障而引發,進而導致系統的其他部分也出現故障,避免雪崩的策略主要有兩個思路:1)快速失敗和降級機制,2)彈性擴容機制,
- 怎么監控告警和故障恢復? 我們需要完善分布式系統的監控,分布式追蹤Trace,模擬故障的混沌工程以及相關的告警等機制,我們還需要做好故障恢復預案,確保在故障發生的時候,能夠快速恢復故障,
分布式存盤帶來的協調問題
主要包括以下幾方面:
- 在CAP及其相關理論與權衡,我們需要理解ACID、BASE和CAP這三個理論,
- 我們怎么做資料分片,我們需要解決怎么將資料按照一定的規則,分別存盤到不同的機器上面,目前主要采用Hash和Region分片的策略,
- 我們怎么做資料復制,目前的主要方案有中心化方案和去中心化方案,
- 我們怎么做分布式事務,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/549714.html
標籤:其他
