首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理大量并发用户的插入/更新和计数器

如何处理大量并发用户的插入/更新和计数器
EN

Stack Overflow用户
提问于 2015-10-08 19:15:42
回答 1查看 171关注 0票数 0

我正在编写一个API,它大部分时间都会有中等数量的流量,但在某些情况下会有很多并发用户。假设API应该能够在“突发模式”下每秒处理至少10000个请求。

当一个请求进来时,API需要做两件事(简化)。

1)从数据库中获取计数器。

2)如果计数器低于500 ->,则在数据库中插入新行并增加计数器。如果计数器已达到500,则返回响应而不执行insert。

我的问题是:当我有这么多并发请求时,处理这种情况的最佳实践是什么?

我正在考虑如何确保我永远不会插入超过500行。

您将如何设计数据库?

如何保证数据库的并发性?

如何在不爆炸服务器/cloud的情况下处理这么多并发用户?

我真的不应该使用哪些编程语言(主要与哪些sec服务器/语言可以处理如此多的请求/秒有关)?

我可以更详细地介绍托管、编程语言、数据库选择和缓存--但我不是故意这么做的。

假设我最初选择的是heroku或一个大容量的数字海洋计划,因为它涉及到托管,node (使用restify)作为语言,mongo和redis作为db/caching -但在我进入更多细节之前,我想获得一些最佳实践和技巧。

EN

回答 1

Stack Overflow用户

发布于 2015-10-08 22:10:57

如果不接触你的应用程序,我们就不能猜得更好。我只是建议你一个可能不适合你实际情况的估计,但你可以根据负载和响应时间,数据(文档大小)来扩展或缩小。由于并发写入的文档级锁定,最好使用有线Tiger存储引擎而不是Mmapv1。

如果您有更多的并发读请求和更少的并发写请求(一天500个),但并发不多,那么复制(1个主服务器和2个从服务器)就足够了。

如果你同时有很多写请求(20到50个),那么它可能会减慢读操作,所以你可以使用分片。(3个分片,每个有1个副本,3个配置服务器,每个副本上运行3个mongos )。

随着写请求的增加,你可以增加分片,而对于读请求,你可以增加副本。但最好对NoSql类型的数据库进行最大限度的最佳配置,而且您知道在未来数据将会快速增长。如果您不关心这一点,您将不得不为数据库服务器的管理付出努力,这可能还会花费您的应用程序性能一段时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33014190

复制
相关文章

相似问题

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