2015 年底,我们的 IM 服务出现一次故障,好多用户连接不进来,当时的用户量很小,也就 几万用户吧。是的就这么几万用户我们的 IM 就挂了。当时记得用的是 mosquitto,期间我们做了两次源码修改,我们把 topic 的树状存储换成了 hashTable,把 select 的网络模型换成了 epoll,下行消息的处理效率从 300/s,提升到了 6000/s。当时解决了我们一下问题,但是最终还是替换成了 emqttd,这个支持集群,稳定性也更好。这个过程说明,用什么技术是根据当前是要面临的问题来看的,不存在万能的技术,只要够用就好。