<progress id="uuezx"></progress>
<th id="uuezx"></th>
  • <li id="uuezx"><acronym id="uuezx"><cite id="uuezx"></cite></acronym></li>

    為什么各大企業仍趨之若鶩的要做架構改造呢

    隨著互聯網的大量普及,越來越多的企業在不斷迭代產品的同時,也在進行技術架構升級,將早期的單體式架構升級成分布式架構。升級改造的成本是非常之大的,那么為什么各大企業仍趨之若鶩的要做架構改造?

    主要原因有三點:

    1)單體式系統帶來的成本太高了,互聯網涌入網民的增多導致需要更好的計算能力、網絡能力、存儲能力,而只是通過擴展小型機、大型機來提高單機性能,太貴了,一般的企業承受不起。

    2)數據為王的時代需要更多的數據進行分析,企業們需要更經濟實惠的方式來存儲數據、分析數據,分布式系統多節點顯然是更好的選擇;

    3)在用戶為王的互聯網時代,互聯網產品均要求7*24小時能提供服務,保障系統的高可用,通過增加機器來做好容災準備的方式也演變成了分布式系統的方式。

    綜上所述,我們需要分布式系統。分布式系統的定義是由一組通過網絡進行通信、為完成共同的任務而協調工作的計算機節點組成的系統,簡單來說,就是通過網絡把很多鏈接的計算機連接起來,協同工作,打造一個高性能、高可用的系統,對外提供服務。

    分布式系統的學習包括兩個模塊--分布式計算&分布式存儲。在分布式計算中,我們需要學習的知識點有四個:

    1)服務如何找到另一個服務?

    2)如何判斷服務的請求發給哪一個實例?

    3)如何避免系統的雪崩?

    4)如何進行監控告警?。

    分布式存儲中,我們需要學習的知識點也有四個:

    1)如何判斷數據存儲規則?

    2)如何數據分片?

    3)如何復制數據?

    4)如何做分布式事務?

    分布式系統的分布式計算中,第一個問題是服務如何找到另一個服務呢?這塊主要是結合微服務的思想在進行落地。通過將服務劃分為生產者producer(提供響應的服務)、消費者consumer(發起請求的服務),再通過服務注冊、服務發現,生產者節點將自己所能提供的服務、自己的IP地址端口等給到注冊中心,消費者節點到注冊中心根據自己的訴求獲取需要的服務。

    第二個問題是在服務找到之后,消費者節點應該將用戶的請求發往部署著生產者節點的哪一個服務呢?如果是有狀態的服務(即同一個服務下不同機器的數據不一樣),通過路由來確認當前要訪問的請求數據是在哪一個實例上,再進行請求的分發即可;如果是無狀態的服務(即同一個服務不同機器的數據一樣),通過hash、權重分配、輪詢等規則將請求進行分發即可。

    第三個問題是如何避免服務的雪崩(即部署某個服務的某臺機器出了問題,大量的請求發過來,導致其他的機器承受不住,最后該服務的所有機器都掛了)?在分布式系統內有兩個辦法,1、快速減少系統負載來避免雪崩的方式,即熔斷服務、降級服務、限流服務;2、通過快速增加機器節點,承受更多的服務請求,即彈性擴容。

    最后一個問題是如何對分布式系統進行監控告警?在分布式系統內部,由于服務眾多、機器眾多,如果不了解系統整體的情況、服務與服務之間如何關聯,當出現問題時排查問題就會變得非常艱難。通過在部署服務的每臺機器上安裝探針,采集數據,進行分布式的trace追蹤,再結合一定的告警機器,可保障服務的高可用,在出現問題時快速排查、解決問題。

    分布式系統的分布式存儲中,第一個問題是用什么樣的規則決定如何存儲數據?業內流行的有三個理論,即ACID(即atomicity原子性、consistency一致性、isolation隔離性、durability持久性)、BASE(即BasicallyAvailable基本可用、SoftState軟狀態、EventuallyConsistent最終一致性)、CAP(即Consistency一致性、Availability可用性、Partition分區容錯性)。這取決于不同的業務場景,在交易場景中,大部分企業會采取ACID原則,即交易操作不能接受任何錯誤,每個操作的步驟必須是原子的、操作與操作的數據是隔離的、操作完成后的數據是持久化的;在大部分場景中,企業一般采用BASE原則,即每個業務系統最開始的時候由于大業務量等情況,數據不要求強一致性,但可以通過采取一定的方式使得數據最后是一致的。

    第二個問題是如何做數據分片?我們知道互聯網系統會產生大量的數據,而單機是不可能存儲所有的數據,因此需要解決數據如何存儲在不同的機器上。在分布式系統中常用的規則就是Hash、一致性hash、按范圍分片規則來將數據存儲在不同的機器上。

    第三個問題是如何做數據復制?為了保障服務的高可用,除了機器的冷備準備之外,還需要對數據做處理,保障業務請求訪問到任何一個節點的數據都是一致的、準確的。常用的解決方案有主從復制、一致性協議Raft等。

    第四個問題是如何做分布式事務?在單機系統中,通過時間戳加序號的方式就可以實現事務功能,然而在分布式系統中,因為系統拆分成了微服務、微服務又分為多個節點進行部署,系統中的時間不能完全同步,這個時候可以采用整體系統選一臺機器按單機的模式生產事務ID,同城多中心和異地多中心去該臺機器獲取事務ID,實現分布式事務一致性。

    至此,分布式系統的學習就要告一段落了,我們再來回顧下本文從為什么需要分布式系統開始,介紹了當下互聯網時代存在的問題、分布式系統的定義、分布式系統計算核心知識點、分布式系統存儲知識點。目前頭部互聯網公司如阿里頭條騰訊百度美團等之外、金融行業如銀行保險等、傳統行業如醫療教育健康等等,各行各業都開始進行技術架構重構,轉單體式應用為分布式,因此掌握了分布式系統之后,在秋招、金九銀十跳槽季中,一定會有助力去到心儀的公司噢~


    上下文導航
    相關內容
    全國熱線

    0551-69117050

    咨詢服務熱線:8:00-23:00

    合肥一元教育咨詢有限公司版權所有 如有圖片侵權請及時聯系本站,將及時刪錯或更改

    皖ICP備13012660號-1

    在線咨詢
    電話咨詢
    Tel:0551-69117050
    微信

    掃一掃
    歡迎微信咨詢

    QQ咨詢
    返回頂部