tokio_sky: 使用Rust+Tokio實現併發和多階段資料攝取和資料處理
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) 你想協調多個流。一旦你開始沿著這條路走下去,你往往會增加此類操作的管道,並且框架可能開始變得有意義,特別是從可觀察性的角度來看。
相關文章
- 資料清洗和資料處理
- 海量資料的併發處理
- 關於資料庫事務併發的理解和處理資料庫
- mysql大資料高併發處理MySql大資料
- 再談資料的併發處理
- 資料庫發展階段之資料庫系統階段資料庫
- 使用Storm、Kafka和ElasticSearch處理實時資料 -javacodegeeksORMKafkaElasticsearchJava
- 實時資料處理:Kafka 和 FlinkKafka
- 資料庫事務和MVCC多版本併發控制資料庫MVC
- java大資料處理:如何使用Java技術實現高效的大資料處理Java大資料
- 使用Spark和Cassandra進行資料處理(一)Spark
- 資料預處理和特徵工程特徵工程
- 使用資料庫處理併發可能導致的問題資料庫
- 機器學習:探索資料和資料預處理機器學習
- Pinterest使用MemQ、Singer和Kafka最佳化大資料攝取RESTMQKafka大資料
- Python資料科學(五) 資料處理和資料採集Python資料科學
- 使用Kafka和Flink構建實時資料處理系統Kafka
- SSL連線分為兩個階段:握手和資料傳輸階段
- Pytorch資料讀取與預處理實現與探索PyTorch
- FastCopy包含和排除資料夾處理AST
- 使用QSerialport讀取串列埠資料並處理串列埠
- C++進階(點陣圖+布隆過濾器的概念和實現+海量資料處理)C++過濾器
- 資料處理之欄位合併
- Oracle之 資料塊、區段和段Oracle
- 資料庫開發(22)高階事務處理資料庫
- 使用R和Apache Spark處理大規模資料 [session]ApacheSparkSession
- 支付類系統資料處理和資料中臺的資料處理方式有什麼不同?
- C#實現DataTable資料分割處理C#
- 升訊威線上客服系統的併發高效能資料處理技術:為多執行緒處理同步資料執行緒
- Dede呼叫資料庫失敗,無法實現資料處理資料庫
- 集合資料處理(C#、JavaScript 和 Java)C#JavaScript
- MySQL-日期和資料處理函式MySql函式
- JDBC 處理CLob和Blob型別資料JDBC型別
- 資料併發性和一致性——資料庫概念資料庫
- Excel高階應用教程:資料處理與資料分析Excel
- 資料產品經理職業發展的四個階段
- django使用多個資料庫實現Django資料庫
- python 資料處理(字串擷取、()\[]\{}資料型別、{}字典資料取值)Python字串資料型別