CN109040286B - 一种基于内存数据库的客户端在线状态维护方法 - Google Patents
一种基于内存数据库的客户端在线状态维护方法 Download PDFInfo
- Publication number
- CN109040286B CN109040286B CN201810974169.5A CN201810974169A CN109040286B CN 109040286 B CN109040286 B CN 109040286B CN 201810974169 A CN201810974169 A CN 201810974169A CN 109040286 B CN109040286 B CN 109040286B
- Authority
- CN
- China
- Prior art keywords
- client
- server
- memory database
- account
- online state
- 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.)
- Active
Links
Images
Classifications
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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/141—Setup of application sessions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于内存数据库的客户端在线状态维护方法,它包括:建立内存数据库,用于存储客户端的在线数据信息;客户端与服务端建立连接,服务端获取客户端的在线状态,并更新数据库;通过内存数据库提供的查询语句查询和/或统计在线状态。本发明采用分布式服务器和内存数据库,在确保了***安全性的前提之下,提高了***的效率。对于客户端的在线状态先在自身服务器上查询,若没有则查询其他所有服务器,最终更新到内存数据库中。
Description
技术领域
本发明涉及内存数据库技术领域,特别是一种基于内存数据库的客户端在线状态维护方法。
背景技术
有多个客户端连着同一个服务器。服务器和客户端之间需要互相知道彼此的连接状态。比如在某一时刻,服务器需要知道当前有多少个客户端正在和其通信;某一个时刻,某个客户端需要知道自己是否和服务器保持连接。如果在某一时刻,一个客户端关闭了,服务端应能及时感觉到;同样,如果服务端被关闭,所有的客户端应能及时感觉到,并作出一些反应。直观上的反应就是在服务端维护一个在线列表。当服务端的***监听到一个连接,就把该连接对应的客户端信息加入这个在线列表。这样就完成了对上线状况的记录。但下一个问题是如何让服务器知道客户端的离线状况呢?我们可能会想到,让客户端在关闭前发送一个消息到服务端,服务端收到消息后就把客户端置为离线状态。但是,在更多情况下,客户端并不是这么“友好”地关闭的。应用程序崩溃、网络连接被重置、机器死机等情况下,客户端来不及发送“离线通知”给服务端。这时,需要有一套机制,能让服务端和客户端彼此对对方的在线状态清楚了解。于是出现了心跳机制。何谓“心跳”?心跳就是指“活着”的客户端或服务端每隔一定的时间就互相发送接收一个消息,告诉对方自己“活着”。当客户端或服务端超过一定的时间间隔尚未收到对方的“心跳”消息,就认为对方“死了”。这就是“心跳机制”的核心思想。
在线状态:是指客户端和云通信服务器保持有顺畅的TCP网络连接,客户端可以发消息给云通信服务端,服务端可以把消息推送给客户端。App启动后,客户端和云通信建立TCP长连接,云通信服务保存客户端的在线信息,如客户端的网络链路,客户端的平台版本等。App长连接建立成功后,在运行过程中,IMSDK会定时发送心跳来维持当前的在线状态。iOS客户端和云通信的TCP链路断开后,还可以收到苹果推送的消息,但是还是处于不在线的状态。
上线(TCP建立):App客户端和云通信服务建立TCP长链接的动作
下线(TCP断开):App客户端退出当前帐号或者是云通信服务器检测到App客户端的TCP长连接断开。依靠客户端与服务器端的TCP Fin包作为监测手段。
超时(TCP断开):App客户端因为网络忽然断开或者杀后台进程,云通信服务器无法及时感知TCP连接断开,服务器依赖心跳包超时判断,当客户端和服务器之间持续300秒没有心跳包时,云通信服务器认为该用户网络异常(Android版本较多出现此情况),会当成TCP链路断开来处理。
目前构客户端在线状态维护有以下两种:
1、采用集中式服务器和磁盘数据库:
缺点为:采用集中式服务器架构安全性不高,若服务器出现问题则影响范围比较大,同时采用磁盘数据库,读写速度较慢。
2、采用分布式服务器和内存数据库:
缺点为:分布式服架构下需要配置多台服务器,成本较高,同时内存数据库相比于磁盘数据库安全性较低。
发明内容
有鉴于现有技术的上述缺陷,本发明的目的就是提供一种基于内存数据库的客户端在线状态维护方法,它采用分布式服务器和内存数据库,在确保了***安全性的前提之下,提高了***的效率。对于客户端的在线状态先在自身服务器上查询,若没有则查询其他所有服务器,最终更新到内存数据库中。
本发明的目的是通过这样的技术方案实现的,一种基于内存数据库的客户端在线状态维护方法,它包括有:
S1:建立内存数据库,用于存储客户端的在线数据信息;
S2:客户端与服务端建立连接,服务端获取客户端的在线状态,并更新数据库;
S3:服务端可以通过内存数据库提供的查询语句查询和/或统计在线状态。
进一步,步骤S2中所述客户端与服务端建立连接,获取在线状态并更新数据库包括有:
S21:若客户端账号为第一次登录,则进行如下步骤:
S211:如果账号登录到业务服务器A,则服务器程序A获取客户端在线状态;
S212:将客户端信息保存到内存数据库;
S22:若客户端账号在另外的终端登录,则进行如下步骤:
S221:若客户端账号已经在第一终端登录到业务服务器A,然后用第二终端登录该账号到业务服务器B;
S222:服务器程序B判断此账号是否已在业务服务器B上登录;
S223:若已经登录,则踢出上次的登录并发出通知,然后更新客户端信息;反之,进入步骤S224:
S224:查询内存数据库,若存该账号且处于在线状态,则通知服务器A该账号需要踢出,在服务器A上登录该账号,并更新客户端信息;若不在线,则直接保存客户端信息到内存数据库。
进一步,所述步骤S3中所述服务端查询与统计的程序可以直接通过内存数据库提供的查询语句查询和/或统计在线状态。
进一步,所述步骤S1中还包括有将将数据存储在内存数据库中。
进一步,所述客户端可为手机和/或手表。
由于采用了上述技术方案,本发明具有如下的优点:本发明采用分布式服务器和内存数据库,在确保了***安全性的前提之下,提高了***的效率。对于客户端的在线状态先在自身服务器上查询,若没有则查询其他所有服务器,最终更新到内存数据库中。
本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。
附图说明
本发明的附图说明如下:
图1为基于内存数据库的客户端在线状态维护方法的流程示意图。
图2为基于内存数据库的客户端工作状态连接示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
实施例1,如图1和图2所示;一种基于内存数据库的客户端在线状态维护方法,它包括有:
S1:建立内存数据库,用于存储客户端的在线数据信息;
S2:客户端与服务端建立连接,服务端获取客户端的在线状态,并更新数据库;
S3:服务端可以通过内存数据库提供的查询语句查询和/或统计在线状态。
步骤S2中所述客户端与服务端建立连接,获取在线状态并更新数据库包括有:
S21:若客户端账号为第一次登录,则进行如下步骤:
S211:如果账号登录到业务服务器A,则服务器程序A获取客户端在线状态;
S212:将客户端信息保存到内存数据库;
S22:若客户端账号在另外的终端登录,则进行如下步骤:
S221:若客户端账号已经在第一终端登录到业务服务器A,然后用第二终端登录该账号到业务服务器B;
S222:服务器程序B判断此账号是否已在业务服务器B上登录;
S223:若已经登录,则踢出上次的登录并发出通知,然后更新客户端信息;反之,进入步骤S224:
S224:查询内存数据库,若存该账号且处于在线状态,则通知服务器A该账号需要踢出,在服务器A上登录该账号,并更新客户端信息;若不在线,则直接保存客户端信息到内存数据库。
所述步骤S3中所述服务端查询与统计的程序可以直接通过内存数据库提供的查询语句查询和/或统计在线状态。
所述步骤S1中还包括有将将数据存储在内存数据库中。
所述客户端可为手机和/或手表。
由于采用了上述技术方案,本发明采用分布式服务器和内存数据库,在确保了***安全性的前提之下,提高了***的效率。对于客户端的在线状态先在自身服务器上查询,若没有则查询其他所有服务器,最终更新到内存数据库中。
实施例2,如图1和图2所示;一种基于内存数据库的客户端在线状态维护方法,它包括有:
1)建立数据数据库,用于存储客户端的在线数据信息;
2)客户端与服务端建立连接,服务端获取客户端的在线状态,并更新数据库;
3)服务端可以通过内存数据库提供的查询语句查询/统计在线状态。
所述的内存数据库,将数据存储在内存中直接操作,相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。
步骤2)中所述客户端与服务端建立连接,获取在线状态并更新数据库:客户端登录大致可分为两种情:
1)若客户端账号为第一次登录:
如果账号登录到业务服务器A,那么服务器程序A获取客户端在线状态,同时将客户端信息保存到内存数据库。
2)若客户端账号在另外的终端登录:
若客户端账号已经在终端1登录到业务服务器A,然后用终端2登录该账号到业务服务器B,此时服务器程序B则会判断此账号是否已在自己的服务器(即业务服务器B)上登录,若是则踢出上次的登录并发出通知,然后更新客户端信息到自己的内存数据库;否则,查询内存数据库,若存该账号且处于在线状态(例如已在服务器A上登录),则通知服务器A该账号需要踢出,在自己的服务器上登录该账号,并更新客户端信息到内存数据库。若不在线,则直接保存客户端信息到内存数据库。
步骤3)中所述服务端查询与统计的程序可以直接通过内存数据库提供的查询语句查询/统计在线状态。直接通过查询语句查询/统计在线状态,使用方便,且内存数据库数据读写速度远大于磁盘。
本发明的客户端在线状态维护是通过这样实现的,所述方法包括以下步骤:
1.若客户端账号第一次登录:
(1)账号登录到业务服务器A
(2)服务器程序A将客户端信息保存到内存数据库
2.客户端账号在另外的终端登录:
(1)账号已登录到服务器A
(2)账号通过另一个终端登录到业务服务器B
(3)服务器程序B判断此账号是否已在自己的服务器上登录,
(4)若是则踢出老的的登录并作出通知,然后更新客户端信息到内存数据库;
(5)否则,查询内存数据库,若存该账号且处于在线状态(例如已在A上登录),则通知服务器A账号需要踢出,并更新客户端信息到内存数据库。
(6)若不在线,则直接保存客户端信息到内存数据库。
由于采用了上述技术方案,本发明采用分布式服务器和内存数据库,在确保了***安全性的前提之下,提高了***的效率。对于客户端的在线状态先在自身服务器上查询,若没有则查询其他所有服务器,最终更新到内存数据库中。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (4)
1.一种基于内存数据库的客户端在线状态维护方法,其特征在于,所述方法步骤如下:
S1:建立内存数据库,用于存储客户端的在线数据信息;
S2:客户端与服务端建立连接,服务端获取客户端的在线状态,并更新数据库;
S3:通过内存数据库提供的查询语句查询和/或统计在线状态;
步骤S2中所述客户端与服务端建立连接,获取在线状态并更新数据库包括有:
S21:若客户端账号为第一次登录,则进行如下步骤:
S211:如果账号登录到业务服务器A,则服务器程序A获取客户端在线状态;
S212:将客户端信息保存到内存数据库;
S22:若客户端账号在另外的终端登录,则进行如下步骤:
S221:若客户端账号已经在第一终端登录到业务服务器A,然后用第二终端登录该账号到业务服务器B;
S222:服务器程序B判断此账号是否已在业务服务器B上登录;
S223:若已经登录,则踢出上次的登录并发出通知,然后更新客户端信息;反之,进入步骤S224:
S224:查询内存数据库,若存该账号且处于在线状态,则通知服务器A该账号需要踢出,在服务器A上登录该账号,并更新客户端信息;若不在线,则直接保存客户端信息到内存数据库。
2.如权利要求1所述的基于内存数据库的客户端在线状态维护方法,其特征在于,所述步骤S3中所述服务端查询与统计的程序可以直接通过内存数据库提供的查询语句查询和/或统计在线状态。
3.如权利要求1所述的基于内存数据库的客户端在线状态维护方法,其特征在于,所述步骤S1中还包括将数据存储在内存数据库中。
4.如权利要求1所述的基于内存数据库的客户端在线状态维护方法,其特征在于,所述客户端可为手机或手表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810974169.5A CN109040286B (zh) | 2018-08-24 | 2018-08-24 | 一种基于内存数据库的客户端在线状态维护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810974169.5A CN109040286B (zh) | 2018-08-24 | 2018-08-24 | 一种基于内存数据库的客户端在线状态维护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109040286A CN109040286A (zh) | 2018-12-18 |
CN109040286B true CN109040286B (zh) | 2021-01-26 |
Family
ID=64628400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810974169.5A Active CN109040286B (zh) | 2018-08-24 | 2018-08-24 | 一种基于内存数据库的客户端在线状态维护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109040286B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113076329A (zh) * | 2020-01-03 | 2021-07-06 | 上海亲平信息科技股份有限公司 | 一种内存数据库 |
CN113132487A (zh) * | 2021-04-21 | 2021-07-16 | 深圳市乐唯科技开发有限公司 | 一种精简的分布式长连接的数据传输方法及*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101872356A (zh) * | 2010-05-31 | 2010-10-27 | 中兴通讯股份有限公司 | 一种内存数据库处理性能的方法与*** |
CN103226612A (zh) * | 2013-05-08 | 2013-07-31 | 华北计算技术研究所 | 一种基于内存数据库的内容管理*** |
CN103678665A (zh) * | 2013-12-24 | 2014-03-26 | 焦点科技股份有限公司 | 一种基于数据仓库的异构大数据整合方法和*** |
CN104869440A (zh) * | 2015-05-29 | 2015-08-26 | 广州易方信息科技有限公司 | 在线视频云平台实时统计视频观看数据的方法及*** |
CN107317831A (zh) * | 2016-04-27 | 2017-11-03 | 上海炬宏信息技术有限公司 | 基于内存数据库的网站访问方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140258212A1 (en) * | 2013-03-06 | 2014-09-11 | Sap Ag | Dynamic in-memory database search |
US9230041B2 (en) * | 2013-12-02 | 2016-01-05 | Qbase, LLC | Search suggestions of related entities based on co-occurrence and/or fuzzy-score matching |
-
2018
- 2018-08-24 CN CN201810974169.5A patent/CN109040286B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101872356A (zh) * | 2010-05-31 | 2010-10-27 | 中兴通讯股份有限公司 | 一种内存数据库处理性能的方法与*** |
CN103226612A (zh) * | 2013-05-08 | 2013-07-31 | 华北计算技术研究所 | 一种基于内存数据库的内容管理*** |
CN103678665A (zh) * | 2013-12-24 | 2014-03-26 | 焦点科技股份有限公司 | 一种基于数据仓库的异构大数据整合方法和*** |
CN104869440A (zh) * | 2015-05-29 | 2015-08-26 | 广州易方信息科技有限公司 | 在线视频云平台实时统计视频观看数据的方法及*** |
CN107317831A (zh) * | 2016-04-27 | 2017-11-03 | 上海炬宏信息技术有限公司 | 基于内存数据库的网站访问方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109040286A (zh) | 2018-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6686033B2 (ja) | メッセージをプッシュするための方法および装置 | |
US10241883B1 (en) | Method and apparatus of establishing customized network monitoring criteria | |
CN106993043B (zh) | 基于代理的数据通信***和方法 | |
WO2017016084A1 (zh) | 告警信息通知方法、装置及告警信息过滤设备 | |
CN112422684B (zh) | 目标消息的处理方法及装置、存储介质、电子装置 | |
CN111510325B (zh) | 报警信息推送方法、服务器、客户端及*** | |
CN109040286B (zh) | 一种基于内存数据库的客户端在线状态维护方法 | |
CN103634149A (zh) | 一种用于分布式***的监测方法 | |
CN106713497A (zh) | 一种服务器端消息推送装置、方法及消息推送*** | |
CN113905005A (zh) | 即时通讯的客户端状态更新方法和装置 | |
JP6433578B2 (ja) | 情報自主登録の実現方法、装置、システム及びコンピュータ記憶媒体 | |
CN110809262B (zh) | 一种基于coap协议的物联网设备运维管理方法 | |
CN104202212A (zh) | 一种获取分布式集群***告警的***和方法 | |
CN111010318A (zh) | 发现物联网终端设备失联的方法、***和设备影子服务器 | |
CN103685357A (zh) | 一种账号多开消息处理方法及*** | |
CN107508916B (zh) | 用于智能机器人的服务器链接管理方法 | |
CN109525620B (zh) | 一种消息推送***、方法及装置 | |
CN112039718A (zh) | 升级状态检测方法、服务端、设备及存储介质 | |
WO2020043006A1 (zh) | 终端失联的恢复方法及装置 | |
CN103516766A (zh) | 一种客户端与应用服务器间进行通信的方法和*** | |
CN110825505B (zh) | 任务调度方法、装置、计算机设备及存储介质 | |
CN105281940B (zh) | 一种基于netconf协议的hello报文交互的方法、设备和*** | |
CN110224872B (zh) | 一种通信方法、装置及存储介质 | |
CN111835578B (zh) | 信息传输管理方法、信息传输管理装置及可读存储介质 | |
CN110635970A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |