正在为应用开发新的原型,该原型应能够在短时间内(例如20-30分钟)每分钟处理20.000个以上的传入请求,并将实时结果返回给用户。
示例:我显示一个是/否问题,您应该可以对我们的API进行“是/否”投票,并且我们的API应该对其进行处理,并实时反馈有多少人投了赞成票,有多少人投了赞成票投票否。
所有这些请求都需要保存到我们的MySQL数据库中。
我认为直接将那些20K请求实时保存到数据库中不是一个明智的主意,因为这会给数据库造成巨大的负担,尤其是考虑到我们需要实时数据。
所以我的想法是将Redis用作中间层。 API写入Redis,Redis返回实时计数。
但是我仍然需要能够保留数据。有可用资源时,是否可以告诉Redis将所有行写入MySQL?
还是您会建议一种完全不同的方法?
我也研究过RabbitMQ,将所有插入队列并在可能的情况下对其进行处理,但据我所知这无法返回实时数据
我还没有代码,因为我首先在考虑实现此代码所需的工具。
答案 0 :(得分:0)
您可以同时使用
1。添加Redis
作为带有持久性选项的中间层。
Redis提供了不同范围的持久性选项。
如果您根本不使用持久性选项。 Redis
服务器重新启动时,所有数据都会丢失。
您可以将Redis配置为在各种事件下保存数据
手动调用BGSAVE命令时
Redis关闭时
Redis
与RabbitMQ
一起使用。 Redis向用户显示实时结果。
RabbitMQ
将数据添加到队列中并将数据保存到任何数据库。
RabbitMQ
可以在高峰时段处理负载。因此,所有保存调用都将在队列中。