分布式系統(tǒng)說(shuō)白了其實(shí)就是三方面事情:存儲(chǔ)、通訊和計(jì)算眠饮。
等等奥帘,類比一下 OS,這不分別和 OS 中的內(nèi)存仪召、進(jìn)程間通信寨蹋、CPU 是一樣的嗎牲距?
沒(méi)錯(cuò),就是這樣钥庇,只不過(guò)分布式環(huán)境下多了一些復(fù)雜性而已。
分布式下大概有這些需要說(shuō)明的咖摹,
一评姨、存儲(chǔ)
分布式文件系統(tǒng)、分布式緩存萤晴、分布式數(shù)據(jù)庫(kù)(包括分布式關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù))
二吐句、通訊
RPC(同步)、消息(異步)
三店读、計(jì)算
MapReduce嗦枢、Spark、Storm屯断、HPC 等
四文虏、分布式帶來(lái)的其他問(wèn)題
4.1 可用性
primary-backup、復(fù)制狀態(tài)機(jī)殖演、異地多活氧秘、單元化部署
4.2 一致性
Paxos/Raft/ZAB/VR、分布式事務(wù)
4.4 其他問(wèn)題
如 選舉趴久、雙主丸相、腦裂 等其他問(wèn)題
五、分布式系統(tǒng)一般需要的標(biāo)配中間件
5.1 服務(wù)注冊(cè)與發(fā)現(xiàn)彼棍、服務(wù)管控及路由灭忠、RPC
5.2 消息中間件(推模式、拉模式)
5.3 定時(shí)任務(wù)
5.4 分庫(kù)分表
5.5 動(dòng)態(tài)資源管理配置(DRM)
5.6 熔斷限流座硕、削峰填谷
六弛作、寫(xiě)作安排
1)BASE/ACID/CAP 理論
2)數(shù)據(jù)存儲(chǔ)相關(guān)
- 分布方式:哈希/一致性哈希/基于范圍劃分/基于數(shù)據(jù)塊
- 數(shù)據(jù)副本:副本分布方式/副本協(xié)議(中心化、去中心化)
3)一致性坎吻、2PC 和 3PC缆蝉、分布式事務(wù)
4)選舉、多數(shù)派瘦真、租約
5)時(shí)間刊头、時(shí)鐘、事件順序
6)Paxos 及其變種和優(yōu)化
7)Raft诸尽、Zab
七原杂、一些分布式中間件的 Toy 實(shí)現(xiàn)以及源碼閱讀
服務(wù)調(diào)用:Dubbo sofarpc
消息隊(duì)列:rocketmq kafka
作業(yè)調(diào)度:quartz
注冊(cè)中心:zookeeper etcd
配置中心:apollo
分庫(kù)分表:sharding-jdbc
數(shù)據(jù)庫(kù)連接池:hikaricp
分布式事務(wù):tcc-transaction
服務(wù)器:netty
搜索:lucene solr es
Java:java 并發(fā)工具