事件生成器负责监测源系统中的状态变更,并在检测到状态变化时触发事件,这些事件随后可以被下游应用程序接收并处理。以电子商务系统为例,订单管理系统在接到来自电商平台的订单后,便可能激发一个名为OrderReceived的事件。此事件中包含了诸如订单详情、客户资料以及交易信息等关键数据。事件生成器大致可以分为三种类型,如图2-7所示。
图2-7:事件生成器
接下来,我们将逐一探讨各类事件生成器。
现有的OLTP数据库
在处理事务型数据库中的运营数据时,我们可以利用变更数据捕获(Change Data Capture,CDC)技术实现数据流式传输至流处理平台,以便进一步深入分析。CDC能够实时复制源数据库的变更至目标系统,且不会对源数据库的性能造成影响。在这一技术领域,Debezium已经成为捕捉行级变更并将其实时推送至事件流处理平台的行业标杆,它支持包括MySQL、PostgreSQL和MongoDB在内的多种主流数据库。
事件跟踪器
事件跟踪器能够根据Web和移动应用中的用户交互来捕获事件。借助其提供的平台和SDK,我们能够在代码中检测和标注事件生成点。只需触发事件,事件跟踪器便会捕获该事件并将其送往流处理数据平台。同时,事件跟踪器还负责处理异常情况、消息封装和流量控制机制。Segment和Snowplow是两个广受欢迎的事件跟踪解决方案。
特定语言的SDK客户端
为了更好地控制事件生成过程,我们可以选择使用针对特定编程语言的SDK。使用这些特定语言的SDK客户端的优势在于能够自定义序列化格式、控制批处理流程以及控制队列的长度限制。流处理数据平台为主流编程语言提供了特定语言的SDK支持。例如,Apache Kafka就为Java、Python、Go、C#等语言提供了专属的SDK。