CN107659492A - 一种高可靠性即时通讯系统 - Google Patents
一种高可靠性即时通讯系统 Download PDFInfo
- Publication number
- CN107659492A CN107659492A CN201711045930.9A CN201711045930A CN107659492A CN 107659492 A CN107659492 A CN 107659492A CN 201711045930 A CN201711045930 A CN 201711045930A CN 107659492 A CN107659492 A CN 107659492A
- Authority
- CN
- China
- Prior art keywords
- message
- client
- server
- high reliability
- instant communicating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/23—Reliability checks, e.g. acknowledgments or fault reporting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明的技术方案包括一种高可靠性即时通讯系统,该系统包括多个客户端和消息服务器:客户端,用于进行客户端消息交互,以及,对应客户端之间的交互信息发送至消息服务器;消息服务器,用于对客户端之间的交互信息进行存储,以及,根据任意客户端的请求从存储数据获取对应的交互信息进行补全。本发明的有益效果为:文件系统发生故障时容灾恢复能力较强;轻量级的TCP通讯和短连接方式能够规避大部分的链路不可靠问题;多个服务能够有效的实现故障隔离,提升整体服务的可靠性和可用性。
Description
技术领域
本发明涉及一种高可靠性即时通讯系统,属于计算机即时通信领域。
背景技术
消息传输的高可靠性在即时通讯系统中是最为基础、也是最核心的部分之一,同时也是衡量通讯系统的质量的重要指标。本文主要描述常见通讯系统模型的实现原理,分析影响消息传输可靠性的常见问题,并介绍有度即时通服务体系是如何通过架构及技术细节实现高可靠的消息送达机制。
常见即时通讯模型及存在的问题如下所示:
一、快递式系统模型,参考图1所示。RTX为典型的快递式企业级即时通讯系统,消息发送过程不是一个完整事务,如上图所示,以下这些场景将出现丢消息:
(1)客户端A将发消息送给服务器,服务器收到后回复客户端A发送成功,后续中转由服务器保障,此时如果服务器进程重启,内存中的消息没有存储,将出现消息丢失。
(2)客户端A将消息成功发送给服务器,服务器转发给客户端B,客户端B网络层收到后回复接收成功,但客户端B尚未将消息保存到数据库,此时客户端B进程关闭,也将出现消息丢失;
(3)客户端A将消息成功发送给服务器,服务器发现客户端B为离线,将消息发送给离线消息服务,离线消息服务回复接收成功,但离线消息未保存进磁盘前进程异常退出,也将出现丢失消息。
二、改进式快递模模型,参考图2所示。
客户端A消息发送出去后,当且仅当收到客户端B的回复才算成功,这种改进可以保障网络层不丢消息,但从整体系统架构来看依然有漏洞,网络程序设计架构大体如下:
网络层收到请求,回复对方消息已收到,接下来将请求抛给逻辑层,逻辑层将消息保存到存储层并抛给用户界面层。
通过实践发现,网络层回复对方消息已收到后,消息未保存进数据库之前程序退出,将出现消息丢失。
如果是离线消息服务,网络层收到很多离线消息抛给逻辑层,逻辑落地磁盘速度如果跟不上,逻辑的队列中将堆积有消息,此时服务重启,逻辑队列中未保存的离线消息都将丢失。
这种演进解决原来系统中的上述问题(1),但问题(2)、(3)并没有解决。
三、邮件服务模型,参考图3所述。
邮件服务是一种历史悠久的通讯系统,客户端发送邮件是一个完整的事务,只有消息落地后才返回成功,中间任何一个环节出现故障都回复失败,该模式能保障发消息不丢,如果再保障接收方能成功拉取到消息,将演进出一种更极致的消息高到达率解决方案。
发明内容
本发明的技术方案提供了一种高可靠性即时通讯系统用于解决现有技术的不足。
本发明的技术方案包括一种高可靠性即时通讯系统,该系统包括多个客户端和消息服务器:客户端,用于进行客户端消息交互,以及,对应客户端之间的交互信息发送至消息服务器;消息服务器,用于对客户端之间的交互信息进行存储,以及,根据任意客户端的请求从存储数据获取对应的交互信息进行补全。
根据所述的高可靠性即时通讯系统,其中客户端还包括:发送保障模块,用于客户端发送一方发送消息时调用接口进行发送,当接收到接口的回复后对发送消息进行入库,当回复失败时进行重试并进行提醒;通知保障模块,用于对任意客户端的消息交互使用接口进行拉取,其中消息的拉取需要客户端确认,以及,在无法拉取的时候进行重试并提醒;获取保障模块,用于在客户端向消息服务器拉取信息后自动补全完整的消息记录,以及,对客户端所处的网络环境进行实时监测,客户端与消息服务器断开连接时,自动在下一次连接拉取并补全消息记录。
根据所述的高可靠性即时通讯系统,其中获取保障模块还包括:对客户端接收的通知进行实时验证,自动校验该通知的会话上下文是否存在空洞消息,若不存在空洞消息,则仅拉取当前该通知的消息内容,若存在空洞消息,将空洞消息和当前通知的消息内容一并取下来。
根据所述的高可靠性即时通讯系统,其中消息服务器包括:消息漫游模块,用于对所述发送保障模块发送成功消息进行永久性存储,当客户端与消息服务器连接不稳定或任意设备存在异常时,根据客户端的二次请求下发消息;入库保障模块,对客户端的交互消息进行即时入库,其中入库包括写入内存数据表和生成等待日志,当内存数据表满时将数据表转换为只读并持久化。
根据所述的高可靠性即时通讯系统,其中消息服务器还包括:设置至少一个备用消息服务器实现数据主从同步。
根据所述的高可靠性即时通讯系统,其中消息服务器还包括:将客户端的消息交互业务拆分为相对独立的多个服务,并进行分机部署。
根据所述任意的的高可靠性即时通讯系统,系统还包括:对于任意客户端与消息服务器的消息业务使用TCP连接和/或HTTPS连接进行交互,其中TCP负责登陆及事件通知等少量数据通信,其中HTTPS用于主要业务数据的交互,以及,对于客户端与信息服务器不稳定的连接时,使用TCP通讯和短连接方式进行消息交互。
本发明的有益效果为:文件系统发生故障时容灾恢复能力较强;轻量级的TCP通讯和短连接方式能够规避大部分的链路不可靠问题;多个服务能够有效的实现故障隔离,提升整体服务的可靠性和可用性。
附图说明
图1所示为根据现有技术实施方式的快递式系统模型图;
图2所示为根据现有技术施方式的系统快递式系统模型改进图;
图3所示为根据现有技术实施方式的邮件服务模型图;
图4所示为根据本发明实施方式的系统总体结构框图;
图5所示为根据本发明实施方式的系统交互框图;
图6a所示为根据本发明实施方式的打开会话补全消息流程图;
图6b所示为根据本发明实施方式的接收新消息补全消息流程图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。本发明的高可靠性即时通讯系统适用于即时通讯。
图4所示为根据本发明实施方式的系统总体结构框图。系统包括多个客户端和消息服务器:客户端,用于进行客户端消息交互,以及,对应客户端之间的交互信息发送至消息服务器;消息服务器,用于对客户端之间的交互信息进行存储,以及,根据任意客户端的请求从存储数据获取对应的交互信息进行补全。
客户端还包括:发送保障模块,用于客户端发送一方发送消息时调用接口进行发送,当接收到接口的回复后对发送消息进行入库,当回复失败时进行重试并进行提醒;通知保障模块,用于对任意客户端的消息交互使用接口进行拉取,其中消息的拉取需要客户端确认,以及,在无法拉取的时候进行重试并提醒;获取保障模块,用于在客户端向消息服务器拉取信息后自动补全完整的消息记录,以及,对客户端所处的网络环境进行实时监测,客户端与消息服务器断开连接时,自动在下一次连接拉取并补全消息记录。
消息服务器包括:消息漫游模块,用于对所述发送保障模块发送成功消息进行永久性存储,当客户端与消息服务器连接不稳定或任意设备存在异常时,根据客户端的二次请求下发消息;入库保障模块,对客户端的交互消息进行即时入库,其中入库包括写入内存数据表和生成等待日志,当内存数据表满时将数据表转换为只读并持久化。
图5所示为根据本发明实施方式的系统交互框图。其中1-2表示:发送方将消息同步提交并执行存储;其中3-4表示:服务器根据发送方的提交返回给发送方对应的结果,其中步骤3还包括将接收到发送的通知发送接收方(即执行步骤5);5-6表示消息队列服务将结果返回给发送方后,通知接收方新消息事件;步骤7-8表示:接收方到服务器获取消息内容。
申请人认为上述的实现包括如下(1)~(9):
(1)消息服务器漫游。系统设计即采用先进的数据存储技术在服务器端存储消息,只要服务器确认接收到消息,消息将一直保存在服务器,不会随用户读取而删除。在网络异常、客户端设备异常时,仍能通过二次请求获取到消息。
(2)Simple Push模型与RESTFUL API结合服务。TCP长连接通道只负责极少量的数据通信(登录、事件通知),主要业务数据通过RESTFUL API(https连接,支持复用)。对于移动网络或不稳定的网络环境,轻量级的TCP通讯和短连接方式能够规避大部分的链路不可靠问题。
(3)微服务架构。微服务架构将业务相对独立的拆分为多个服务,可以分机部署,这种模式能够有效的实现故障隔离,提升整体服务的可靠性和可用性。
(4)基于会话的消息存储模型。每个会话参与者的消息数据是共享的,避免从发送者发送成功转换到接收方待收消息的故障问题,只要发送的消息成功(成功即入库),整个会话参与人一定能拉取该消息。
(5)客户端发送保障机制。客户端发送消息时通过调用RESTFUL API接口。API接口保障回复成功时即入库。当客户端调用接口失败或超时会采用多次重试机制,发送失败的消息客户端也会给出明确的提示来告诉发送方。
(6)消息入库保障机制。服务器的消息存储机制经过多次演进,从最开始的MySQL存储演变到现在的Redis+Leveldb,其可靠性接受极致。客户端发送消息立即入库,入库操作包含写入内存数据表(双表缓冲)和pending日志(异常保障),内存数据表满时转换为只读并持久化,持久化也是使用高效的顺序存储方式(受益于LevelDB的实现机制),同时可以使用备份服务器实现数据主从同步,确保文件系统发生故障时容灾恢复能力。
(7)消息通知保障机制。当会话中有新消息产生,服务器通过长连接通道实时下发新消息通知,避免客户端轮询带来的低效问题,客户端接收到通知后,调用API接口拉取消息。服务器下发通知需要客户端确认,并且在无确认时会进行多次间断式重发通知,当多次尝试失败时会强制终止客户端连接(客户端重新连接时将通过拉取机制获取到新消息)。
(8)客户端获取消息保障机制。客户端通过服务器通知事件拉取消息,获取消息时会自动补全完整的消息记录。在网络发生波动时,客户端会重新建立连接并立即拉取所有的未读会话。
(9)客户端消息空洞补全机制。客户端收到一条新通知,自动校验该会话是存在消息空洞,如果存在,一同向服务器拉取补全。
图6a所示为根据本发明实施方式的打开会话补全消息流程图。具体参考图5说明。
图6b所示为根据本发明实施方式的接收新消息补全消息流程图。具体参考图5说明。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。
Claims (7)
1.一种高可靠性即时通讯系统,该系统包括多个客户端和消息服务器:
客户端,用于进行客户端消息交互,以及,对应客户端之间的交互信息发送至消息服务器;
消息服务器,用于对客户端之间的交互信息进行存储,以及,根据任意客户端的请求从存储数据获取对应的交互信息进行补全。
2.根据权利要求1所述的高可靠性即时通讯系统,其特征在于,所述的客户端还包括:
发送保障模块,用于客户端发送一方发送消息时调用接口进行发送,当接收到接口的回复后对发送消息进行入库,当回复失败时进行重试并进行提醒;
通知保障模块,用于对任意客户端的消息交互使用接口进行拉取,其中消息的拉取需要客户端确认,以及,在无法拉取的时候进行重试并提醒;
获取保障模块,用于在客户端向消息服务器拉取信息后自动补全完整的消息记录,以及,对客户端所处的网络环境进行实时监测,客户端与消息服务器断开连接时,自动在下一次连接拉取并补全消息记录。
3.根据权利要求2所述的高可靠性即时通讯系统,其特征在于,所述的获取保障模块还包括:
对客户端接收的通知进行实时验证,自动校验该通知的会话上下文是否存在空洞消息,若不存在空洞消息,则仅拉取当前该通知的消息内容,若存在空洞消息,将空洞消息和当前通知的消息内容一并取下来。
4.根据权利要求1或2所述的高可靠性即时通讯系统,其特征在于,所述的消息服务器包括:
消息漫游模块,用于对所述发送保障模块发送成功消息进行永久性存储,当客户端与消息服务器连接不稳定或任意设备存在异常时,根据客户端的二次请求下发消息;
入库保障模块,对客户端的交互消息进行即时入库,其中入库包括写入内存数据表和生成等待日志,当内存数据表满时将数据表转换为只读并持久化。
5.根据权利要求4所述的高可靠性即时通讯系统,其特征在于,所述的消息服务器还包括:
设置至少一个备用消息服务器实现数据主从同步。
6.根据权利要求4所述的高可靠性即时通讯系统,其特征在于,所述的消息服务器还包括:
将客户端的消息交互业务拆分为相对独立的多个服务,并进行分机部署。
7.根据权利要求1-6任意所述的高可靠性即时通讯系统,其特征在于,该系统还包括:
对于任意客户端与消息服务器的消息业务使用TCP连接和/或HTTPS连接进行交互,其中TCP负责登陆及事件通知等少量数据通信,其中HTTPS用于主要业务数据的交互,以及,对于客户端与信息服务器不稳定的连接时,使用TCP通讯和短连接方式进行消息交互。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711045930.9A CN107659492A (zh) | 2017-10-31 | 2017-10-31 | 一种高可靠性即时通讯系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711045930.9A CN107659492A (zh) | 2017-10-31 | 2017-10-31 | 一种高可靠性即时通讯系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107659492A true CN107659492A (zh) | 2018-02-02 |
Family
ID=61096077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711045930.9A Pending CN107659492A (zh) | 2017-10-31 | 2017-10-31 | 一种高可靠性即时通讯系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107659492A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108696598A (zh) * | 2018-07-26 | 2018-10-23 | 廊坊新奥燃气设备有限公司 | 一种微服务架构下将无状态服务接收到的消息通过长连接透传的方法和装置 |
CN109347973A (zh) * | 2018-11-15 | 2019-02-15 | 北京酷我科技有限公司 | 一种客户端即时通讯方法及系统 |
CN110830367A (zh) * | 2019-11-19 | 2020-02-21 | 北京蜜莱坞网络科技有限公司 | 即时通讯的数据交互方法、装置、设备及介质 |
CN111143745A (zh) * | 2019-12-27 | 2020-05-12 | 中冶建筑研究总院有限公司 | 基于html的数据同步和交互的方法和系统 |
CN112491691A (zh) * | 2020-11-02 | 2021-03-12 | 南京京恒信息技术有限公司 | 多终端消息同步和隔离即时通讯方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101142567A (zh) * | 2004-11-19 | 2008-03-12 | 福伦特布里奇技术股份有限公司 | 用于电子邮件系统的灾难恢复和管理的系统和方法 |
CN101155149A (zh) * | 2006-09-27 | 2008-04-02 | 腾讯科技(深圳)有限公司 | 一种消息记录备份方法及系统 |
CN101217506A (zh) * | 2007-12-27 | 2008-07-09 | 腾讯科技(深圳)有限公司 | 一种消息处理方法、系统及客户端 |
US20080209347A1 (en) * | 2002-08-19 | 2008-08-28 | At&T Delaware Intellectual Property, Inc., Formerly Known As Bellsouth Intellectual Property | Redirection of a Message to an Alternate Address |
CN103516587A (zh) * | 2012-06-30 | 2014-01-15 | 北京神州泰岳软件股份有限公司 | 即时通信客户端断线重连的方法和装置 |
CN104202185A (zh) * | 2014-08-25 | 2014-12-10 | 腾讯科技(深圳)有限公司 | 一种通信数据备份方法及装置 |
-
2017
- 2017-10-31 CN CN201711045930.9A patent/CN107659492A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080209347A1 (en) * | 2002-08-19 | 2008-08-28 | At&T Delaware Intellectual Property, Inc., Formerly Known As Bellsouth Intellectual Property | Redirection of a Message to an Alternate Address |
CN101142567A (zh) * | 2004-11-19 | 2008-03-12 | 福伦特布里奇技术股份有限公司 | 用于电子邮件系统的灾难恢复和管理的系统和方法 |
CN101155149A (zh) * | 2006-09-27 | 2008-04-02 | 腾讯科技(深圳)有限公司 | 一种消息记录备份方法及系统 |
CN101217506A (zh) * | 2007-12-27 | 2008-07-09 | 腾讯科技(深圳)有限公司 | 一种消息处理方法、系统及客户端 |
CN103516587A (zh) * | 2012-06-30 | 2014-01-15 | 北京神州泰岳软件股份有限公司 | 即时通信客户端断线重连的方法和装置 |
CN104202185A (zh) * | 2014-08-25 | 2014-12-10 | 腾讯科技(深圳)有限公司 | 一种通信数据备份方法及装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108696598A (zh) * | 2018-07-26 | 2018-10-23 | 廊坊新奥燃气设备有限公司 | 一种微服务架构下将无状态服务接收到的消息通过长连接透传的方法和装置 |
CN108696598B (zh) * | 2018-07-26 | 2021-04-13 | 廊坊新奥智能科技有限公司 | 一种微服务架构下将无状态服务接收到的消息通过长连接透传的方法和装置 |
CN109347973A (zh) * | 2018-11-15 | 2019-02-15 | 北京酷我科技有限公司 | 一种客户端即时通讯方法及系统 |
CN110830367A (zh) * | 2019-11-19 | 2020-02-21 | 北京蜜莱坞网络科技有限公司 | 即时通讯的数据交互方法、装置、设备及介质 |
CN111143745A (zh) * | 2019-12-27 | 2020-05-12 | 中冶建筑研究总院有限公司 | 基于html的数据同步和交互的方法和系统 |
CN112491691A (zh) * | 2020-11-02 | 2021-03-12 | 南京京恒信息技术有限公司 | 多终端消息同步和隔离即时通讯方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107659492A (zh) | 一种高可靠性即时通讯系统 | |
US7418495B2 (en) | System and method for activity monitoring and reporting in a computer network | |
US8490003B2 (en) | Dynamic proximity based text exchange within a group session | |
JP2007525087A (ja) | アクティブ受信及びアクティブ警告でのコンテクスト依存の転送 | |
US7822822B2 (en) | Instant messaging system configured to facilitate event plan management | |
CN105681160B (zh) | 一种即时通信系统中纠正会话消息乱序的方法及装置 | |
CN102111419B (zh) | 一种基于消息中间件的客户端自动重连方法 | |
CN101297312A (zh) | 移动与计算设备之间的语音即时消息通信 | |
CN103096271A (zh) | 信息推送系统和信息推送方法 | |
US10834033B2 (en) | Method and system for transferring messages between messaging systems | |
CN110413425B (zh) | 第三方消息回调方法、装置、服务器和存储介质 | |
US8213580B2 (en) | Automated message conversion based on availability of bandwidth | |
CN104901865B (zh) | 一种基于全局单调序列号的移动端即时通讯信号同步方法 | |
CN104135429A (zh) | 一种信息推送方法和装置 | |
JP2020191071A (ja) | メッセージ管理サーバ、メッセージ管理方法、メッセージ管理プログラムおよびメッセージ管理システム | |
GB2462256A (en) | Sending Messages to members of a Group based on the members preferred delivery route | |
WO2014134987A1 (zh) | 一种融合即时通讯和邮箱通讯的通讯方法及通讯装置 | |
CN101754112A (zh) | 移动电子邮件业务处理方法和装置 | |
CN108632136A (zh) | 巡河数据处理方法及装置 | |
CN101001213B (zh) | 一种短消息传输系统及方法 | |
US10320737B2 (en) | Device and method for temporal correlation of communication types | |
WO2019023974A1 (zh) | 多主题对话的通信控制装置和方法、及计算机处理设备 | |
CN113839856B (zh) | 一种基于消息事务办公处理系统 | |
JP4560844B2 (ja) | インターネットのような電気通信網内でのインスタントメッセージングサービスに対する選択的出席管理方法 | |
WO2019023972A1 (zh) | 多终端消息同步方法、系统、服务器和计算机处理设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180202 |