php - 我们可以用 apache kafka 替换 cron 作业吗
问题描述
我想使用 php 用 apache kafka 替换我的 cron 工作。
这可能吗?
现在我的 cron 确实可以作为数据库的更新。还发送电子邮件,短信取决于条件。还定期更新数据库。并每日备份数据库。
是否可以使用 kafka 实现这一点
解决方案
您需要根据事件而不是“批处理时隙”来设计整个环境,但是是的,理论上这是可能的。作为 shim,您可以从 Cron 中的 Kafka 进程开始,该进程将在可配置的时间内读取消息,然后处理该块。
至于您所要求的,您可以为数据库事件创建一个 CDC / changelog 主题(如果您将此主题设为压缩主题,则无需每日备份,因为每个数据库事件从一开始就在 Kafka 中持续存在数据库历史 - 查看 Debezium 项目作为起点),您可以派生相应的主题emails
或sms
主题,让消费者轮询并触发 SMTP、SMS 或 GCM/APNs 消息,如果这是系统,您可能已经在这样做了您正在迁移。
这些都不一定需要在 PHP 中(或者实际上是 Kafka 在另一个 pub-sub 系统上,就此而言)。我恳请您考虑一种基于微服务的方法,该方法使用对您的用例最有意义的客户端库和技术。例如,AWS 可以集成 Kinesis+SNS+SES,而您拥有等效的 Kafka+SMS+Email 解决方案,无需自己维护基础设施。
但是,在您走这条路之前,您需要停止将数据分批成切片以供 Cron 处理,而是逐个事件发布数据,并在某些时间窗口内根据需要进行连续的滚动聚合
推荐阅读
- spring-boot - 使用 SpringBoot 的普罗米修斯
- mongodb - $sort 中的 Mongo 和索引问题
- react-native - react-native-video 不适用于 muted=true
- r - 如何根据行索引在数据帧上执行滞后/超前
- javascript - 根据数组中元素的数量反应渲染样式
- java - Android为库模块创建模板
- php - PayPal PHP SDK 抛出错误“找不到类”?
- node.js - 使用“npm start”时,什么会阻止我的 html 页面在计算引擎 vm 中显示
- matlab - matlab无法显示rgb图像
- flutter - 删除滑块的默认边距