Kaskada:现代、开源的事件处理
kaskada.io | 文档
Kaskada是一个统一的事件处理引擎,它在一个高级的、声明式的查询语言中提供了有状态流处理的所有功能,专门设计用于批量和实时处理事件。
Kaskada的查询语言基于SQL的最佳特性,提供了一种更具表现力的方式来计算事件。查询简单且声明式。与SQL不同,它们也简洁、可组合,并且专为处理事件而设计。通过专注于事件处理用例,Kaskada的查询语言使得推理事件发生的时间、特定时间点的状态以及结果如何随时间变化变得更加容易。
Kaskada是一个现代计算引擎,专为批量或实时处理事件而设计。它使用Rust编写并基于Apache Arrow构建,Kaskada可以在不需要分布式执行的复杂性和开销的情况下计算大多数工作负载。
在kaskada.io阅读更多信息。 查看文档以开始使用。
特性
- 有状态聚合:聚合事件以产生一个连续的时间流,其值可以在任意时间点观察。
- 自动连接:每个表达式都与一个"实体"相关联,允许自动连接表和表达式。实体消除了冗余的样板代码。
- 基于事件的窗口:在时间推移过程中收集事件,并根据其他事件对它们进行聚合。有序聚合使描述时间交互变得容易。
- 流水线操作:管道语法允许多个操作链接在一起。按照你思考的顺序编写操作。它是一个完整的时间流系统,使得聚合结果的聚合变得容易。
- 行生成器:从事件转变为时间序列。与分组聚合不同,生成器即使在没有输入时也会产生行,允许你对某些事情没有发生做出反应。
- 连续表达式:在任意时间点观察聚合的值。时间流要么是"离散的"(瞬时值或事件),要么是"连续的"(由有状态聚合产生的值)。连续时间流让你可以组合从不同事件源计算的聚合。
- 原生时间旅行:将值向前(但不向后)移动时间,允许你在不冒时间泄露风险的情况下组合不同的时间上下文。移位值使得比较"现在"的值和过去的值变得容易。
- 简单、可组合的语法:它完全由函数构成。没有全局状态,没有依赖关系需要管理,也没有远距离的诡异操作。快速理解查询在做什么,并轻松重构以使其符合DRY原则。
加入我们!
我们正在建立一个活跃、包容的用户和贡献者社区。 来Slack认识我们吧 - 我们很乐意见到你!
对于特定问题,请提交issue。
讨论和开发
大多数开发讨论都在GitHub上的这个仓库中进行。
贡献
我们欢迎所有的贡献 -- 问题、修复、文档改进、功能和想法。
查看CONTRIBUTING.md以获取更多详细信息。