- 網絡通訊,網絡是分布式的基礎,對分布式的理解建立在對網絡的理解上,包括:
- 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屬性。
- 高可用性,保證服務一直能夠被訪問,延長MTBF,縮短MTTR
- 集群類型
- 安全,網絡通常需要保證安全。
- 身份認證,如何驗證人或機器是他們聲明的身份
- 基于用戶名/口令
- 基于數字證書
- 私密性,如何防止竊聽和嗅探
- 對稱加密
- 非對稱加密
- 完整性,如何保證數據不被篡改
- 安全散列
- 消息認證碼(MAC)
- 不可否認性
- 基于數字證書的數字簽名和驗簽
- 基于密鑰的散列,如HMAC
- 身份認證,如何驗證人或機器是他們聲明的身份
- 互聯網站的基本架構
- 頁面緩存
- 負載均衡器,如HAProxy,Nginx
- 分布式緩存,如Memcache,Redis
- 消息隊列,如ActiveMQ,Kafka
- 頁面緩存
- 分布式框架
- 關系型數據庫(Sharding,主從同步)
- NoSQL
- HBase,基于HDFS和Zookeeper的NoSQL
- Cassandra,無主集群
- 大數據
- HDFS,分布式文件系統
- MapReduce,將數據處理任務拆分為多個工作,通過集群來完成。
- Spark,提供分布式的數據集抽象
- 網絡通訊,網絡是分布式的基礎,對分布式的理解建立在對網絡的理解上,包括:
轉載于:https://www.cnblogs.com/minjay/p/6742953.html