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

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

(3) websocket in Net Core https://docs.microsoft.com/en-us/aspnet/core/fundamentals/websockets?view=aspnetcore-2.1

原文地址:https://www.cnblogs.com/pettergu/p/9297901.html

时间: 2024-10-10 04:25:05

如何设计一套通用消息交互系统的相关文章

组件化设计:如何构建一套出色的组件系统

写在前面的话 写了好多年业务,想输出一套前端的UI组件,但是对组件这个概念不是很深入了解,所以参考了很多资料,以及结合自己的理解,做出归纳和总结.所以才有了这一篇,从什么是组件,到什么是软件中的组件化设计,再到组件设计中有什么优势和挑战,到最后如何构建一套出色的组件系统.每个人的想法都不是一样的,所以这一套组件设计思想,可能也并不完善,仅作为大家的参考,也欢迎大家补充. 什么是组件? 这就是我们现实生活中,最形象最贴切的物品了. 图一是一堆齿轮驱动的机器,每个齿轮都是单独存在的,如果一个齿轮坏了

《通用试题库管理系统的设计与实现》9

一:基本信息 1标题:<通用试题库管理系统的设计与实现> 2时间:2013 3来源:电子科技大学硕士学位论文 4关键词:试题库,ASP.NET,随机算法.二:研究内容 1:研究背景. 2:技术介绍:XML.ASP/NET.ADO/NET.JAVAWEB数据库. 3:系统分析: A:需求分析. B:数据业务流程分析. C:功能分析. D:运行分析. 三:流程图: 系统功能设计流程图: 用户管理流程图: 四:总结:       比较了随机组卷算法.回溯试探算法和遗传算法的优点和缺点,命题实际需求,

《通用试题库管理系统的设计与实现 》19

一.基本信息 标题:<通用试题库管理系统的设计与实现 > 时间:2014 来源:承德石油高等专科学校 关键字:试题库; 设计; 实现 二.研究内容 问题定义:本文献设计的通用试题库管理系统,重点要解决传统试题库的通 用性差.交互性弱和界面缺乏友好等问题,同时对存放试题的数据库进行合理的设计,提高扩展性和并 发控制的能力,为以后试题库改版为 C/S 或 B/S 模式做好准备,同时对传统的组卷算法进行改进,提高 组卷的速度和合理性. 三.流程图 四.总结 本通用题库管理系统具有良好的通用性;题库管

《基于 VBA 技术的通用试题库管理系统的设计与实现》20

一.基本信息 标题:<基于 VBA 技术的通用试题库管理系统的设计与实现> 时间:2017 来源:吉 林 大 学 关键字:VBA,试题库,随机抽题,自动组卷 二.研究内容 问题定义:该系统主要包括三个模块.题库维护模块:在题库文档中利用Word的图文混排功能,对试题和答案进行增加.删除和修改,并且“题库文档”提供了“参数检测”.“标题涂色”和“查找重复题”的功能,“标题涂色”使试题看起来更醒目,“查找重复题”使查找重复题目更轻松,“参数检测”避免人为错误,提高程序的实用性.信息统计模块:可以对

Google正着手开发一套重新设计的Android系统,统一整合应用和服务的用户体验

<<<-------------  <_< 向左看 根据ibtimes的消息,Google正在计划统一整合Android应用和服务的设计元素,推出名为"Quantum Paper"(量子纸)的设计语言. 消息称,Google正在着手开发一套经过完全重新设计的Android系统,革新程度堪比苹果iOS 7. 这一重大更新计划名为"Quantum Paper",它将影响Google平台上的所有产品和服务.不论接入Google服务的是何种设备

大规模分布式系统架构与设计实战之通用包工头模式

包工头模式 包工头 – 工人模式: 包工头工人模式我是从一本书上看到的<大规模分布式系统架构与设计实战>.“包工头-工人”模式会使用到Anycmd的User模块中去.AC是一个隐式的项目.一个项目只有一个包工头,一个包工头可以雇佣很多工人,一个工人在一个项目下只受雇于一个包工头.每一个工人都是自己的包工头. 这是军队管理的组织结构. 包工头可以把项目拆分成很多子项目,包工头可以把新的子项目承包给新的包工头,每一个工人都可以承包项目,每一个工人都有机会成为包工头,承包项目的工人立即成为该项目的包

请设计一套图书馆借书管理系统的数据库表结构

请设计一套图书馆借书管理系统的数据库表结构:可以记录基本的用户信息.图书信息.借还书信息:数据表的个数不超过6个:请画表格描述表结构(需要说明每个字段的字段名.字段类型.字段含义描述): 在数据库设计中应: 1.保证每个用户的唯一性: 2.保证每种图书的唯一性:每种图书对应不等本数的多本图书:保证每本图书的唯一性: 3.借书信息表中,应同时考虑借书行为与还书行为,考虑借书期限: 4.保证借书信息表与用户表.图书信息表之间的参照完整性: 5.限制每个用户最大可借书的本数 6.若有新用户注册或新书入

【翻译】DotNetMQ: 一个.NET版完整的消息队列系统

在一个大型的分布式系统中,消息队列是不可缺少的中间件,能很好的解决异步消息.应用解耦.均衡并发等问题.在.net中,偶然发现一个效率不错.安全可靠.功能齐全的消息组件,忍不住翻译过来,供大家快速预览. 注:原作者用windows服务启动消息队列服务,但是本人在win10上测试出错,可自行改成控制台启动消息队列服务,然后用第三方工具注册服务(如:SrvanyUI) 原文:http://www.codeproject.com/Articles/193611/DotNetMQ-A-Complete-M

Winform应用程序实现通用消息窗口

记得我之前发表过一篇文章<Winform应用程序实现通用遮罩层>,是实现了透明遮罩的消息窗口,功能侧重点在动图显示+消息提醒,效果看上去比较的炫,而本篇我又来重新设计通用消息窗口,功能重点在于消息提醒.进度报告,当然如果大家时间,可以将两种相结合,那样就会更完美了,我这里仍是以实现功能为主,由于代码相对简单,我就直接贴上所有代码,大家可以直接复制到本地测试,若发现问题可自行改正或反馈给我,我来完善,谢谢! using System; using System.Collections.Gener