利用Apache Kafka、Flink和Druid构建实时数据架构( 三 )


利用Apache Kafka、Flink和Druid构建实时数据架构

文章插图
Druid 的查询引擎如何处理实时和历史数据
假设我们正在构建一个用于监控登录可疑行为的应用程序,那么我们可能希望在五分钟的时间窗口内设置一个阈值--更新并发布登录尝试的状态 。凭借Druid , 当前的登录尝试可以与历史数据相关联,以识别过去未发生、但的确被利用过的登录安全漏洞 。据此,历史背景将有助于确定当前的登录反复尝试是否属于正常行为 。
此外,如果您的应用程序需要接收大型批处理文件,且对瞬息万变的事件进行大量分析(如:当前状态、各种聚合、分组、时间窗口、以及复杂连接等),同时还要提供历史背景,并通过高度灵活的应用程序接口来检索数据集,那么这些都是Druid的优势所在 。
选择Flink和Druid的检查表可见,Flink和Druid都是为流数据而构建的 。虽然它们有着一些高层次的相似之处,例如:都属于内存内部(in-memory)、都能扩展、都能并行,但是正如前文所述,它们的架构实际上是为完全不同的用例而构建的 。下面 , 我为您整理了一份简单的、基于工作量来判断该如何选择的检查表:
  1. 您是否需要对流式数据进行实时转换或连接?
  • Flink就是这样一款专为实时数据处理而设计的服务 。
  1. 您需要同时支持许多不同的查询吗?
  • Druid可以支持高QPS分析,而无需管理各种查询和任务 。
  1. 事件相关指标是否需要持续更新或汇总?
  • Flink支持有状态的复杂事件处理 。
  1. 分析是否更加复杂 , 是否需要与历史数据进行比较?
  • Druid可以方便快捷地查询实时数据和历史数据 。
  1. 您是否正在为面向用户的应用程序提供数据可视化?
  • 可先使用Flink予以填充,然后将数据发送到作为数据服务层的Druid 。
总的说来 , 在大多数情况下,您的选择不会是“非Druid即Flink”,而是“既Druid又Flink” 。它们各自的技术特性使得两者能够共同支持各种实时应用 。
小结随着企业对于数据实时性的要求越来越高,数据团队需要重新考虑端到端的数据工作流程 。这就是为什么许多公司已将Kafka+Flink+Druid作为构建实时应用的开源数据架构的原因 。
译者介绍陈峻(Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控 , 专注传播网络与信息安全知识与经验 。
原文标题:Building a Real-Time Data Architecture With Apache Kafka, Flink, and Druid ,作者:David Wang




推荐阅读