单机百万吞吐量的 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 之自研消息数据库一
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.