消息一定需要在服务端的存储服务里进行存储吗?
需要看需求。
存储在服务端的作用:
1.会话一方用户不在线,上线时进行消息推送。
2.内容审查,监管,电子证据,法律要求。
3.数据分析,舆情分析。
服务端存储需要更多考虑成本和数据安全,也和产品定位有关,比如不需要支持消息多终端同步的应用,可以不在服务端进行存储。当然,还需要考虑国内监管机制是否允许的问题。
存储在客户端,多终端登录时候同步比较困难。即时消息可以放到MQ中,或者缓存中,使用数据抽取工具周期性的将数据提交服务器,进行持久化。服务器存储历史数据和近实时的数据。
一般要求不能丢的消息,如p2p的私信消息,必须要持久化,这样可以做到离线处理和历史拉取; 一般要求允许丢的消息,可以不存储,如广播消息,不存储可以减轻服务端压力,用户收不到也无妨!