5. 用 Go 打造现代 IM 之百万消息 QPS 的数据库

2023-10-08 08:56:33 +08:00
 wkong

单机百万吞吐量的 IM 他的性能瓶颈在哪里?

瓶颈位置

IM 最大的数据的读写就是消息,消息的存储是决定此 IM 系统是否有较高的消息吞吐量的主要原因之一

常见数据库 QPS

MySQL:QPS 一般 3000-7000 左右 (参考: https://blog.csdn.net/tianya_lu/article/details/105096667

MongoDB:QPS 一般在 2 万-4 万左右 (参考: https://blog.csdn.net/sunny_day_day/article/details/108578995

Redis:QPS 一般是 10 万-20 万左右

问题分析

传统的 MySQL QPS 太低,显然不太适合消息这种读写太频繁的场景。

MongoDB 虽然比 MySQL QPS 高不少,但是还远远没有达到我们的预期。

Redis 已经接近了我们的预期,但是 Redis 是内存数据库,不适合存大量的消息,并且有丢消息的概率。

理想中的数据库

是否有一款数据库比 Redis 的 QPS 还要高并且不会丢消息又像 MySQL 一样适合多维度查询的数据库?

我们的开源 IM

悟空 IM (通讯层): https://github.com/WuKongIM/WuKongIM

唐僧叨叨(业务层): https://github.com/TangSengDaoDao/TangSengDaoDaoServer

下一篇:6. 用 Go 打造现代 IM 之自研消息数据库一

2397 次点击
所在节点    程序员
6 条回复
stardew
2023-10-08 09:35:39 +08:00
牛的
cheng6563
2023-10-08 09:51:20 +08:00
意义不明的帖子,求助?技术分享?软件推广?
写入性能不是看 TPS 吗
MySQL 测试贴 "硬盘写入速度在 17M/s , 感觉还没到瓶颈,7200 转机械硬盘的是 90M" 不知道从哪吐槽
root71370
2023-10-08 11:06:30 +08:00
软件推广罢了
pkoukk
2023-10-08 11:12:54 +08:00
额..IM 为什么要高 QPS ?聊天记录不是一般都存在客户端么
jimrok
2023-10-08 11:14:37 +08:00
做 IM 真是卷上天了,一块骨头被一群开源啃了好几遍,每个都说这里有肉。
zhouhuab
2023-10-08 16:24:45 +08:00
盲猜 foundationdb

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/979685

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX