如何设计一套通用消息交互系统

本文探讨了一套适用于小程序与企业微信用户的通用消息交互系统的设计方案。重点讨论了在线聊天系统的通用设计、消息扩展机制、用户映射体系的建立、消息通信协议及存储层设计等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.如何设计一套通用消息交互系统?(基于小程序与企业微信用户之间)   
 
     (1)在线聊天系统是否设计通用?
          在线聊天系统,终端隔离,即发送端接受端使用唯一id,用于标识两个人员之间的独立,交互直接根据id直接进行交互,即可以根据令牌进行交互.消息系统并不关心终端用户是什么人,只关注两人之间的聊天.
         用意: 聊天系统,不仅可以使用于一个xxxx场景,并且可以用于其他场景,利于电商版本当中商家与用户直接的聊天,等等.
   
     (2)消息扩展?
        消息平台支持消息扩展,即通过第三方工具来建立未读消息提醒功能,目前系统必须支持企业微信提醒.
 
     (3)建立用户映射体系,即消息平台用户与外部用户直接的映射,便于各个平台接入.
 
     (4)消息直接如何通信,基于什么协议进行通信,通信会话如何设计,如何保证消息可靠投递,以及针对未读消息进行标记?  
        消息直接使用推模式还是使用拉模式,两者之间如何协调,基于web版本的在线聊天即websocket,是否支持多会话同时在线模式(暂不考虑)
        使用NIO模式
 
     (5)是否支持存储层隔离?如何设计存储层?
          使用基于redis队列模式的消息存储终端,不考虑消息的可靠传输,一单消息从长连接中出去,即认为消息已经被用户读取.
         为什么不考虑基于数据库的消息通信?
          (1)聊天模式下数据交互往往比较多,所以没必要对数据进行持久化,必然增加对数据库的压力,redis队列天然的分布式设计高吞吐量.
         是否考虑容错?即使redis存储端出现问题也不妨碍用户直接的消息交互?
          (1)不考虑,消息丢了就丢了,一条聊天消息而已,丢了也没多大影响.
 
系统架构设计
        
         

 

参考资料:
 
    (1) 58沈剑消息平台设计  https://mp.weixin.qq.com/s/_2sNm7TkVTL8t3B4Mf-ycg
    (2) infoq 分布式聊天服务器搭建  http://www.infoq.com/cn/articles/game-server-development-2
 
       
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/pettergu/p/9297901.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值