首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony和AWS RDS中的大量并发POST请求

Symfony和AWS RDS中的大量并发POST请求
EN

Stack Overflow用户
提问于 2020-08-17 18:53:17
回答 1查看 95关注 0票数 0

我是一个初级的后端开发人员,每个月平均有大约100.000个用户。我们的高级后台开发人员突然辞职了,现在我只能靠自己了,还有很多东西需要学习。因此,这是初学者的问题。

我们有一个Symfony 3应用程序使用Doctrine和Sonata Admin捆绑包连接到一个MySQL数据库(托管在AWS RDS上),运行在大约2-4个AWS EC2实例上。我们需要处理的大多数请求都是GET请求,它们为每个用户返回相同的数据,因此非常可缓存,这就是为什么我们只需要2-4个EC2实例就可以为大量用户服务的原因。

现在,我的任务是创建一个非常轻量级的“分析”系统,每次用户使用应用程序时,它都会为每个用户存储一些数据。这意味着每个用户每次使用应用程序时都会向数据库写入POST请求。

我们有时在应用程序中有20.000个并发用户。如何才能在不破坏EC2自动伸缩或阻塞数据库的情况下实现这一点?此用户数据对时间不敏感,因此不必立即将其写入数据库。延迟一个小时左右是可以接受的。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-08-18 12:15:35

我推荐使用SNS + SQS + Lambda来实现这一点。一种常见的设计模式称为“扇出”。在此模式中,发布到SNS主题的消息并行分发到多个SQS队列。通过使用此模式,您可以构建利用并行、异步处理的应用程序。例如,您可以在用户每次使用应用程序时向主题发布一条消息。独立的进程(使用AWS Lambda),每个进程从单独的SQS队列读取并将其推送到数据库中。

图片共享来源:https://www.jeremydaly.com/how-to-use-sns-and-sqs-to-distribute-and-throttle-events/

此设计模式的优势:

requirements.

  • There这种设计模式是高度可扩展的,甚至可以很容易地达到百万并发requests.

  • Implementation,因为组件是集成就绪的

  • 这种模式是可重用的,并且可以扩展到任何新的未来requirements.

  • There不需要计划服务器的资本投资,所有组件都是无服务器的,并且您可以只为使用付费。

  • 使用

  • ,集成可以是现有系统中所需的更改非常少。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63449415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档