分散式計算,核心知識點

小雷FansUnion發表於2015-12-18
    最近在學習和總結,分散式相關的一些技術知識。

    讀了幾本書,感覺內容比較多,需要梳理下。

    在知乎等地方,也找到了一些寫得比較好的文章。

以下為轉載內容

分散式計算就是通過計算機網路將計算工作分佈到多臺主機上,多個主機一起協同完成工作。

我試著列一下相關知識吧。
  • 網路通訊,網路是分散式的基礎,對分散式的理解建立在對網路的理解上,包括:
    • OSI模型的7層
    • TCP/IP,DNS,NAT
    • HTTP,SPDY/HTTP2
    • Telnet
  • 網路程式設計,是通過程式在多個主機之間通訊。包括:
    • Socket
    • 多執行緒
    • 非阻塞IO
    • 網路框架
      • Netty
      • Mina
      • ZeroMQ
  • 作業系統的網路部分
  • RPC,Socket使用不是很方便,很多分散式應用是基於RPC的,包括:
    • 同步RPC
    • 非同步RPC
    • 主要的一些RPC協議
      • RMI
      • Rest API
      • Thrift
  • 叢集,分散式計算離不開叢集。叢集就是多臺主機被當作一個系統
    • 叢集型別
      • 高可用,如主機備機切換,冷備,熱備,雙活
      • 伸縮性,如Web伺服器叢集,資料庫伺服器的Sharding
      • 平行計算,如網格,大資料
    • 叢集相關技術,包括:
      • 高可用性,保證服務一直能夠被訪問,延長MTBF,縮短MTTR
        • 冗餘的裝置
        • 多副本,為了避免單點失效
      • 負載均衡,如何將大量工作負載分配到多個主機上,最大化吞吐量,最小化平均響應時間,最大化資源利用率。
      • 伸縮性(橫向),能夠新增計算機和裝置來應對增長的計算壓力
      • 分片(Sharding),把資料分成多個資料集,由多個伺服器來分別處理。
        • 自動分片
      • 容錯性,當硬體或軟體發生故障,能夠繼續運轉
      • 故障檢測,以及故障預測
        • 心跳包
        • 告警
        • 效能預警
      • 故障轉移,當出現錯誤,如何解決,為了高可用性和容錯性
      • 分散式一致性,在分散式環境中如何維持狀態的一致性,嚴格一致性,還是最終一致性
      • 叢集狀態協調,如Zookeeper,etcd等。
        • 分散式鎖,在分散式環境中如何進行加鎖
        • 選主,當Master當機,如何選擇出新的Master,協議如Raft
      • 一致性雜湊,如何將資料分佈到叢集中的多個主機。
      • 分散式事務,保證在多臺伺服器上完成的操作符合事務的ACID屬性。
  • 安全,網路通常需要保證安全。
    • 身份認證,如何驗證人或機器是他們宣告的身份
      • 基於使用者名稱/口令
      • 基於數字證書
    • 私密性,如何防止竊聽和嗅探
      • 對稱加密
      • 非對稱加密
    • 完整性,如何保證資料不被篡改
      • 安全雜湊
      • 訊息認證碼(MAC)
    • 不可否認性
      • 基於數字證書的數字簽名和驗籤
      • 基於金鑰的雜湊,如HMAC
  • 網際網路站的基本架構
    • 頁面快取
    • 負載均衡器,如HAProxy,Nginx
    • 分散式快取,如Memcache,Redis
    • 訊息佇列,如ActiveMQ,Kafka
  • 分散式框架
    • 關係型資料庫(Sharding,主從同步)
    • NoSQL
      • HBase,基於HDFS和Zookeeper的NoSQL
      • Cassandra,無主叢集
    • 大資料
      • HDFS,分散式檔案系統
      • MapReduce,將資料處理任務拆分為多個工作,通過叢集來完成。
      • Spark,提供分散式的資料集抽象

連結:https://www.zhihu.com/question/22764869/answer/68879509
來源:知乎

相關文章