tokio_sky: 使用Rust+Tokio實現併發和多階段資料攝取和資料處理

banq發表於2022-07-17

TokioSky 是一個流處理框架,用於構建併發和多階段資料攝取和流處理,
透過 Rust+Tokio 構建併發和多階段資料攝取和資料處理管道。,TokioSky 讓開發者可以高效地使用資料,有效地使用來自不同來源(稱為生產者)的資料,例如 Apache Kafka、Apache Pulsar 等。
靈感來自Elixir Broadway 

特徵
TokioSky 承擔了定義併發 GenStage 拓撲的負擔,並提供了一個簡單的配置 API,該 API 自動定義併發生產者、併發處理,從而實現了時間和成本高效的資料攝取和處理。它的特點:
  • 生產者- 資料管道的來源
  • 處理器- 程式訊息也可以透過dispatcher
  • BatchProcessor處理組訊息,用於上一階段,沒有下一階段
  • Dispatcher - 三種模式的排程訊息(RoundRobin, BroadCast, Partition)
  • 可定製- 可以使用內建的Producer, Processor,BatchProcessor 像Apache Kafka , Apache Pulsar或編寫您的自定義Producer, Processor,BatchProcessor
  • 批處理- TokioSky 提供內建批處理,允許您按大小和/或時間對訊息進行分組。這在 Amazon SQS 等系統中很重要,在這些系統中,批處理是消費訊息的最有效方式,無論是在時間還是成本方面。 很好的例子 想象處理器必須檢查資料庫連線才能為每個插入操作插入一條記錄,這非常低效,特別是如果我們正在處理大量插入。幸運的是,有了 TokioSky,我們可以使用這種技術,將操作分組為批次,也稱為分割槽。檢視示例
  • 動態批處理- TokioSky 允許開發人員根據自定義標準批處理訊息。例如,如果您的管道需要根據 user_id、電子郵件地址等構建批次,請參閱示例
  • 排序和分割槽 - TokioSky 允許開發人員在工作人員之間對訊息進行分割槽,保證同一分割槽內的訊息按順序處理。例如,如果您想保證與給定 user_id 相關的所有事件按順序處理而不是同時處理,您可以使用帶有 Partitionmode 選項的 Dispatcher。請參閱示例
  • 資料收集器- 當Producer您的應用程式的源是 Web 伺服器並且需要從客戶端請求中吸收資料時,可以使用“收集器”作為Producer非同步吸收資料,然後饋送到管道參見示例
  • 優雅關閉- 首先終止生產者,等到所有處理器工作完成,然後關閉
  • 拓撲- 建立和同步元件


詳細點選標題

這個專案屬於通常被稱為流處理框架的一類軟體。此類別的其他成員是 Confluent 和 Samza。當您遇到以下三個基本問題之一時,您通常會使用此類別:1)您有一個事件流,並且您希望將其轉換為某種聚合資料集(例如頻率表),2)您想要裝飾流帶有附加資料。或 3) 你想協調多個流。一旦你開始沿著這條路走下去,你往往會增加此類操作的管道,並且框架可能開始變得有意義,特別是從可觀察性的角度來看。

相關文章