首页 > 解决方案 > 我们可以用 apache kafka 替换 cron 作业吗

问题描述

我想使用 php 用 apache kafka 替换我的 cron 工作。

这可能吗?

现在我的 cron 确实可以作为数据库的更新。还发送电子邮件,短信取决于条件。还定期更新数据库。并每日备份数据库。

是否可以使用 kafka 实现这一点

标签: phpapache-kafka

解决方案


您需要根据事件而不是“批处理时隙”来设计整个环境,但是是的,理论上这是可能的。作为 shim,您可以从 Cron 中的 Kafka 进程开始,该进程将在可配置的时间内读取消息,然后处理该块。

至于您所要求的,您可以为数据库事件创建一个 CDC / changelog 主题(如果您将此主题设为压缩主题,则无需每日备份,因为每个数据库事件从一开始就在 Kafka 中持续存在数据库历史 - 查看 Debezium 项目作为起点),您可以派生相应的主题emailssms主题,让消费者轮询并触发 SMTP、SMS 或 GCM/APNs 消息,如果这是系统,您可能已经在这样做了您正在迁移。

这些都不一定需要在 PHP 中(或者实际上是 Kafka 在另一个 pub-sub 系统上,就此而言)。我恳请您考虑一种基于微服务的方法,该方法使用对您的用例最有意义的客户端库和技术。例如,AWS 可以集成 Kinesis+SNS+SES,而您拥有等效的 Kafka+SMS+Email 解决方案,无需自己维护基础设施。

但是,在您走这条路之前,您需要停止将数据分批成切片以供 Cron 处理,而是逐个事件发布数据,并在某些时间窗口内根据需要进行连续的滚动聚合


推荐阅读