Apache分布式日誌系統:高通量、低延遲

2020-12-05 IT168

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

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


▲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和內存。


▲Apache DistributedLog軟體棧


▲日誌流解析

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

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

相關焦點

  • 使用Flink進行實時日誌聚合:第一部分
    分布式數據處理中的一個常見挑戰是從不同的計算節點收集日誌,並以一種可以在以後進行有效搜索以進行監視和調試的方式來組織日誌。用於描述此日誌收集過程的術語是 日誌聚合。日誌聚合:從不同來源收集日誌,以提供整個系統的整體視圖。
  • Apache DolphinScheduler 1.3.2 發布,性能提升 2~3 倍
    、任務提交監控、各種不同命令類型的邏輯處理 MasterTaskExecThread 主要負責任務的持久化Workerworker 也採用分布式無中心設計理念,worker 主要負責任務的執行和提供日誌服務。
  • 聊聊分布式系統的數據一致性
    進入公司以來,先後參與了分布式資料庫、分布式文件系統、NOS對象存儲雲服務等多個大型存儲系統的開發工作。保證各個數據副本間的一致性,是評價存儲系統優劣的核心指標,也是貫穿整個開發過程中的討論重點。我們新版本分布式文件系統用的算法PacificA、zookeeper用的ZAB,都解決了這個事情。這些都算是在某些更嚴格要求場景下的Paxos特例。基於狀態機複製來做數據多副本的一致性,要面臨的一個困難是性能可能達不到要求。主要是兩方面,一個是底層的日誌複製協議吞吐量不夠高。
  • 國信放出「超級大招」——全鏈路超低延遲交易解決方案
    作為低延遲交易賽道的領跑者,國信證券擁抱技術革命,鼎力打造集FPGA行情系統、新一代分布式櫃檯系統、極速網絡環境、兩地雙中心報盤等低延遲交易技術於一體的新一代低延遲交易解決方案。從交易所行情出發,經解碼轉發至用戶,用戶發出訂單至交易所整個鏈路實現超低延遲!
  • Apache SkyWalking(Incubating) 5.0.0-alpha 發布
    5.x版本系列的首次發布,系統迎來了全新的UI和功能特性。現代化的UI,後端複雜的分析能力,展現了從3.x到5.x的跨越,以及技術迭代。新版本從7個維度可視化剖析分布式系統的運行情況1. 幫助從單個實例的角度查看系統的運行情況。可以通過搜索框查詢到任何一個在運行的進程。
  • 一文總結:分布式一致性技術是如何演進的?
    阿里妹導讀:分布式一致性(Consensus)作為分布式系統的基石,一直都是計算機系統領域的熱點。近年來隨著分布式系統的規模越來越大,對可用性和一致性的要求越來越高,分布式一致性的應用也越來越廣泛。縱觀分布式一致性在工業界的應用,從最開始的鼻祖Paxos的一統天下,到橫空出世的Raft的流行,再到如今Leaderless的EPaxos開始備受關注,背後的技術是如何演進的?
  • 阿里開源otter:分布式資料庫同步系統
    本周一(8月19日),阿里巴巴宣布開源分布式資料庫同步系統otter。負責otter項目的阿里巴巴技術專家七鋒(@agapple0002)介紹,otter是異地雙A機房的資料庫同步系統,解決長距離機房同步、雙A的數據一致性問題。  otter的誕生是由異地資料庫同步需求決定的。
  • Apache Eagle:分布式實時 Hadoop 數據安全方案
    摘要:日前,eBay公司隆重宣布正式向開源業界推出實時分布式Hadoop數據安全方案 - Apache Eagle,作為一套旨在提供高效分布式的流式策略引擎,
  • Apache Hadoop 3.0.0 GA 正式發布,要求 Java 8
    更多關於HDFS的糾刪碼可以參見http://hadoop.apache.org/docs/r3.0.0-beta1/hadoop-project-dist/hadoop-hdfs/HDFSErasureCoding.html或者直接閱讀本博客Hadoop 3.0糾刪碼(Erasure Coding):節省一半存儲空間的相關介紹。
  • Apache Airflow 2.0 發布,Airbnb 開源的調度系統
    Apache Airflow 2.0.0 已正式發布,Airflow 是一個靈活、可擴展的工作流自動化和調度系統,可編集和管理數百 PB 的數據流。
  • 使用Apache Mesos 打造分布式資源調度系統
    為了從不同EC2實例為任務分配資源,我們需要一種能對可用資源進行調度,並能在分布式這樣的調度器是一種相當簡單的API,因此也能更專注於調度邏輯,並對分布式系統中不可避免出現的故障做出回應。藉此用戶可以針對不同用例編寫不同調度器,不像Mesos那樣為所有用例使用一個統一的調度器。下圖來自Mesos文檔,展示了「框架1」收到「代理1」的指令啟動兩個任務的過程。
  • JuiceFS 開源,分布式文件系統
    1 月 11 日, Juicedata 果汁數據科技宣布開源分布式文件系統 JuiceFS。
  • Apache Kudu 1.8.0 發布,Hadoop 生態數據存儲系統
    Hadoop 數據存儲系統 Apache Kudu 1.8.0 已發布,該版本包含以下新特性:引入了手動數據重新平衡工具,可用於在平板電腦伺服器之間重新分配表副本添加了對 Spark Streaming DataFrames 的支持到 Kudu Spark 連接器為 Python 客戶端添加了Pandas支持詳情請看發布說明:https://kudu.apache.org
  • DTCC2020阿里雲李飛飛:雲原生分布式資料庫與數據倉庫系統點亮數據...
    在日前的 DTCC 2020大會上,阿里巴巴集團副總裁、阿里雲資料庫產品事業部總裁、ACM傑出科學家李飛飛就《雲原生分布式資料庫與數據倉庫系統點亮數據上雲之路》進行了精彩分享。資料庫系統架構演進關鍵詞:單節點、共享狀態、分布式
  • 一文理解分布式架構
    在分布式數據系統中,用戶感覺不數據是分布的,即用戶不須知道關係是否分割,有無副本,數據存在於那個站點以及事物在哪個站點上執行。簡單來說:在一個分布式系統中,一組獨立的計算機展現給用戶的是一個統一的整體,就好像是一個系統似的。分布式系統作為一個整體對用戶提供服務,而整個系統的內部的協作對用戶來說是透明的,用戶就像是指使用一個mysql 一樣。
  • 微軟發布 Project Brainwave,基於英特爾 FPGA 的低延遲深度學習雲...
    雷鋒網消息:今日,微軟發布了 Project Brainwave,一個基於 FPGA 的低延遲深度學習雲平臺。微軟表示:「該系統為實時 AI 而設計——這意味著,它能以極低的延遲在接收數據後立刻處理請求。
  • 在Apache Kudu上對時間序列工作負載進行基準測試
    高性能、低延遲的隨機查找– 除了掃描大量數據外,在線操作案例(如儀錶板或實時監控)還需要能夠以非常低的延遲和高吞吐量獲取短期數據。例如,為給定實體獲取一小時的數據可能具有10ms的第95個百分位延遲SLA。乍看起來,這些要求將需要專門為時間序列構建的專用資料庫系統。
  • Apache Struts 2.5.22 GA 發布
    此版本主要變更內容如下: 修復在某些客戶端中出現文件上傳失敗的錯誤 listValueKey 中不存在的屬性拋出異常 即使啟用 logMissingProperties 也無法獲取 OgnlValueStack 日誌 Struts 2.8.20 中不再提供對靜態變量的調用 訪問靜態成員時 ProxyUtil 類中會出現 NullPointerException 由於並發,JSON
  • 海量日誌分析技術,聽說IT達人都想知道……
    而這些非結構化數據中,佔據主導位置的是日誌數據,可以說日誌數據是「大數據」分析的核心。這些數據貫穿所有的企業經營活動,用戶的操作行為、伺服器的系統日誌、網絡設備的日誌記錄、應用程式的調試日誌等等,會直接影響企業的日常運行,與IT運維人員也是息息相關。二.海量日誌數據有什麼特徵?