我什么时候应该从 Symfony EventDispatcher 切换到 RabbitMQ(任何 *MQ 库)?
When should I switch from Symfony EventDispatcher to RabbitMQ (any *MQ library)?
我目前在想的是,在我们的平台上,用户产生的事件数量每天都在增加(通话开始、通话结束、通话记录准备好、用户被阻止等),所以什么时候应该是时候从 Symfony EventDispatcher 切换到更高效、可扩展的东西了吗?
如果我错了,请纠正我:Symfony EventDispatcher 将每个订阅者加载到服务器 RAM 中并保持它直到请求被处理?如果是,那意味着 2 个生成的事件将占用 RAM 中 2x(所有订阅者的总和 类)内存,这将导致我增加服务器 RAM,这将导致我支付更多费用而不是使用有效的事件方法处理(库、系统架构等)。
恕我直言,切换到 MQ 的主要原因应该是代码执行时间长。
如果您有很多事件(例如对数据库的操作),那么您的执行时间就会增加。
事件在请求-> 响应中触发,使用 MQ,您可以将其放在应用程序之外,这意味着您将有更好的执行时间,但所有事件操作都将正常工作 "on background" - 所以它不会是 "real time".
就我个人而言,我从未见过直接来自 subscribers/listeners 的高 ram 使用率 - 即使在一些大型项目中也是如此。
我目前在想的是,在我们的平台上,用户产生的事件数量每天都在增加(通话开始、通话结束、通话记录准备好、用户被阻止等),所以什么时候应该是时候从 Symfony EventDispatcher 切换到更高效、可扩展的东西了吗?
如果我错了,请纠正我:Symfony EventDispatcher 将每个订阅者加载到服务器 RAM 中并保持它直到请求被处理?如果是,那意味着 2 个生成的事件将占用 RAM 中 2x(所有订阅者的总和 类)内存,这将导致我增加服务器 RAM,这将导致我支付更多费用而不是使用有效的事件方法处理(库、系统架构等)。
恕我直言,切换到 MQ 的主要原因应该是代码执行时间长。
如果您有很多事件(例如对数据库的操作),那么您的执行时间就会增加。
事件在请求-> 响应中触发,使用 MQ,您可以将其放在应用程序之外,这意味着您将有更好的执行时间,但所有事件操作都将正常工作 "on background" - 所以它不会是 "real time".
就我个人而言,我从未见过直接来自 subscribers/listeners 的高 ram 使用率 - 即使在一些大型项目中也是如此。