gpt4 book ai didi

mongodb - 从多个进程并发访问数据库或内存文件,这可能吗?

转载 作者:可可西里 更新时间:2023-11-01 11:45:59 24 4
gpt4 key购买 nike

这是我的情况。我有一个为多个用户设计的服务器应用程序,因此同时有很多读/写操作。并且响应需要快速。

目前我将所有数据都缓存在内存中,所以数据读写操作和我们预期的一样快。为了防止数据锁给我带来问题,我使用队列来排队用户的请求,让他们进入handler一个一个的处理。

但是很快我发现了一个问题。程序一次只能处理一个请求。即使是程序基准计时器也报告我它使用了零毫秒来处理,但在一秒钟内处理请求仍然有限制。假设现在我每秒处理大约 100 次。

所以我正在寻找一些更并发的方法,比如 8 个进程同时处理 8 个请求。那太好了。但数据共享存在更大的问题,我不想重新发明轮子。所以我检查了 mongodb、redis 和 sqlite。

这是我的作业,如果我错了请纠正我,非常感谢

mongodb 和 redis 确实如他们所说的那样快,但他们使用相同的机制,他们一次可以处理一个请求,这不是我想要的。

所以 sqlite 更接近,多个进程可以同时打开同一个 db 文件并读取,痛苦是它的写锁(我不知道 sqlite3 中的新锁有多好)。

这是我的问题,对于这种情况是否有可靠且好的解决方案?如果我将写入过程合二为一,会有帮助吗?

谢谢你的评论

最佳答案

MongoDB 的解决方案是分片。 MongoDB sharding基本上允许您在问题上投入更多的处理器。更多处理器 = 更多写入线程。

每个 MongoDB 实例只有一个写线程。分片提供更多实例,因此允许更多写入。

不过,这里还有一个更大的问题。磁盘吞吐量。

如果整个事情都在 RAM 中,我已经让 Mongo 每秒运行超过 1000 次插入。但是大多数人将 Mongo 用作具有实际文件支持的数据库。因此,如果您使用 Mongo 进行非常繁重的写入,则必须准备好能够接受该吞吐量水平的磁盘。

同样,解决磁盘吞吐量问题的方法是分片。建立更多的分片,您将获得更少的写入/磁盘,基本上更少的锁定。

关于mongodb - 从多个进程并发访问数据库或内存文件,这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4233132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com