分佈式系統是由一組經過網絡進行通訊、爲了完成共同的任務而協調工做的計算機節點組成的系統。分佈式系統的出現是爲了用廉價的、普通的機器完成單個計算機沒法完成的計算、存儲任務。其目的是利用更多的機器,處理更多的數據。html
分佈式系統分爲分佈式計算(computation)與分佈式存儲(storage)。計算與存儲是相輔相成的,計算須要數據,要麼來自實時數據(流數據),要麼來自存儲的數據;而計算的結果也是須要存儲的。在操做系統中,對計算與存儲有很是詳盡的討論,分佈式系統只不過將這些理論推廣到多個節點罷了。java
常見的分佈式存儲系統 : MogileFS、GlusterHSmysql
常見的分佈式文件系統有 :GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFSlinux
常見追蹤系統 : Jaeger、Zipkin等;nginx
分佈式是指將不一樣的業務分佈在不一樣的地方。 而集羣指的是將幾臺服務器集中在一塊兒,實現同一業務。
分佈式中的每個節點,均可以作集羣。 而集羣並不必定就是分佈式的。web
分佈式系統怎麼將任務分發到這些計算機節點 : 分而治之,即分片redis
存儲 ,每一個節點存一部分數據就好了。當數據規模變大的時候,Partition是惟一的選擇,同時也會帶來一些好處:算法
(1)提高性能和併發,操做被分發到不一樣的分片,相互獨立spring
(2)提高系統的可用性,即便部分分片不能用,其餘分片不會受到影響sql
分佈式系統中有大量的節點,且經過網絡通訊。單個節點的故障(進程crash、斷電、磁盤損壞)是個小几率事件,但整個系統的故障率會隨節點的增長而指數級增長。
分佈式框架
常見的分佈式軟件 :
分佈式文件存儲的數據庫 : Mongodb
分佈式代碼管理工具 : Gitlab
分佈式緩存數據結構存儲系統 : Redis/Memcached
分佈式
分佈式
分佈式任務處理服務:負責具體的業務邏輯處理
分佈式節點註冊和查詢:負責管理全部分佈式節點的命名和物理信息的註冊與查詢,是節點之間聯繫的橋樑
分佈式DB:分佈式結構化數據存取
分佈式Cache:分佈式緩存數據(非持久化)存取
分佈式文件:分佈式文件存取
網絡通訊:節點之間的網絡數據通訊
監控管理:蒐集、監控和診斷全部節點運行狀態
分佈式編程語言:用於分佈式環境下的專有編程語言,好比Elang、Scala
分佈式算法:爲解決分佈式環境下一些特有問題的算法,好比解決一致性問題的Paxos算法
分佈式計算系統:
1. 傳統基於msg的系統
2. MapReduce-like 系統
3. 圖計算系統
4. 基於狀態(state)的系統
5. Streaming 系統
主流分佈式系統設計分類
1. 分佈式存儲系統
2. 分佈式計算系統
3. 分佈式管理系統
分佈式存儲系統:
1. 結構化存儲
2. 非結構化存儲
3. 半結構化存儲
4. In-memory 存儲
分佈式存儲系統還有一系列的理論、算法、技術做爲支撐:例如 Paxos, CAP, ConsistentHash, Timing (時鐘), 2PC, 3PC 等等
上述四個子方向概述分類
結構化存儲 :典型的場景就是事務處理系統或者關係型數據庫(RDBMS)。傳統的結構化存儲都是從單機作起的,
PostgreSQL 也是近幾年來勢頭很是強勁的一個 RDBMS. 咱們發現,傳統的結構化存儲系統強調的是:(1)結構化的數據(例如關係表)。(2)強一致性 (例如,銀行系統,電商系統等場景)(3)隨機訪問(索引,增刪查改,SQL 語言)。
非結構化存儲 (no-structed storage systems) : 非結構化存儲強調的是高可擴展性,典型的系統就是分佈式文件系統。
• HDFS: 分佈式存儲系統,包含NameNode,DataNode。
NameNode:元數據,DataNode。
DataNode:存數數據。
arn: 能夠理解爲MapReduce的協調機制,本質就是Hadoop的處理分析機制,分爲ResourceManager NodeManager。 • MapReduce: 軟件框架,編寫程序。
• Hive: 數據倉庫 能夠用SQL查詢,能夠運行Map/Reduce程序。用來計算趨勢或者網站日誌,不該用於實時查詢,須要很長時間返回結果。
• HBase: 數據庫。很是適合用來作大數據的實時查詢。Facebook用Hbase存儲消息數據並進行消息實時的分析;
• ZooKeeper: 針對大型分佈式的可靠性協調系統。Hadoop的分佈式同步等靠Zookeeper實現,例如多個NameNode,active standby切換。
• Sqoop: 數據庫相互轉移,關係型數據庫和HDFS相互轉移Mahout: 可擴展的機器學習和數據挖掘庫。用來作推薦挖掘,彙集,分類,頻繁項集挖掘。
常見問題 :
1. 近些年分佈式系統領域都在作些什麼。
2. 爲何如今投入分佈式系統的學習和研究是值得的。
第一,異構的機器與網絡:
分佈式系統中的機器,配置不同,其上運行的服務也可能由不一樣的語言、架構實現,所以處理能力也不同;節點間經過網絡鏈接,而不一樣網絡運營商提供的網絡的帶寬、延時、丟包率又不同。怎麼保證你們齊頭並進,共同完成目標,這四個不小的挑戰。
第二,廣泛的節點故障:
雖然單個節點的故障機率較低,但節點數目達到必定規模,出故障的機率就變高了。分佈式系統須要保證故障發生的時候,系統仍然是可用的,這就須要監控節點的狀態,在節點故障的狀況下將該節點負責的計算、存儲任務轉移到其餘節點
第三,不可靠的網絡:
節點間經過網絡通訊,而網絡是不可靠的。可能的網絡問題包括:網絡分割、延時、丟包、亂序。
相比單機過程調用,網絡通訊最讓人頭疼的是超時:節點A向節點B發出請求,在約定的時間內沒有收到節點B的響應,那麼B是否處理了請求,這個是不肯定的,這個不肯定會帶來諸多問題,最簡單的,是否要重試請求,節點B會不會屢次處理同一個請求。
可擴展性
可用性與可靠性
高性能
一致性
常見的分佈式文件系統:
Nginx:高性能、高併發的web服務器;功能包括負載均衡、反向代理、靜態內容緩存、訪問控制;工做在應用層
LVS: Linux virtual server,基於集羣技術和Linux操做系統實現一個高性能、高可用的服務器;工做在網絡層
Java:Tomcat,Apache,Jboss
Python:gunicorn、uwsgi、twisted、webpy、tornado
SOA、微服務、spring boot,django
docker,kubernetes
memcache、redis等
zookeeper、etcd等
zookeeper使用了Paxos協議Paxos是強一致性,高可用的去中心化分佈式。zookeeper的使用場景很是普遍,以後細講。
grpc、dubbo、brpc
dubbo是阿里開源的Java語言開發的高性能RPC框架,在阿里系的諸多架構中,都使用了dubbo + spring boot
kafka、rabbitMQ、rocketMQ、QSP
消息隊列的應用場景:異步處理、應用解耦、流量削鋒和消息通信
storm、akka
hadoop、spark
PS: apark、akka、kafka都是scala語言寫的,看到這個語言仍是很牛逼的
cobar也是阿里開源的,在阿里系中使用也很是普遍,是關係型數據庫的sharding + replica 代理
mysql、oracle、MongoDB、HBase
elasticsearch、solr
rsyslog、elk、flume
常見的分佈式文件系統有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS
GFS(Google File System)
--------------------------------------
Google公司爲了知足本公司需求而開發的基於Linux的專有分佈式文件系統。。儘管Google公佈了該系統的一些技術細節,但Google並無將該系統的軟件部分做爲開源軟件發佈。
使用Master->Slave設計,元數據信息主要由Master管理,這樣的設計大大下降系統的實現難度。
爲防止Master壓力過大,限制了數據存儲大量,GFS中數據存儲單元使用Chunk表示,Chunk支持64M。
Master節點掌握整個集羣數據存儲核心數據,集羣擴展能力受限於master節點內存,好比:大量小文件致使元數據信息爆滿。
分佈式文件系統多副本,可支持容錯的讀取數據,根據負載狀況,最近副本取數據。
由於集羣支持容錯,故障自動恢復,因此整個集羣能夠擴展到很大規模,在傳統MPI、MPP中沒法支持很大規模。
而今天咱們也看到MPP和
下面分佈式文件系統都是類 GFS的產品。
熱點數據
在分佈式非結構化數據存儲中,是很是常見的,好比咱們某個公共庫文件或程序,爲使用方便和容錯,你們把它存儲在HDFS,它被切塊存儲於100個節點的集羣某3個機器中,因爲大量業務系統或者程序隨機加載引用,致使某3個機器壓力特別大,看到監控系統飄紅。
咱們能夠經過增長副本數量,來讓更多副本能提供訪問服務,解決問題。
早期使用MapReduce/Spark系統,爲縮短計算時間,默認3副本,咱們提升到6,9個,增長數據本地化計算的概率。
元數據
集羣擴展Slave受限於Master節點內容,元數據信息都存在Master,而且常駐內存,大量小文件也會形成Master性能降低。
快照
使用copy-on-writer實現,基本上不會對現有數據讀取有影響。
[1] 適合追加方式的寫入和讀取操做
[2] 不多有隨機寫入操做
目前HDFS,GFS主要用來存儲海量的離線數據,提供海量非結構化數據存儲場景。
若是須要支持隨機寫、更新、刪除數據,就選其餘系統,好比:Kudu
容錯考慮須要,有三倍冗餘,目前主要有Erasure Codes實現,奇偶校驗方法,能夠縮小大量存儲佔用。
注意:
[1] 沒有在文件系層面提供任何的Cache機制,訪問順序讀取加載大量文件,Cache支持意義不大
[2] 單個應用執行時機會不會重複讀取數據
[3] GFS/HDFS適合流式讀取一個大型數據集
[4] 在大型數據集中隨機seek到某個位置,以後每次讀取少許數據,提高效率。
[5] GFS/HDFS設計預期是使用大量的不可靠節點組件集羣,所以,災難冗餘是此類系統設計的核心。
[6] 存儲固定大小的Chunk,容易從新均衡數據。
[7] 原子記錄追加,保障系統數據一致性。
[8] 中心Master設計,讓複雜的分佈式系統實現簡單化,不用考慮數據一致性,元數據同步問題。
GFS/HDFS設計初衷,保障有大量併發讀寫操做時,可以提供很高的合計吞吐量。
經過分離控制流(Master)和數據流(Chunk client)來實現,因此咱們常常提起的Edge節點會對整個系統性能有很大的影響。
Master節點負載太高,經過Chunk租約將控制權交給主副本(主Chunk),將Master壓力降到最低。
目前相似GFS的開源實現,主流選擇HDFS,並且HDFS在實現上,彌補不少GFS中的不足。我也沒看到有可替代HDFS的系統,由於有HDFS造就今天繁榮的Hadoop生態系統,數據分析引擎、數據存儲引擎百花齊放。
軟件系統的設計與實現是爲解決現實問題而出現,設計上會有不少權衡,不一樣的權衡造就不一樣的系統,各自有擅長的場景。
HDFS
--------------------------------------
Hadoop 實現了一個分佈式文件系統(Hadoop Distributed File System),簡稱HDFS。 Hadoop是Apache Lucene創始人Doug Cutting開發的使用普遍的文本搜索庫。它起源於Apache Nutch,後者是一個開源的網絡搜索引擎,自己也是Luene項目的一部分。Aapche Hadoop架構是MapReduce算法的一種開源應用,是Google開創其帝國的重要基石。
Ceph
---------------------------------------
是加州大學聖克魯茲分校的Sage weil攻讀博士時開發的分佈式文件系統。並使用Ceph完成了他的論文。
說 ceph 性能最高,C++編寫的代碼,支持Fuse,而且沒有單點故障依賴, 因而下載安裝, 因爲 ceph 使用 btrfs 文件系統, 而btrfs 文件系統須要 Linux 2.6.34 以上的內核才支持。
但是ceph太不成熟了,它基於的btrfs自己就不成熟,它的官方網站上也明確指出不要把ceph用在生產環境中。
Lustre
---------------------------------------
Lustre是一個大規模的、安全可靠的,具有高可用性的集羣文件系統,它是由SUN公司開發和維護的。
該項目主要的目的就是開發下一代的集羣文件系統,能夠支持超過10000個節點,數以PB的數據量存儲系統。
目前Lustre已經運用在一些領域,例如HP SFS產品等。
FastDFS
---------------------------------------
是一款相似Google FS的開源分佈式文件系統,是純C語言開發的。
FastDFS是一個開源的輕量級分佈式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件爲載體的在線服務,如相冊網站、視頻網站等等。
FastDFS 是一個由 C 語言實現的開源輕量級分佈式文件系統,
FastDFS is an open source high performance distributed file system (DFS). It's major functions include: file storing, file syncing and file accessing, and design for high capacity and load balance.
翻譯 : FastDFS 是一個開源的高性能分佈式文件系統(DFS)。 它的主要功能包括:文件存儲,文件同步和文件訪問,以及高容量和負載平衡。
官方論壇 http://bbs.chinaunix.net/forum-240-1.html
FastDfs google Code http://code.google.com/p/fastdfs/
分佈式文件系統FastDFS架構剖析 http://www.programmer.com.cn/4380/
TFS
-------------------------------------
TFS(Taobao !FileSystem)是一個高可擴展、高可用、高性能、面向互聯網服務的分佈式文件系統,主要針對海量的非結構化數據,它構築在普通的Linux機器 集羣上,可爲外部提供高可靠和高併發的存儲訪問。TFS爲淘寶提供海量小文件存儲,一般文件大小不超過1M,知足了淘寶對小文件存儲的需求,被普遍地應用 在淘寶各項應用中。它採用了HA架構和平滑擴容,保證了整個文件系統的可用性和擴展性。同時扁平化的數據組織結構,可將文件名映射到文件的物理地址,簡化 了文件的訪問流程,必定程度上爲TFS提供了良好的讀寫性能。
官網 : http://code.taobao.org/p/tfs/wiki/index/
GridFS文件系統
-------------------------------------
MongoDB是一種知名的NoSql數據庫,GridFS是MongoDB的一個內置功能,它提供一組文件操做的API以利用MongoDB存儲文件,GridFS的基本原理是將文件保存在兩個Collection中,一個保存文件索引,一個保存文件內容,文件內容按必定大小分紅若干塊,每一塊存在一個Document中,這種方法不只提供了文件存儲,還提供了對文件相關的一些附加屬性(好比MD5值,文件名等等)的存儲。文件在GridFS中會按4MB爲單位進行分塊存儲。
普通數據庫事務(簡稱:事務,Transaction)是指一個單數據庫節點執行過程當中的一個邏輯單位由一個有限的數據庫操做序列構成,這一系列數據庫操做序列組成的邏輯單位具備強原子性,或所有執行,或所有不執行。該事務擁有如下四個特性,習慣上被稱爲 ACID 特性:
原子性(Atomicity):事務做爲一個總體被執行,包含在其中的對數據庫的操做要麼所有被執行,要麼都不執行。
一致性(Consistency):事務應確保數據庫的狀態從一個一致狀態轉變爲另外一個一致狀態。一致狀態是指數據庫中的數據應知足完整性約束。除此以外,一致性還有另一層語義,就是事務的中間狀態不能被觀察到(這層語義也有說應該屬於原子性)。
隔離性(Isolation):多個事務併發執行時,一個事務的執行不該影響其餘事務的執行,如同只有這一個操做在被數據庫所執行同樣。
持久性(Durability):已被提交的事務對數據庫的修改應該永久保存在數據庫中。在事務結束時,此操做將不可逆轉。
普通數據庫事務的單節點性,因此也叫本地事務。以下是普通事務的架構形態:
相對於普通數據庫事務而言,分佈式事務是指會涉及到操做多個數據庫節點的事務,事務的參與者、支持事務的服務器、資源服務器以及事務管理器分別位於分佈式的不一樣數據庫節點上,是將對單庫事務的概念擴大到了對多個庫的事務,分佈式事務方案也是爲了保證分佈式系統中各個數據庫節點的數據一致性。 普通數據庫事務具備強一致性特色。分佈式事務則不一樣,根據數據一致性的強弱要求,分佈式事務分剛事務和柔事務。
剛事務:聽從ACID理論,實際中由於考慮用戶體驗和併發性能,不多有聽從ACID的分佈式事務實施方案
柔事務:聽從CAP理論或其變種BASE理論的事務,主流分佈式事務一致性方案都屬於這類
以下是當前常見的分佈式事務的架構形態:
爲了解決分佈式事務一致性問題,前人在性能和數據一致性的權衡過程當中總結了許多經典的協議和算法。比較著名的有:XA協議、2PC、3PC、TCC、Paxos、Raft、Zab、ISR、SAGA模型、最大努力型。固然,除了這些以外,業界用的最多的實際上是基於MQ實現。本文列舉具備表明性的幾個方案進行概述講解。
XA協議:
最先的分佈式事務模型是 X/Open 國際聯盟提出的 X/Open Distributed Transaction Processing(DTP)模型,也就是你們常說的 X/Open XA 協議,簡稱XA 協議。
XA模型由2部分組成:全局事務管理(調度)器(TM)和本地資源管理(RM),本地資源管理器每每由數據庫實現,事務管理器做爲全局的調度者,負責各個本地資源的提交和回滾。XA 協議描述了 TM 與 RM 之間的接口,容許多個資源在同一分佈式事務中訪問。XA實現分佈式事務的原理以下:
XA使用2PC提交保證原子性:
1. 應用程序(AP,Application)向 TM 申請開始一個全局事務。
2. 針對要操做的 RM,AP 會先向 TM 註冊(TM 負責記錄 AP 操做過哪些 RM,即分支事務),TM 經過 XA 接口函數通知相應 RM 開啓分佈式事務的子事務,接着 AP 就能夠對該 RM 管理的資源進行操做。
3. 當 AP 對全部 RM 操做完畢後,AP 根據執行狀況通知 TM 提交或回滾該全局事務,TM 經過 XA 接口函數通知各 RM 完成操做。TM 會先要求各個 RM 作預提交,全部 RM 返回成功後,再要求各 RM 作正式提交,XA 協議要求,一旦 RM 預提交成功,則後續的正式提交也必須能成功;若是任意一個 RM 預提交失敗,則 TM 通知各 RM 回滾。
4. 全部 RM 提交或回滾完成後,全局事務結束。
XA優勢:知足原子性、隔離性。
XA缺點:太依賴數據庫層事務、鎖,影響性能開銷,存在數據不一致性(不過全部分佈式事務方案都不是強一致性事務)
總的來講,XA協議比較簡單,並且一旦商業數據庫實現了XA協議,使用分佈式事務的成本也比較低。可是,XA也有致命的缺點,那就是性能不理想,特別是在交易下單鏈路,每每併發量很高,XA沒法知足高併發場景。XA目前在商業數據庫支持的比較理想,在mysql數據庫中支持的不太理想,mysql的XA實現,沒有記錄prepare階段日誌,主備切換回致使主庫與備庫數據不一致。許多nosql也沒有支持XA,這讓XA的應用場景變得很是狹隘。
2PC:
XA協議中保證事務原子性的機制就是使用2PC 。
二階段提交(Two-phaseCommit)是指,在計算機網絡以及數據庫領域內,爲了使基於分佈式系統架構下的全部節點在進行事務提交時保持一致性而設計的一種算法(Algorithm)。一般,二階段提交也被稱爲是一種協議(Protocol))。在分佈式系統中,每一個節點雖然能夠知曉本身的操做時成功或者失敗,卻沒法知道其餘節點的操做的成功或失敗。當一個事務跨越多個節點時,爲了保持事務的ACID特性,須要引入一個做爲協調者的組件來統一掌控全部節點(稱做參與者)的操做結果並最終指示這些節點是否要把操做結果進行真正的提交(好比將更新後的數據寫入磁盤等等)。所以,二階段提交的算法思路能夠歸納爲:參與者將操做成敗通知協調者,再由協調者根據全部參與者的反饋情報決定各參與者是否要提交操做仍是停止操做。
所謂的兩個階段是指:第一階段:準備階段(投票階段)和第二階段:提交階段(執行階段)。
準備階段:
事務協調者(事務管理器)給每一個參與者(資源管理器)發送Prepare消息,每一個參與者要麼直接返回失敗(如權限驗證失敗),要麼在本地執行事務,寫本地的redo和undo日誌,但不提交。
準備階段細化爲以下三件事:
1.協調者節點向全部參與者節點詢問是否能夠執行提交操做(vote),並開始等待各參與者節點的響應。
2.參與者節點執行詢問發起爲止的全部事務操做,並將Undo信息和Redo信息寫入日誌。(注意:若成功這裏其實每一個參與者已經執行了事務操做)
3.各參與者節點響應協調者節點發起的詢問。若是參與者節點的事務操做實際執行成功,則它返回一個」贊成」消息;若是參與者節點的事務操做實際執行失敗,則它返回一個」停止」消息。
提交階段:
若是協調者收到了參與者的失敗消息或者超時,直接給每一個參與者發送回滾(Rollback)消息;不然,發送提交(Commit)消息;參與者根據協調者的指令執行提交或者回滾操做,釋放全部事務處理過程當中使用的鎖資源。(注意:必須在最後階段釋放鎖資源),下圖描述了2pc成功和失敗的過程:
二階段提交可以提供原子性的操做,可是具備以下幾個缺點:
1. 同步阻塞問題。執行過程當中,全部參與節點都是事務阻塞型的。當參與者佔有公共資源時,其餘第三方節點訪問公共資源不得不處於阻塞狀態。
2. 單點故障。因爲協調者的重要性,一旦協調者發生故障。參與者會一直阻塞下去。尤爲在第二階段,協調者發生故障,那麼全部的參與者還都處於鎖定事務資源的狀態中,而沒法繼續完成事務操做。(若是是協調者掛掉,能夠從新選舉一個協調者,可是沒法解決由於協調者宕機致使的參與者處於阻塞狀態的問題)
3. 數據不一致。在二階段提交的階段二中,當協調者向參與者發送commit請求以後,發生了局部網絡異常或者在發送commit請求過程當中協調者發生了故障,這回致使只有一部分參與者接受到了commit請求。而在這部分參與者接到commit請求以後就會執行commit操做。可是其餘部分未接到commit請求的機器則沒法執行事務提交。因而整個分佈式系統便出現了數據部一致性的現象。
4. 二階段沒法解決的問題:協調者再發出commit消息以後宕機,而惟一接收到這條消息的參與者同時也宕機了。那麼即便協調者經過選舉協議產生了新的協調者,這條事務的狀態也是不肯定的,沒人知道事務是否被已經提交。
因爲二階段提交存在着諸如同步阻塞、單點問題、腦裂等缺陷,因此,研究者們在二階段提交的基礎上作了改進,提出了三階段提交。
3PC:
三階段提交(Three-phase commit),也叫三階段提交協議(Three-phase commit protocol),是二階段提交(2PC)的改進版本。
PC除了引入超時機制外,將事務過程分爲3個階段:CanCommit、PreCommit、DoCommit:
CanCommit:
3PC的CanCommit階段其實和2PC的準備階段很像。協調者向參與者發送commit請求,參與者若是能夠提交就返回Yes響應,不然返回No響應。
1. 事務詢問:協調者向參與者發送CanCommit請求。詢問是否能夠執行事務提交操做。而後開始等待參與者的響應。
2. 響應反饋:參與者接到CanCommit請求以後,正常狀況下,若是其自身認爲能夠順利執行事務,則返回Yes響應,並進入預備狀態。不然反饋No 。
PreCommit:
協調者根據CanCommit階段參與者的反應狀況來決定是否能夠繼續事務的PreCommit操做。根據響應狀況,有如下兩種可能。
假如協調者從全部的參與者得到的反饋都是Yes響應,那麼就會執行事務的預執行。
1. 發送預提交請求:協調者向參與者發送PreCommit請求,並進入Prepared階段。
2. 事務預提交:參與者接收到PreCommit請求後,會執行事務操做,並將undo和redo信息記錄到事務日誌中。
3. 響應反饋 若是參與者成功的執行了事務操做,則返回ACK響應,同時開始等待最終指令。
如CanCommit階段有任何一個參與者向協調者發送No響應或者PreCommit階段的任何一個參與者返回操做失敗,或者協調者等待超時以後,協調者都沒有接到參與者的響應,那麼就執行事務的中斷。
1. 發送中斷請求 協調者向全部參與者發送abort請求。
2. 中斷事務 參與者收到來自協調者的abort請求以後(或超時以後,仍未收到協調者的請求),執行事務的中斷。
doCommit階段:
該階段進行真正的事務提交,也能夠分爲如下兩種狀況。
執行提交:
1. 發送提交請求:協調接收到參與者發送的ACK響應,那麼他將從預提交狀態進入到提交狀態。並向全部參與者發送doCommit請求。
2. 事務提交:參與者接收到doCommit請求以後,執行正式的事務提交。並在完成事務提交以後釋放全部事務資源。
3. 響應反饋:事務提交完以後,向協調者發送Ack響應。
4. 完成事務:協調者接收到全部參與者的ack響應以後,完成事務。
中斷事務:
協調者沒有接收到參與者發送的ACK響應(多是接受者發送的不是ACK響應,也可能響應超時),那麼就會執行中斷事務。
1. 發送中斷請求 協調者向全部參與者發送abort請求
2. 事務回滾 參與者接收到abort請求以後,利用其在階段二記錄的undo信息來執行事務的回滾操做,並在完成回滾以後釋放全部的事務資源。
3. 反饋結果 參與者完成事務回滾以後,向協調者發送ACK消息
4. 中斷事務 協調者接收到參與者反饋的ACK消息以後,執行事務的中斷。
2PC與3PC區別:
相對於2PC,3PC主要解決單點故障問題,並減小阻塞,由於一旦參與者沒法及時收到來自協調者的信息以後,他會默認執行commit。而不會一直持有事務資源並處於阻塞狀態。可是這種機制也會致使數據一致性問題,由於,因爲網絡緣由,協調者發送的abort響應沒有及時被參與者接收到,那麼參與者在等待超時以後執行了commit操做。這樣就和其餘接到abort命令並執行回滾的參與者之間存在數據不一致的狀況。
TCC(Try-Confirm-Cancel)方案:
TCC是由支付寶架構師提供的一種柔性解決分佈式事務解決方案,TCC(Try-Confirm-Cancel)分佈式事務模型相對於 XA 等傳統模型,其特徵在於它不依賴資源管理器(RM)對分佈式事務的支持,而是經過對業務邏輯的分解來實現分佈式事務。
支付寶官網提到,TCC 模型認爲對於業務系統中一個特定的業務邏輯,其對外提供服務時,必須接受必定不肯定性,即對業務邏輯初步操做的調用僅是一個臨時性操做,調用它的主業務服務保留了後續的取消權。若是主業務服務認爲全局事務應該回滾,它會要求取消以前的臨時性操做,這就對應從業務服務的取消操做。而當主業務服務認爲全局事務應該提交時,它會放棄以前臨時性操做的取消權,這對應從業務服務的確認操做。每個初步操做,最終都會被確認或取消。
根據具體的業務服務,TCC分佈式事務模型須要業務系統提供以下三段業務邏輯:
1. 初步操做 Try:完成全部業務檢查,預留必須的業務資源。
2. 確認操做 Confirm:真正執行的業務邏輯,不做任何業務檢查,只使用 Try 階段預留的業務資源。所以,只要 Try 操做成功,Confirm 必須能成功。另外,Confirm 操做需知足冪等性,保證一筆分佈式事務有且只能成功一次。
3. 取消操做 Cancel:釋放 Try 階段預留的業務資源。一樣的,Cancel 操做也須要知足冪等性。
TCC 分佈式事務模型包括三部分:
1. 主業務服務:主業務服務爲整個業務活動的發起方,服務的編排者,負責發起並完成整個業務活動。
2. 從業務服務:從業務服務是整個業務活動的參與方,負責提供 TCC 業務操做,實現初步操做(Try)、確認操做(Confirm)、取消操做(Cancel)三個接口,供主業務服務調用。
3. 業務活動管理器:業務活動管理器管理控制整個業務活動,包括記錄維護 TCC 全局事務的事務狀態和每一個從業務服務的子事務狀態,並在業務活動提交時調用全部從業務服務的 Confirm 操做,在業務活動取消時調用全部從業務服務的 Cancel 操做。
一個完整的 TCC 分佈式事務流程以下:
1. 主業務服務首先開啓本地事務;
2. 主業務服務向業務活動管理器申請啓動分佈式事務主業務活動;
3. 而後針對要調用的從業務服務,主業務活動先向業務活動管理器註冊從業務活動,而後調用從業務服務的 Try 接口;
4. 當全部從業務服務的 Try 接口調用成功,主業務服務提交本地事務;若調用失敗,主業務服務回滾本地事務;
5. 若主業務服務提交本地事務,則 TCC 模型分別調用全部從業務服務的 Confirm 接口;若主業務服務回滾本地事務,則分別調用 Cancel 接口;
6. 全部從業務服務的 Confirm 或 Cancel 操做完成後,全局事務結束。
TCC 分佈式事務模型僅提供兩階段原子提交協議,保證分佈式事務原子性。事務的隔離交給業務邏輯來實現。TCC 模型的隔離性思想就是經過業務的改造,在第一階段結束以後,從底層數據庫資源層面的加鎖過渡爲上層業務層面的加鎖,從而釋放底層數據庫鎖資源,放寬分佈式事務鎖協議,提升業務併發性能。
總之,TCC 分佈式事務模型的業務實現特性決定了其能夠跨 DB、跨服務實現資源管理,將對不一樣的 DB 訪問、不一樣的業務操做經過 TCC 模型協調爲一個原子操做,解決了分佈式應用架構場景下的事務問題。TCC 模型經過 2PC 原子提交協議保證分佈式事務的的原子性,把資源層的隔離性上升到業務層,交給業務邏輯來實現。TCC 的每一個操做對於資源層來講,就是單個本地事務的使用,操做結束則本地事務結束,規避了資源層在 2PC 和 2PL 下對數據庫資源佔用致使的性能低下問題。
基於MQ實現:
消息中間件在分佈式系統中的主要做用:異步通信、解耦、併發緩衝。基於MQ實現分佈式事務一致性是一種異步確保型的實現方案,將同步阻塞的事務變成異步的,避免對數據庫事務的爭用。
所謂的消息事務就是基於消息中間件的兩階段提交,本質上是對消息中間件的一種特殊利用,它是將本地事務和發消息放在了一個分佈式事務裏,保證要麼本地操做成功而且對外發消息成功,要麼二者都失敗,阿里開源的RocketMQ就支持這一特性,具體原理以下:
事務過程分爲4步:
1. A系統向消息中間件發送一條預備消息
2. 消息中間件保存預備消息並返回成功
3. A執行本地事務
4. A發送提交消息給消息中間件
經過以上4步完成了一個消息事務。對於以上的4個步驟,每一個步驟均可能產生錯誤,下面一一分析:
步驟1出錯,則整個事務失敗,不會執行A的本地操做
步驟2出錯,則整個事務失敗,不會執行A的本地操做
步驟3出錯,這時候須要回滾預備消息,怎麼回滾?答案是A系統實現一個消息中間件的回調接口,消息中間件會去不斷執行回調接口,檢查A事務執行是否執行成功,若是失敗則回滾預備消息
步驟4出錯,這時候A的本地事務是成功的,那麼消息中間件要回滾A嗎?答案是不須要,其實經過回調接口,消息中間件可以檢查到A執行成功了,這時候其實不須要A發提交消息了,消息中間件能夠本身對消息進行提交,從而完成整個消息事務。
基於消息中間件的兩階段提交每每用在高併發場景下,將一個分佈式事務拆成一個消息事務(A系統的本地操做+發消息)+B系統的本地操做,其中B系統的操做由消息驅動,只要消息事務成功,那麼A操做必定成功,消息也必定發出來了,這時候B會收到消息去執行本地操做,若是本地操做失敗,消息會重投,直到B操做成功,這樣就變相地實現了A與B的分佈式事務。原理以下:
上面的方案可以完成A和B的操做,但A和B並非嚴格一致,而是最終一致的,這裏犧牲了一致性,換來了性能的大幅度提高。因此這種玩法也是有風的,若是B一直執行不成功,那麼一致性會被破壞,具體要不要玩,仍是得看業務可以承擔多少風險。
總之,基於可靠消息隊列的最終一致性這個假設前提,事務消息的MQ方案是目前公認的較爲理想的分佈式事務解決方案,各大電商都在應用這一方案。這種方式適合的業務場景普遍,並且可靠。不過目前主流的開源MQ(ActiveMQ、RabbitMQ、Kafka)均未實現對可靠消息隊列及事務的支持,因此需二次開發或者新造輪子,因此也是成本最大的。
4、結束語
本文一開始講解了什麼是分佈式事務及分佈式事務的架構場景,而後從 XA 、2PC、3PC、TCC 、基於MQ這些典型方案, 講述了這些經常使用的分佈式事務模型,介紹了其實現機制和優缺點。後續的文章咱們會詳細分章節介紹主流分佈式事務的技術實施細節及相關中間件。
參考連接:
https://mp.weixin.qq.com/s/dCQKjrURQ2pn1_lqWlorBg
https://blog.csdn.net/m0_37450089/article/details/80215231
轉載自Itweet的博客 :文章集合:
http://www.itweet.cn/blog/archive
連接:
MQ ( 16篇 ) : https://www.cnblogs.com/hzmark/category/1025980.html
centos 系統下安裝配置FastDFS步驟分享 : https://www.jb51.net/os/RedHat/61572.html
分佈式事務介紹:https://mp.weixin.qq.com/s/WHWNAOK4C8wgd4CjcWviHQ
分佈式文件系統:原理、問題與方法 : https://mp.weixin.qq.com/s?src=3×tamp=1535250605&ver=1&signature=vx*N7EvfFqpmUOjwGF9wUIcxy31qP2i1s0ow3-ZGdLH8ashU2glg5Dt8yNC331AbxVfIplgM4Az-jygABJwdRjs*UoMkcbZL4xfLpnB5oRANlSb*EBajphoo0xvvY0oJ8QEDGxAYL9*wZoTLXkJnd7XxmMihBCjg*kfVpzOqEVY=
分佈式文件系統FastDFS詳解 :https://mp.weixin.qq.com/s?src=11×tamp=1535250605&ver=1083&signature=tJEC0IqAT2O5JH80u44PlSET2YirDw41lIAMCTrTgcxeAjgHeyBtOK3Ly9PlRqHM4X4iQ2Qn4AV4wnRf9J2kQeHstn0kfctbBK9F4ToYKUx*it-vx-xR-Fw7tsqAczXm&new=1
架構之路搭建FastDFS分佈式文件系統 :https://mp.weixin.qq.com/s?src=11×tamp=1535250605&ver=1083&signature=XSeIInfunYFwfG9vcl7rTSiyJx-VSHqVP83GetVy7CH3-lvGxogfZGKGANleAgamgEBPUZVuwGAbqA-w18hdRh1BZiNqiWLg9qlTch3HAk1ePoarwGJyYk4UyU8U2ym*&new=1
分佈式文件系統FastDFS如何作到高可用 : https://mp.weixin.qq.com/s?src=11×tamp=1535250605&ver=1083&signature=RFIh9fGMVdp8HBAViHMf4LKHRgOJvEwQsmxPF-xQFlmxyiCuhgS6LXk-8jck1H9w-HI139t419FdDIH5ghMUltp*jls9LAyzPtSJER5e-pQYrVrcOrpUYHS3QA-W8IN7&new=1
分佈式文件系統FastDFS架構剖析 : https://mp.weixin.qq.com/s?src=3×tamp=1535252384&ver=1&signature=rPPUC6IxXtg-sD2Tj*NF89QdXmOOJtvp9x-bO*AcH*TGv7YbB3QOGkrDTysmxxHp3MYyAV*j268PdOjOKTFUzdC9SWoU9nVFpE-XtdrIs446XLn7cfHpApTqXQ*yOKCfcupOenuevak3fKzJG1PAFg==
乾貨 | 分佈式文件系統 - FastDFS(一) : https://mp.weixin.qq.com/s?src=3×tamp=1535252618&ver=1&signature=*kjuZWR9tISwgU4sdz8HLpyAuBYPKIbizZYd8Tb3-I1U9UpdrYgPb5a7QbEdBsUWtUqNynKCQv**M2I1t9IjWSc0Yuggt13xjI2zM-TqsNeSPxLbz3SpjMmw4*Ivhg2YqnpBvCdDwMsp0X4ubQ8hfX0Udpq3qp84GPS1fU3O22w=
FastDFS高性能分佈式文件系統 :https://mp.weixin.qq.com/s?src=11×tamp=1535252618&ver=1083&signature=kgl8ktTnJRr4pOzJKXFD7pS*d7aDLXCUuiFpjPQBonmZmR*I-DeSqUv9yiDw5UwiQYQTPFL62PdK*V7*zcpTJrhR1nbRkaIQUyxVev28VBN8674EHg9bHq2pt6v1IREx&new=1
乾貨 | 分佈式文件系統 - FastDFS 配置 Nginx 模塊及上傳測試(完結篇) :https://mp.weixin.qq.com/s?src=3×tamp=1535252618&ver=1&signature=*kjuZWR9tISwgU4sdz8HLpyAuBYPKIbizZYd8Tb3-I1LoeT0MTN*D6jQMDYLcSEDO-pWGC*m-5bXHud4fWJHjDMseLinSt1sVQ-99IBTKSHiO*4-nK5h9Y-WA1wtdh1xjAZodfn0jOoUh6OyaPzAayEHzsbdTsBO4Dxlhri2V*8=
乾貨 | 分佈式文件系統 - FastDFS 在 CentOS 下配置安裝部署 :https://mp.weixin.qq.com/s?src=3×tamp=1535252618&ver=1&signature=*kjuZWR9tISwgU4sdz8HLpyAuBYPKIbizZYd8Tb3-I3szzLAqcQXYlAhjLSRmUeb4YyXsA5gErU*JFC6*Avsa8*aAuimt6LQsQtdAG-bx2lfJbiCub1Veb3FQOXUMByA5qPA-ha8WTvF4kZV2xz4dJiSa5mzEiqddSqxQdATKkk=
項目架構之FastDFS分佈式文件系統 : https://mp.weixin.qq.com/s?src=11×tamp=1535267942&ver=1083&signature=qslhqnZEz9zvCjKPlGtWkToFbQ1oAVd0ctTiDBoaIeYTomVToickyVHKpCiMlXSRCJLM0N0FMHltQagMjo1NjhYZehE6*jFaqe28AgTjdoWex6R7lWMhUL8A7uu9UKG3&new=1
FastDFS分佈式文件系統 : https://mp.weixin.qq.com/s?src=11×tamp=1535267942&ver=1083&signature=ncBzyxafFAXv-iQUpp83emAbqq0ot0G3DMDBNYhv0IohbCH1qKfKWQt5UvsYUWj8*Olc7W7Z6FFhmqD1JNTNm1AfquRh3Rdl3wIcUmMSidy1OBtaMUB2eSGPZFoTNm8K&new=1
FastDFS 分佈式文件系統的安裝與使用(單節點) : https://mp.weixin.qq.com/s?src=11×tamp=1535267942&ver=1083&signature=75cVDME8QkLJwTyFRc9sfsmZW0FpgPnEh9fp4bJQlMxRouDi98UN*lke0qbRiBC6qKKXgfqUWv6mLTy*PPr*BJvdePOBTDNO0E3B0Oc7dEDQdCGUuqbz6ITFIMc-kimQ&new=1
分佈式文件系統FastDFS介紹及搭建部署完整流程 : https://mp.weixin.qq.com/s?src=11×tamp=1535268195&ver=1083&signature=2SFG3TxTLfbegAfMoHBvmuFB*acd9I6HeQR0TspIeZAwJkqKuwgxsHY4DyVLs*6cLCGb*StyeMP*nbDobNdeX7BI1Em2F6EA-pzq9hw5e3pZYU-rNq7X9BO-3Mbw4P0u&new=1
分佈式文件管理系統FastDFS : https://mp.weixin.qq.com/s?src=11×tamp=1535269195&ver=1083&signature=dpgkjQy4jb0hihpDqRmBKtHywEx8yu4w4oLZ75T7sHhZPUySM-bkoszg857a91sV9bJIa3xa-DDdXPuYQpDgZ1wOwOCWMNQAwA8CTVLaEu35ISoTFq1VXndFyUm8WmB*&new=1
分佈式 or SAN文件系統、SAS交換爲什麼普及難? : https://mp.weixin.qq.com/s?src=3×tamp=1535269195&ver=1&signature=HAa4AgVAbUJmuheQjSSZGZcnuaSy4vC55F*SKwDMJzxmk-ULk2sRiT9XLoNgFGfQDxuJg0IJWn2uUAGLkdDz7K6fuVw2kLUDwLghPtbC0YqD6aIK2FRgcwgJFr9AMBXaNL25GQKhOi*fwwwjX-RS4A==
案例:HDFS分佈式文件系統 : https://www.sogou.com/tx?ie=utf-8&hdq=sogou-addr-cc9657884708170e&query=%E6%A1%88%E4%BE%8B%EF%BC%9AHDFS%E5%88%86%E5%B8%83%E5%BC%8F%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F
GlusterFS分佈式文件系統使用簡介: https://mp.weixin.qq.com/s?src=3×tamp=1535252384&ver=1&signature=L1C7usG9nhuvVUS9dkoQ4L0C3uwt3mRI*sGWWChs3izzW7cdYuNpkTK2HixU11NmRGlUrsm1K*35IxNR8BaJr561nAgXz0IykwhfoLRZyNhqRZ*-D8iFCP73NxgDnXNR0NELUHpYeKpQcEkjLICPfG1Yb5dJUIqC2yP8zjMFz1w=
Gluster FS分佈式文件系統 : https://mp.weixin.qq.com/s?src=3×tamp=1535268195&ver=1&signature=VKBEOhsvHdcT1qUa778fPvxtVbYBJ6IWJS0O9tJvlAwq1MlxQ1cj8YCQtSFYtvUMB-AR-PgOXJpa9rxy0OZTKzTVk7ONpFX-CbFpPBTuqC3b-XivI0aWu7JEaHZcTPVr7BEXbtjV8OKovjZXz8OX6g==
Google分佈式文件系統(GFS) : https://mp.weixin.qq.com/s?src=3×tamp=1535268195&ver=1&signature=ZEtptritsk29pYA7lHS-7wjBZnSHIMvaTujfm5i-6CCEYCOaePbdZtRwDFnNpSI4xdBJAKiZTGPiRF4KUEoI*twryqyswxfjk0Tp91CG2nWkAOYs6qyTj8LpNdscOq0EE-boP3IzR1p2u-n5-ptqHQ==
分佈式文件系統Mogilefs介紹 : https://mp.weixin.qq.com/s?src=3×tamp=1535252384&ver=1&signature=L1C7usG9nhuvVUS9dkoQ4L0C3uwt3mRI*sGWWChs3ix9ur8Uf1*Kp9gNB4agA2U1I5MC1mDnarFJEQR2GEuo2ptOFDHTrIvoqRn2SZ9dpWCMobg*UktDl*VNu*PQ8*sAiX0AWTWa9W6QuD2O2EvtwNZ3lnvttqmMVeW-HwOpMl4=
淘寶分佈式文件系統TFS設計 : https://mp.weixin.qq.com/s?src=3×tamp=1535252384&ver=1&signature=rPPUC6IxXtg-sD2Tj*NF89QdXmOOJtvp9x-bO*AcH*Tw6hUV6maokZVrSdQO7XR35iyGbiHENEflmAwsOrdsy7dMJ*mp3o1VX1SqqAnEZJc7as2WZeApDCBzF5FZkJXCd16gRA25TIdx388pwatDfg==
spark
淺談Spark RDD API中的Map和Reduce : https://www.jb51.net/article/126333.htm
Spark三種屬性配置方式詳解 : https://www.jb51.net/article/126324.htm
Spark實現K-Means算法代碼示例 : https://www.jb51.net/article/126031.htm
Spark運行時產生的臨時目錄的問題 : https://www.ixdba.net/archives/2018/08/1250.htm
spark client mode和cluster mode的區別 : https://www.ixdba.net/archives/2018/08/1233.htm
Spark多種運行模式以及每種模式的執行方法 : https://www.ixdba.net/archives/2018/08/1192.htm
掃盲:Hadoop分佈式文件系統(HDFS)基礎概念講解! :https://mp.weixin.qq.com/s?src=11×tamp=1535252618&ver=1083&signature=i1zSWfI8X*TgJufQD4xkjNdw*ENFDeFKwWIKp4H3Eser3t6q6OhLpgl1CR1tjdbj8tV05FQuLOsGwxqeqoneL9U-kBZc0*gZz8ZtGVBKBVw4gTJB7HN6OrBpIpaH576B&new=1
區塊鏈給咱們帶來什麼-IPFS分佈式文件系統 :https://mp.weixin.qq.com/s?src=11×tamp=1535252618&ver=1083&signature=-y0HgciTaSc1dZeKKaZJDZB0DGu3ZObLE*r60JWE3Ce1qnpQxDKBeBSDSLtoulJ39CUQ88KDaLTTme1HMA4rt34Je6E6*-N*-AesmDpzcKpxBLfHcUbeICU3Q*pE3FqZ&new=1
IPFS—點對點的分佈式文件系統(三) :https://mp.weixin.qq.com/s?src=11×tamp=1535267655&ver=1083&signature=QSxEFMEKiHFYTzOWfJQf40XNSWkWRAFKqSjV5Qsb5rQk1olMHWPnu4oS4ivoPDFVodPt2ubKGEOHbRK8sOSwzNzQLf44xO8LUiN0ml6yUcL0iYUcyC3MGlDZbFedv3EA&new=1
IPFS—點對點的分佈式文件系統(二) :https://mp.weixin.qq.com/s?src=11×tamp=1535267655&ver=1083&signature=QSxEFMEKiHFYTzOWfJQf40XNSWkWRAFKqSjV5Qsb5rQ9TBGYWvxUMYOyO-gOqdiw1SN-Uxe2pdHmf7ZiCoMo4AFiTJnGFwz6zVNAs5UTfGApkUasu*OetC6CzNcyoxrX&new=1
IPFS —— Go 實現的分佈式文件系統 : https://mp.weixin.qq.com/s?src=3×tamp=1535268195&ver=1&signature=CpfJpQymWKMovehcjRVjTEhRqVpDyV9*k9OyZXNcFpU9Al2c8UxBcSWuKW8ojJWlK19T40acSVTDLsmcVBw8hdQB5*ohu-3T1ZLw7D0Vm6s2J1g7fiJXureOwEjpET*ORF*mjkeeLdQqxhGdqesGkg==
【焦點】分佈式文件系統的備份 : https://mp.weixin.qq.com/s?src=11×tamp=1535268195&ver=1083&signature=f1w746*FM9IBHTdftKDO9ZJjf5EQj5FlHdJ5d2i32eQXnrKqGVygsELs6-pscy7L2csSZOyyo0viNk*z8hPVwOrpyzPypOCflQroodGUp-G9OfyBZ3WDiaOA3KZLQaM0&new=1
常見的分佈式文件系統介紹 : http://blog.csdn.net/xyw591238/article/details/51441250
MongoDB GridFS 數據讀取效率 benchmark
http://blog.nosqlfan.com/html/730.html
nginx + gridfs 實現圖片的分佈式存儲 安裝(一年後出問題了)
http://www.cnblogs.com/zhangmiao-chp/archive/2011/05/05/2038285.html
基於MongoDB GridFS的圖片存儲
http://liut.cc/blog/2010/12/about-imsto_my-first-open-source-project.html
nginx+mongodb-gridfs+squid
http://1008305.blog.51cto.com/998305/885340
分佈式基礎學習(1)--分佈式文件系統 :https://mp.weixin.qq.com/s?src=3×tamp=1535252384&ver=1&signature=vx*N7EvfFqpmUOjwGF9wUIcxy31qP2i1s0ow3-ZGdLH8ashU2glg5Dt8yNC331Ab0XbKro9HyKPm5KDGTuYe91sjfnkDgORhgGMc7Eqy9BOh51cYMYWZMJEP293D3J3SmQ*mzMZtnbMWP-woPrHSDsvKQce4pDpbAF*UPJHd6CA=
常見分佈式文件系統大盤點 :https://mp.weixin.qq.com/s?src=11×tamp=1535267655&ver=1083&signature=0WeQe5IIK7M40bOO4tFi*eX3lgMVGP4GiOa6bVM7YrrkskoLX2iFl3-k*r9c-V5BD2Z*gEIEHQRSjDp9*DhpWKTND7Jgfj*ou5BSm1vEwgdL3PuRgRtyHF7ZQAm8KINB&new=1
分佈式系統的高效運維要點 : https://blog.csdn.net/chdhust/article/details/78238599
分佈式系統failover測試之拔盤插盤操做 : https://blog.csdn.net/chdhust/article/details/53131599
大數據 : https://ericfu.me/archives/
Kafka 系列 :
CentOS7上如何安裝Kafka?CentOS7上安裝Kafka教程 : https://www.jb51.net/os/RedHat/541702.html
CentOS上使用Squid+Stunnel搭建代理服務器教程 : https://www.jb51.net/os/RedHat/415615.html
分離式or超融合,分佈式存儲建設時的兩種部署模式 : https://www.jianshu.com/p/611b7c179df8
分佈式應用:
一文詳解分佈式系統數據分片難題 : https://mp.weixin.qq.com/s/vwshiESDGqrvAtOQaBNKPg難題
分佈式系統的架構思路 : http://blog.51cto.com/13904503/2164247
大型分佈式網站架構:緩存在分佈式系統中的應用 : https://blog.csdn.net/qq_39627461/article/details/81007454
大型分佈式網站架構:緩存在分佈式系統中的應用 : http://www.cnblogs.com/AIPAOJIAO/p/9326084.html
阿里分佈式服務框架Dubbo的架構總結 : https://www.cnblogs.com/AIPAOJIAO/p/9294215.html
大型網站架構系列:分佈式消息隊列(一) : https://mp.weixin.qq.com/s/eRpvdD5Udvwdj4mrAfQFBg
大型網站架構系列:緩存在分佈式系統中的應用(一) : https://mp.weixin.qq.com/s/xp_qZToZAbLnmfo8rq39Vg
大型網站架構系列:緩存在分佈式系統中的應用(二) : https://mp.weixin.qq.com/s/CnyMkOMrzLLKDZ2FQRfJ9w
大型網站架構系列:緩存在分佈式系統中的應用(三) :https://mp.weixin.qq.com/s/zDRITPG8Qbeg2mRnUfzxaQ
大型網站架構系列:電商網站架構案例(3) : https://mp.weixin.qq.com/s/qgNKu4wOKeTCfIJNgKT2Rw
大型分佈式網站架構技術總結 : https://mp.weixin.qq.com/s/ozG0tss4JREx8txLnORQFw
負載均衡詳解
大型網站架構系列:負載均衡詳解(1) : https://mp.weixin.qq.com/s/xbtLnhT42clXsuiP-C9bDg
大型網站架構系列:負載均衡詳解(3) : https://mp.weixin.qq.com/s/uaCykNu4diXpqOPCz4YZJg
大型網站架構系列:負載均衡詳解(4) : https://mp.weixin.qq.com/s/vWW5H3sTaSkAieN299a4bw
Glusterfs
CentOS 6.5安裝部署Glusterfs : http://blog.51cto.com/zlyang/1690055
換個角度看GlusterFS分佈式文件系統 : http://blog.51cto.com/zlyang/1684400
glusterfs——volume管理 : http://blog.51cto.com/zlyang/1684311
分佈式文件系統HDFS解讀 : https://mp.weixin.qq.com/s/kXRLnOuRCWCEv9Bz-dJ9Ig
FastDFS 系統
CentOS7搭建FastDFS+Nginx : http://blog.51cto.com/ygqygq2/2091651
fastdfs添加新group注意事項 : http://blog.51cto.com/ygqygq2/2136589
VMware下CentOS6.8配置GFS文件系統 : http://blog.51cto.com/ygqygq2/1871300
分佈式文件系統FastDFS詳解 : https://www.cnblogs.com/ityouknow/p/8240976.html
那必定都是你的錯!- 一次FastDFS併發問題的排查經歷 : https://www.cnblogs.com/ityouknow/p/8123998.html
FastDFS 集羣 安裝 配置 : https://www.cnblogs.com/ityouknow/p/7769142.html
分佈式文件系統FastDFS架構剖析 : https://www.ixdba.net/archives/2014/04/311.htm
大型網站架構系列:電商網站架構案例(3) : https://mp.weixin.qq.com/s/qgNKu4wOKeTCfIJNgKT2Rw
分佈式一致性系統的動態替換實現機制
1. Paxos成員組變動
http://oceanbase.org.cn/?p=160
Paxos & Raft 分佈一致性算法 Slideshare : https://ericfu.me/paxos-raft-share/
2. 如何完美實現Paxos算法成員組變動
http://www.sohu.com/a/136589596_446710
Openshift Origin
Openshift Origin v1.3.x新增功能部署-Centos7 : http://www.pangxie.space/docker/1182
Openshift Origin版本升級(v1.2.x->v1.3.x)-Centos7 : http://www.pangxie.space/docker/1176
在openshift部署fabric8-Centos7 : http://www.pangxie.space/docker/1154
搭建分佈式Openshift Origin-Centos7 : http://www.pangxie.space/docker/989
搭建單機版Openshift Origin-Centos7 ;http://www.pangxie.space/docker/964
分佈式與大數據系統 (80篇) : https://blog.csdn.net/chdhust/article/category/2202603
分佈式一致性 (43) : https://blog.csdn.net/chdhust/article/category/5650785
分佈式存儲系統 (22): https://blog.csdn.net/chdhust/article/category/1384021
分佈式消息系統 (23) : https://blog.csdn.net/chdhust/article/category/2472965
分佈式日誌系統 (7) : https://blog.csdn.net/chdhust/article/category/2302509
分佈式服務框架 (2) : https://blog.csdn.net/chdhust/article/category/5642291
分佈式集羣管理 (2) : https://blog.csdn.net/chdhust/article/category/5643953
分佈式數據庫 (3) : https://blog.csdn.net/chdhust/article/category/2559193
安全技術研究 : https://blog.csdn.net/chdhust/article/category/2289747
大數據:
大數據學習路線 : https://mp.weixin.qq.com/s/P0JFoDo5kTp81_eZOvfnEg
W3Cschool
RabbitMQ
如何用好消息隊列RabbitMQ? : https://www.jianshu.com/p/b39e5edf3e5c
Memcached (第一篇) : https://www.cnblogs.com/kissdodog/p/3549488.html
緩存概述 : https://www.cnblogs.com/kissdodog/archive/2013/05/23/3094830.html
System.Web.Caching.Cache類 緩存 各類緩存依賴 : https://www.cnblogs.com/kissdodog/archive/2013/05/07/3064895.html
【轉載整理】Hibernater的鎖機制 : https://www.cnblogs.com/yingsong/p/7646313.html
(Clob的寫入和讀取-java)更新數據庫報錯:SQL Error: 1461, SQLState: 72000 ORA-01461: 僅能綁定要插入 LONG 列的 LONG 值 : https://www.cnblogs.com/yingsong/p/5685790.html
Hibernate 操做 oracle數據庫,報錯總結 : https://www.cnblogs.com/yingsong/p/5283863.html
Hibernate關聯關係(二) Cascade級聯 : https://www.cnblogs.com/yingsong/p/5197828.html
【轉載】Hibernate 關聯關係 : https://www.cnblogs.com/yingsong/p/5197826.html
Hibernate JPA實體繼承的映射(一) 概述 : https://www.cnblogs.com/yingsong/p/5179975.html
Hibernate JPA實體繼承的映射(二) @MappedSuperclass : https://www.cnblogs.com/yingsong/p/5179961.html
Mycat
Mycat學習實戰-Mycat讀寫分離 : http://blog.51cto.com/ygqygq2/1981542
Mycat學習實戰-Mycat分片 : http://blog.51cto.com/ygqygq2/1981540
Mycat學習實戰-Mycat全局主鍵 : http://blog.51cto.com/ygqygq2/1976279
Mycat學習實戰-Mycat的zookeeper集羣模式 : http://blog.51cto.com/ygqygq2/1974592
Mycat學習實戰-Mycat基本功能 : http://blog.51cto.com/ygqygq2/1974299
Mycat學習實戰-Mycat初識 : http://blog.51cto.com/ygqygq2/1973653
Apache
原 Kafka安全認證SASL下附帶工具的配置使用 : https://blog.csdn.net/u012842205/article/details/73648170
原 Apache Kafka0.10.0.0集羣部署 : https://blog.csdn.net/u012842205/article/details/73250288
原 集羣Kafka配置SASL用戶名密碼認證 : https://blog.csdn.net/u012842205/article/details/73188684
原 單機節點Kafka配置SASL用戶名密碼認證 : https://blog.csdn.net/u012842205/article/details/73188534
原 Apache Cassandra3.10集羣安裝部署 : https://blog.csdn.net/u012842205/article/details/72781463
原 Apache Hive2.1.1安裝部署 : https://blog.csdn.net/u012842205/article/details/71713842
HBase
原 HBase概述 : https://blog.csdn.net/u012842205/article/details/52267263
原 HBase使用總結 : https://blog.csdn.net/u012842205/article/details/52267291
原 Hbase增刪改查、關聯查詢、關係型數據庫轉化 : https://blog.csdn.net/ioy84737634/article/details/52554605
hbase分佈式集羣搭建 : https://www.cnblogs.com/ityouknow/p/7343996.html
HBase shell 命令介紹 : https://www.cnblogs.com/ityouknow/p/7344001.html
HBase高可用原理與實踐 : https://mp.weixin.qq.com/s/BlG7qYL12Hbjl4nYSr8_nA
原 Sqoop1.4.6安裝與使用(一) : https://blog.csdn.net/u012842205/article/details/53377103
原 Sqoop1.4.6安裝與使用(二) : https://blog.csdn.net/u012842205/article/details/53378703
GPFS分佈式文件系統在雲計算環境中的實踐 : http://www.talkwithtrend.com/Article/218939
Mfs分佈式文件系統總結 : http://blog.51cto.com/11638832/1969271
MFS分佈式文件系統 : http://blog.51cto.com/11638832/1873980
分佈式文件系統之MooseFS----管理優化 薦 : http://blog.51cto.com/nolinux/1602616
分佈式文件系統之MooseFS----部署 : http://blog.51cto.com/nolinux/1601385
分佈式文件系統之MooseFS----介紹 薦 : http://blog.51cto.com/nolinux/1600890
分佈式文件系統--MogileFS 薦 : http://blog.51cto.com/guoting/1561354
分佈式存儲系統MogileFS(一)之基本概念 : http://blog.51cto.com/cuchadanfan/1699333
分佈式存儲系統MogileFS(二)之簡單配置 : http://blog.51cto.com/cuchadanfan/1699335
GalaCloud分佈式加密存儲網絡 : https://mp.weixin.qq.com/s/eXQYQh3Zi3bclJwdoTxYSQ
Kafka
Kafka簡明教程 : https://www.jianshu.com/p/3d178a233bfa
kafka丟數據問題分析 : https://www.jianshu.com/p/954d3c75500d
kafka 無消息丟失配置 轉 : https://www.jianshu.com/p/0898406ccbae
KAFKA 刪除 topic : https://www.jianshu.com/p/f55136b86adb
spark向kafka寫入數據(轉) : https://www.jianshu.com/p/cea421e72dec
Flume+Kafka收集Docker容器內分佈式日誌應用實踐 : https://mp.weixin.qq.com/s/DWD6N6q4ECCuB-wrCjk0OA
kafka權威指南 第二章第6節 Kafka集羣配置與調優 : https://mp.weixin.qq.com/s/MbFMnU_r9lFvLnA2bJuSsQ
Spark
Spark入門基礎教程 : https://www.jianshu.com/p/05d64ec96781
https://www.cnblogs.com/atomicbomb/tag/Spark/
Spark sql讀取數據庫和ES數據進行處理代碼 : https://www.cnblogs.com/atomicbomb/p/6678531.html
spark streaming的理解和應用 : https://www.cnblogs.com/atomicbomb/p/6834447.html
Spark on Yarn with Hive實戰案例與常見問題解決 薦 : http://blog.51cto.com/xpleaf/2296151
Spark on Yarn做業運行架構原理解析 : http://blog.51cto.com/xpleaf/2294303
Spark做業運行架構原理解析 : http://blog.51cto.com/xpleaf/2293921
日誌分析實戰之清洗日誌小實例1:使用spark&Scala分析Apache日誌 : https://mp.weixin.qq.com/s/8Hnhk9HbB4T5byvWLQSOmg
Spark筆記整理(四):Spark RDD算子實戰 : http://blog.51cto.com/xpleaf/2108481
Spark筆記整理(五):Spark RDD持久化、廣播變量和累加器 : http://blog.51cto.com/xpleaf/2108614
Spark筆記整理(六):Spark高級排序與TopN問題揭密 : http://blog.51cto.com/xpleaf/2108763
Spark筆記整理(十三):RDD持久化性能測試(圖文並茂) : http://blog.51cto.com/xpleaf/2288316
分佈式惟一ID的幾種生成方案 : https://mp.weixin.qq.com/s/Klmyffj5oVejHjg81vSe5w
經常使用的分佈式事務解決方案 : https://mp.weixin.qq.com/s/_Tz9z1tGxcrICsXqH8gDhQ
分佈式數據庫在商業銀行設計與實踐相關的20個問題 : https://mp.weixin.qq.com/s/ByD1PSdxayVDFA_c1LZ4Pw
分佈式數據庫TiDB在商業銀行的設計與實踐
http://www.talkwithtrend.com/Document/detail/tid/419235
TiDB集羣安裝
http://www.talkwithtrend.com/Document/detail/tid/419205
postgresql分佈式數據庫架構
http://www.talkwithtrend.com/Document/detail/tid/418759
Greenplum數據庫最佳實踐
http://www.talkwithtrend.com/Document/detail/tid/418755