单机百万吞吐量的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
通讯层:https://github.com/WuKongIM/WuKongIM
业务层:https://github.com/TangSengDaoDao/TangSengDaoDaoServer
下一篇: 用Go打造现代IM之自研消息数据库一