您的当前位置:首页正文

[译] 流式处理:使用 Apache Kafka 的 Strea

来源:花图问答

本文讨论使用 Apache Kafka 的 Streams API 向 Rabobank 的客户发送告警。Rabobank(荷兰合作银行)总部位于荷兰,在全球拥有 900 多个分支机构,48,000 名员工和 681 亿欧元的资产。Rabobank 是一家由客户和银行组成的合作银行,一家对社会负责的银行。其目标是成为荷兰金融市场的领导者。Rabobank 还致力于成为全球食品和农业领域的领先银行。Rabobank 向全球数百万客户提供金融产品和服务。


案例:Rabo Alerts

Rabo Alerts 服务可以让 Rabobank 的客户接收其关注的财务事件告警。例如某笔款项从账户中扣除或者记入账户,以及其它更复杂的事件。客户可以根据自己的偏好配置告警,并通过第三方渠道发送:如电子邮件、短信和移动推送通知。值得一提的是,Rabo Alerts 并不是一项新的或试用服务,它已经投产十多年,可供数百万账户持有者使用。

面临的问题

旧的 Rabo Alerts 实现主要是在大型机系统上。所有的处理步骤都是面向批处理的,大型机会根据告警类型派生告警,并每隔几分钟发送,但每天只发送几次。这种实现非常稳定可靠,但 Rabobank 希望解决两个问题:(1)灵活性不足;(2)告警发送速度慢。

由于对现有告警进行更改或添加新(更智能)的告警需要很大的工作量,因此旧的 Rabo Alerts 对适应新业务需求的灵活性很低。在过去几年中,Rabobank 在其在线环境中引入新功能的步伐大幅增加,旧有僵化的告警解决方案变得越来越成问题。

告警的传递速度也是一个问题,旧的 Rabo Alerts 可能需要 5 分钟到 4-5 小时才能向用户发送告警(取决于告警类型和批处理窗口)。如果在十年前,这个速度可能足够快了,但如今客户的期望值要高得多。现在 Rabobank 向客户提供“相关信息”的时间窗口要比过去十年小得多。

因此,如何重新设计现有的机制,使其具有更强的扩展性及更快的速度,便是摆在眼前的问题。当然,重新设计的 Rabo Aerts 也需要稳定可靠,以便能够正确地为现有数百万的用户群提供服务。

从小处着手

在过去的一年里,我们一直使用 Kafka 及其 Streams API 重新设计和实现告警机制。由于整个 Rabo Alerts 服务相当庞大,我们决定从四个简单但使用率高的告警开始:

  • 余额高于阈值
  • 余额低于阈值
  • 超过阈值的贷记(Credit)
  • 超过阈值的借记(Debit)

这些告警的每一个都可以从当前账户系统的支付信息流中派生出来。例如:“当我的余额低于 100 欧元时向我发送短信”或“当有人给我超过 1000 欧元时向我推送消息”(通常用于存款通知)。

以下截图说明如何通过手机银行 app 配置 Rabo Alerts ——

image