Twitter也在用的分佈式日誌系統 值得一用

Twitter Apache 數據結構 軟件 IT168企業級 2017-05-18

日誌,可以說是程序員最熟悉的一種數據結構了。網絡設備、系統及服務程序等,在運作時都會產生一個叫log的事件記錄;每一行日誌都記載著日期、時間、使用者及動作等相關操作的描述。它存在於大家每天的工作中,是一組只追加,嚴格有序的記錄序列。日誌是一種很有效的數據結構,可用來解決很多分佈式系統的問題。

在5月11日-13日,北京國際會議中心隆重舉行的第八屆中國數據庫技術大會(DTCC 2017)——開源技術分會場上,Twitter消息組技術主管郭斯傑向大家分享了“Apache DistributedLog(分佈式日誌系統)的強一致性簡化”。

Twitter也在用的分佈式日誌系統 值得一用

▲Twitter消息組技術主管郭斯傑

郭斯傑畢業於中科院計算所,加入 Twitter 之前,就職於 Yahoo。專注於分佈式消息中間件和分佈式存儲系統方向。同時,他也是Apache DistributedLog的聯合創始人,Apache BookKeeper的PMC Chair。

郭斯傑先生在演講中指出了目前分佈式系統中存在的一些挑戰:磁盤/服務器的年故障率高達10%、不可用、不一致以及Split-Brains(“腦裂”現象)。

腦裂現象指:本來一個大腦的兩半球互相配合,變成了分裂成兩個獨立的大腦,都認為對方已死。在集群環境中,有這麼幾種可能造成"Split-Brain"現象:1、在集群環境中的節點間的心跳線同時斷掉後,集群系統所處於的一種特殊狀態。例如節點1和2組成一個集群,突然1和2間的心跳同時都斷了,如果此前節點1正在運行應用,心跳都斷掉後2開始去接管應用,強行加載數據,此時就是split-brain。2、集群中節點因為處理器忙或者其他原因暫時停止響應時,其他節點可能誤認為該節點“已死”。後果:節點間爭奪共享磁盤(即資源)的訪問權,都對共享文件系統產生讀寫操作,從而導致共享磁盤文件系統損壞。

在談到這些問題的解決辦法時,郭斯傑首先表示,目前有一些算法的使用已獲得了大家的共識,如Paxos、Zab、Raft……等等。但在此之後,仍有許多困擾。關於命令問題,哪種改變應該首先考慮?至於確定性,命令不會改變,甚至不會多次讀取。還有一個問題是,如何保持複製日誌的一致性?

為真正解決這些問題,郭斯傑向大家分享了Apache DistributedLog。該系統具有如下特性:

  • 高性能。Apache DistributedLog可以在具有大量併發日誌的持久寫入中提供毫秒延遲,並且可以從數千個客戶端處理每秒大量的讀和寫操作。

  • 持久性和一致性。消息被持久化到磁盤上,並複製以存儲多個副本以防止數據丟失。在嚴格的排序下,它們保證了寫入者和讀取者之間的一致性。

  • 高效的扇入和扇出。Apache DistributedLog提供了一個高效的服務層,優化運行的多租戶數據中心環境便或紗等。服務層能夠支持大規模的讀(扇入)和寫(扇出)。

  • 不同的工作負載。Apache DistributedLog支持各種工作負載,從那些對延遲敏感的聯機事務處理(OLTP)應用程序(如分佈式數據庫和內存複製狀態機),實時攝取和計算,到分析處理。

  • 多租戶。為了支持多租戶的大量日誌,Apache DistributedLog專為I/O在實際工作負載中隔離而設計。

  • 分層體系架構。Apache分佈式日誌系統有一個現代的分層架構設計,它將無狀態的服務層與有狀態的存儲層分離。支持大規模寫入(扇入)和讀取(扇出),允許擴展存儲獨立的CPU和內存。

Twitter也在用的分佈式日誌系統 值得一用

▲Apache DistributedLog軟件棧

Twitter也在用的分佈式日誌系統 值得一用

▲日誌流解析

在接受筆者採訪,談及Apache DistributedLog的未來規劃時,郭斯傑先生表示也將順應“時代趨勢”走開源的路線。去年五月份,他們就已經將Apache DistributedLog開源,並且希望以開源的方式壯大社區,同時也在推動與如雅虎、百度等公司的合作,以期共同推動技術的進步,幫助他人更好地適應自己的應用場景。

最後,郭斯傑先生以一個互聯網行業技術人員的身份,向廣大的“同僚”們提出了自己關於職業發展方向的一些建議。郭斯傑認為,計算機領域是一個非常細分的領域,作為此領域內的人士,最重要的應該是抓住自己的興趣點。如果對底層技術比較感興趣,可以深入到其中,通過參與社區的方式去學習瞭解相關的底層技術。而對於上層技術比較感興趣的人,則可通過參與開源技術鍛鍊自己的技術能力,提升自身水平。

相關推薦

推薦中...