Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 扩展symfony/mongo应用程序_Mongodb_Symfony_Rabbitmq_Scaling - Fatal编程技术网

Mongodb 扩展symfony/mongo应用程序

Mongodb 扩展symfony/mongo应用程序,mongodb,symfony,rabbitmq,scaling,Mongodb,Symfony,Rabbitmq,Scaling,感谢阅读 我需要有关扩展实际堆栈的技术专业知识 用php编写的主应用程序(symfony 3) rabbit mq作为后端系统,以避免延迟(消息由php cli脚本处理,再次使用symfony) 蒙戈数据库 1个主服务器,承载所有内容 我的应用程序类似于mailchimp,sendInblue,它是一个电子邮件自动化工具 客户可以在我们的系统(api)中上传自己的联系人数据库 客户端可以将电子邮件配置为发送到特定时间 客户可以定义一些规则来确定是否应该向特定联系人发送电子邮件 它与400

感谢阅读
我需要有关扩展实际堆栈的技术专业知识

  • 用php编写的主应用程序(symfony 3)
  • rabbit mq作为后端系统,以避免延迟(消息由php cli脚本处理,再次使用symfony)
  • 蒙戈数据库
  • 1个主服务器,承载所有内容
我的应用程序类似于mailchimp,sendInblue,它是一个电子邮件自动化工具

  • 客户可以在我们的系统(api)中上传自己的联系人数据库
  • 客户端可以将电子邮件配置为发送到特定时间
  • 客户可以定义一些规则来确定是否应该向特定联系人发送电子邮件
它与400万联系人配合良好,我们每天发送15万封电子邮件

我们的活动增长非常快,我们预计每天发送300万封电子邮件,联系人数据库有2亿份文档

  • 我可以用doctrine+mongodb处理数十亿行文档吗
  • 我期望面对哪些性能问题
  • 我知道我可以通过切分在多个系统中分发数据集,还有其他方法吗
  • 在这种情况下,php代码是否需要(完全?)重构以进行扩展
  • 假设我要求我的管理系统升级系统以处理数十亿行,我需要在代码中考虑这一点吗
现在让我们谈谈更具体的问题,如何处理联系人以发送电子邮件?
我的实际实现是这样的:

  • 我有400万客户需要在上午9点到晚上21点之间进行评估
  • cron每分钟向rabbitmq发送6000个联系人id
  • php进程(symfony控制台脚本)始终在运行,并等待处理新的联系人id
    • 从mongodb获取联系文档
    • 评估规则
    • 如果规则正确,请发送电子邮件
我使用supervisorD管理始终运行的php cli脚本。
由于速度不够快,我在supervisord中设置了6个运行进程

但我不能把60个并行php进程快10倍,对吗? 如何扩展这样一个系统?
您是否会以不同的方式实现此功能,如果是,如何实现

最后一个重要的问题是,考虑到所有这些,我能期望迁移到nodejs堆栈的好处吗

非常感谢