CN108173665B - 一种备份数据的方法及装置 - Google Patents
一种备份数据的方法及装置 Download PDFInfo
- Publication number
- CN108173665B CN108173665B CN201611118616.4A CN201611118616A CN108173665B CN 108173665 B CN108173665 B CN 108173665B CN 201611118616 A CN201611118616 A CN 201611118616A CN 108173665 B CN108173665 B CN 108173665B
- Authority
- CN
- China
- Prior art keywords
- chat room
- information
- live
- room
- user
- 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
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1813—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
- H04L12/1822—Conducting the conference, e.g. admission, detection, selection or grouping of participants, correlating users to one or more conference sessions, prioritising transmission
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1813—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
- H04L12/1831—Tracking arrangements for later retrieval, e.g. recording contents, participants activities or behavior, network status
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种备份数据的方法及装置,属于互联网通信领域。所述方法包括:当创建直播聊天室时,获取所述直播聊天室的配置信息,所述配置信息包括所述直播聊天室的房间标识、房间名称和创建所述直播聊天室的主播用户的用户信息;将所述直播聊天室的配置信息存储在持久化存储***中;当接收到指示备份直播服务器的请求或检测到所述直播服务器重启时,从所述直播服务器的内存中获取所述直播聊天室的聊天室信息;将所述直播聊天室的房间标识与所述聊天室信息的对应关系存储在所述持久化存储***中。所述装置包括:第一获取模块、第一存储模块、第二获取模块和第二存储模块。本发明能够减少对持久化存储***中的硬件资源的占用。
Description
技术领域
本发明涉及互联网通信领域,特别涉及一种备份数据的方法及装置。
背景技术
随着互联网的发展,目前出现了很多直播服务,主播用户可以通过该直播服务向观众用户做直播。在实际实现时主播用户可以在直播服务器中创建直播聊天室,观众用户可以加入该直播聊天室,主播用户通过该直播聊天室向加入该直播聊天室的观众用户做直播。
其中,创建的直播聊天室的配置信息、直播聊天室包括的观众用户的用户信息都缓存在直播服务器的内存中。由于直播服务器有时需要重启,在重启后还需要根据直播聊天室的配置信息和包括的观众用户的用户信息恢复直播聊天室。然后这些恢复所需要的数据都缓存在直播服务器的内存中,在直播服务器重启后均会消失,因此需要用持久化存储***备份直播服务器的内存中存储的数据,以便直播服务器重启后根据持久化存储***中备份的数据恢复直播聊天室。目前提供了如下备份数据的方法,可以为:当主播用户创建直播聊天室时,将该直播聊天室的配置信息存储在持久化存储***中;当某观众用户加入该直播聊天室,则将该观众用户的用户信息存储在持久化存储***中;当某观众用户从该直播聊天室退出时,将该观众用户的用户信息从持久化存储***中删除。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
由于观众用户往往加入直播聊天室又很快退出直播聊天室,然后又很快加入该直播聊天室或其他直播聊天室,导致频繁地对持久化存储***进行存储和删除操作,每次存储和删除操作都需要持久化存储***使用CPU(Central Processing Unit,中央处理器)、内存、I/O(Input/Output,输入/输出)通信接口等硬件资源来完成,这样导致频繁使用这些硬件资源,造成硬件资源浪费。
发明内容
为了减少对持久化存储***中的硬件资源的占用,本发明提供了一种备份数据的方法及装置。所述技术方案如下:
一方面,提供了一种备份数据的方法,所述方法包括:
当创建直播聊天室时,获取所述直播聊天室的配置信息,所述配置信息包括所述直播聊天室的房间标识、房间名称和创建所述直播聊天室的主播用户的用户信息中的一者或多者,所述用户信息包括所述主播用户的用户标识和用户名称中的一者或多者;
将所述直播聊天室的配置信息存储在持久化存储***中;
当接收到指示备份直播服务器的请求或检测到所述直播服务器重启时,从所述直播服务器的内存中获取所述直播聊天室的聊天室信息,所述聊天室信息至少包括所述直播聊天室中的各观众用户的用户信息;
将所述直播聊天室的房间标识与所述聊天室信息的对应关系存储在所述持久化存储***中。
可选的,所述从所述直播服务器的内存中获取所述直播聊天室的聊天室信息,包括:
根据所述直播聊天室的房间标识,从直播服务器的内存存储的房间标识与观众用户的信息类的对应关系中获取所述直播聊天室包括的各观众用户的信息类,观众用户的信息类中包括所述观众用户的用户信息。
可选的,所述将所述直播聊天室的房间标识与所述聊天室信息的对应关系存储在所述持久化存储***中,包括:
对所述各观众用户的信息类进行序列化操作,得到所述各观众用户的文本信息;
将所述直播聊天室的房间标识和所述各观众用户的文本信息存储所述持久化存储***中的房间标识与文本信息的对应关系中。
可选的,所述将所述直播聊天室的房间标识与所述聊天室信息的对应关系存储在所述持久化存储***中之后,还包括:
当终端请求获取待获取聊天室时,如果所述直播服务器的内存中不包括所述待获取聊天室的配置信息和聊天室信息,在内存中创建所述待获取聊天室对应的空对象,读取所述空对象内容并发送给终端,所述空对象包括预设的聊天室的配置信息和聊天室信息;如果所述直播服务器的内存中包括所述待获取聊天室的配置信息和聊天室信息,则向所述终端发送所述待获取聊天室的配置信息和聊天室信息。
可选的,所述读取所述空对象内容并发送给终端之后,还包括:
根据所述待获取聊天室的房间标识,从持久化存储***中获取所述待获取聊天室的配置信息和聊天室信息并加载到所述空对象中。
另一方面,提供了一种备份数据的装置,所述装置包括:
第一获取模块,用于当创建直播聊天室时,获取所述直播聊天室的配置信息,所述配置信息包括所述直播聊天室的房间标识、房间名称和创建所述直播聊天室的主播用户的用户信息中的一者或多者,所述用户信息包括所述主播用户的用户标识和用户名称中的一者或多者;
第一存储模块,用于将所述直播聊天室的配置信息存储在持久化存储***中;
第二获取模块,用于当接收到指示备份直播服务器的请求或检测到所述直播服务器重启时,从所述直播服务器的内存中获取所述直播聊天室的聊天室信息,所述聊天室信息至少包括所述直播聊天室中的各观众用户的用户信息;
第二存储模块,用于将所述直播聊天室的房间标识与所述聊天室信息的对应关系存储在所述持久化存储***中。
可选的,所述第二获取模块,用于根据所述直播聊天室的房间标识,从直播服务器的内存存储的房间标识与观众用户的信息类的对应关系中获取所述直播聊天室包括的各观众用户的信息类,观众用户的信息类中包括所述观众用户的用户信息。
可选的,所述第二存储模块包括:
序列化单元,用于对所述各观众用户的信息类进行序列化操作,得到所述各观众用户的文本信息;
存储单元,用于将所述直播聊天室的房间标识和所述各观众用户的文本信息存储所述持久化存储***中的房间标识与文本信息的对应关系中。
可选的,所述装置还包括:
发送模块,用于当终端请求获取待获取聊天室时,如果所述直播服务器的内存中不包括所述待获取聊天室的配置信息和聊天室信息,在内存中创建所述待获取聊天室对应的空对象,读取所述空对象内容并发送给终端,所述空对象包括预设的聊天室的配置信息和聊天室信息;如果所述直播服务器的内存中包括所述待获取聊天室的配置信息和聊天室信息,则向所述终端发送所述待获取聊天室的配置信息和聊天室信息。
可选的,所述装置还包括:
加载模块,用于根据所述待获取聊天室的房间标识,从持久化存储***中获取所述待获取聊天室的配置信息和聊天室信息并加载到所述空对象中。
本发明提供的技术方案的有益效果是:
通过在直播服务器重启或接收到请求时,才将直播服务器内存中的各直播聊天室的聊天室信息存储到持久化存储***中,这样相比一有观众用户加入或退出直播聊天室就请求持久化存储***执行存储或删除的操作,本发明可以减少对持久化存储***进行存储和删除的操作,从而持久化存储***不需要频繁使用CPU、I/O通信接口等硬件资源存储或删除数据,减少了对持久化存储***中的硬件资源的占用。
附图说明
图1是本发明实施例一提供的一种备份数据的方法流程图;
图2是本发明实施例二提供的一种备份数据的方法流程图;
图3是本发明实施例三提供的一种备份数据的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
参见图1,本发明实施例提供了一种备份数据的方法,所述方法包括:
步骤101:当创建直播聊天室时,获取直播聊天室的配置信息,该配置信息包括直播聊天室的房间标识、房间名称和创建直播聊天室的主播用户的用户信息,该用户信息包括主播用户的用户标识和用户名称。
步骤102:将直播聊天室的配置信息存储在持久化存储***中。
步骤103:当接收到指示备份直播服务器的请求或检测到直播服务器重启时,从直播服务器的内存中获取直播聊天室的聊天室信息,该聊天室信息至少包括播聊天室中的各观众用户的用户信息。
步骤104:将直播聊天室的房间标识与聊天室信息的对应关系存储在持久化存储***中。
本步骤中将直播聊天室的房间标识与聊天室信息对应存储在持久化存储***中。
在本发明实施例中,通过在直播服务器重启或接收到请求时,才将直播服务器内存中的各直播聊天室的聊天室信息存储到持久化存储***中,这样可以减少对持久化存储***进行存储和删除的操作,减少了对持久化存储***中的硬件资源的占用。
实施例二
本发明实施例提供了一种备份数据的方法,该方法用于将直播服务器内存中存储的直播聊天室的配置信息和聊天室信息备份到持久化存储***中。参见图2,该方法包括:
步骤201:当直播服务器创建直播聊天室时,获取该直播聊天室的配置信息。
该直播聊天室的配置信息可以包括该直播聊天室的房间标识、房间名称和创建该直播聊天室的主播用户的用户信息中的一者或多者,还可以包括该直播聊天室的创建时间、房间类型等信息。该主播用户的用户信息可以包括该主播用户的用户标识和用户名称中的一者或多者,还可以包括该主播用户的年龄、所在省份和城市等信息。
直播服务器创建的直播聊天室是主播用户请求创建的,详细过程可以为:
主播用户对应的终端可以安装有直播应用,该直播应用包括主播用户的用户标识和聊天室创建界面等内容。主播用户可以在该聊天室创建界面中填写直播聊天室的房间名称、房间类型等信息;然后终端向该直播应用对应的直播服务器发送聊天室创建请求消息,该聊天室创建请求消息携带该主播用户的用户标识、直播聊天室的房间名称和房间类型等信息。
直播服务器接收该聊天室创建请求消息,该聊天室创建请求消息携带该主播用户的用户标识、直播聊天室的房间名称和房间类型等信息;为该主播用户创建一个直播聊天室,分配该直播聊天室的房间标识,并将当前时间作为该直播聊天室的创建时间;根据该主播用户的用户标识获取该主播用户事先注册的用户信息,将该房间标识、房间名称,创建时间、房间类型、该主播用户的用户信息等内容作为该直播聊天室的配置信息。
步骤202:直播服务器将该直播聊天室的配置信息存储在持久化存储***中。
直播服务器创建的直播聊天室以及直播聊天室的配置信息都是存储在内存中。在直播服务器重启时直播服务器中的内存中的数据都会消失,所以在本步骤中当直播服务器创建直播聊天室时,直播服务器还将该直播聊天室的配置信息存储在持久化存储***中,以便直播服务器重启结束后可以持久化存储***中存储的数据恢复该直播聊天室。持久化存储***可以为数据库或redis,redis是一种key-value(键值)存储***。
由于直播聊天室的配置信息在直播聊天室创建之后不会改变,因此在直播聊天室创建之后就可以将该直播聊天室的配置信息存储在持久化存储***中。当然,在创建直播聊天室之后也可以先不将该直播聊天室的配置信息存储在持久化存储***中,而是等到直播服务器重启时或接收到对直播服务器进行备份的请求时,将该直播聊天室的配置信息存储在持久化存储***中。
直播服务器创建直播聊天室之后,观众用户可以加入该直播聊天室,观看主播用户的直播,也可以退出该直播聊天室。在直播服务器的内存中每个用户的用户信息都存储在一个信息类的类数据结构中。
当观众用户加入该直播聊天室时,直播服务器获取该观众用户的信息类,该信息类中包括该观众用户的用户信息,该用户信息可以包括该观众用户的用户标识和用户名称等,将该直播聊天室的房间标识和该信息类存储在房间标识与观众用户的信息类的对应关系,以实现将该观众用户加入该直播聊天室。
当观众用户退出该直播聊天室时,直播服务器获取该观众用户的信息类,将包括该直播聊天室的房间标识和该观众用户的信息类的记录从房间标识与观众用户的信息类的对应关系中删除,以实现将该观众用户退出该直播聊天室。
观众用户加入直播聊天室之后,可以在直播聊天室进行聊天,直播服务器可以在内存中存储该直播聊天室内各用户的聊天内容。直播服务器的内存中存储的每条聊天内容具有时效性,当某条聊天内容的聊天时间离当前时间的时间差超过预设阈值,则将该条聊天内容从直播服务器的内存中删除。
观众用户加入直播聊天室往往很快退出直播聊天室。有时观众用户加入一个直播聊天室后,经过几秒钟的时间就退出直播聊天室。所以在直播服务器中观众用户加入直播聊天室以及退出直播聊天室的频率很高,因此在观众用户加入或退出直播聊天室时不对持久化存储***执行存储和删除操作,从而可以减少对持久存储***执行存储和删除操作的频率,减少了对持久化存储***的CPU、I/O接口和内存等资源的占用。
由于直播服务器内存中存储的数据在直播服务器重启或关闭时丢弃,因此本实施例也需要将直播服务器的内存中存储的数据备份到持久化存储***中。其中,在如下三种情况下需要将直播服务器的内存中存储的数据备份到持久化存储***中,分别为:
第一种情况:当直播服务器需要重启时,将直播服务器的内存中存储的数据备份到持久化存储***中。
直播服务器中往往运行至少一个业务,每个业务由一个服务端程序来运行。例如直播服务器中运行了直播业务,该直播服务器使用用于实现直播的服务端程序来运行该直播业务。
有时需要对直播服务器中的服务端程序进行升级,升级之后就需要重启直播服务器,在此时直播服务器自动检测到需要将其内存中存储的数据备份到持久化存储***中。
其中,在直播服务器重启之前可以可采用JDK提供的Java.Runtime.addShutdownHook(Thread hook)方法,仅在直播服务器关闭前将需要备份的数据进行持久化。
第二种情况:当对运行直播业务的直播服务器进行扩容时,将直播服务器的内存中存储的数据备份到持久化存储***中。
此种情况是在加入主播用户的直播聊天室的观众用户较多时出现的情况,例如,当网红直播时加入网红的直播聊天室的观众用户较多,网红就是网络人气很高的主播用户,这类主播用户做直播时会有大量观看用户观看直播。在这种情况下往往需要较多直播服务器来运行直播业务,此时需要在原直播服务器的基础上增加新直播服务器,通过原直播服务器和新直播服务器来协同运行直播业务。在增加新直播服务器后,将原直播服务器的内存中的数据备份到持久化存储***中,然后新直播服务器再从该持久化存储***中获取该数据并加载到自身的内存中。
其中,技术人员可以在客户端中配置需要备份的原直播服务器的地址和端口,通过该客户端根据原直播服务器的地址和端口,向原直播服务器发送请求。原直播服务器在接收该请求时,将其内存中的数据备份到持久化存储***中。
第三种情况:当对运行直播业务的直播服务器进行缩容时,将直播服务器的内存中存储的数据备份到持久化存储***中。
此种情况是在访问量较高的主播用户停止直播时出现的情况,主播用户的访问量是指加入主用用户的直播聊天室的观众用户数量。例如,网红就是访问量较高的主播用户,当网红停止直播时大量的观众用户为会停止使用直播业务,此时运行直播业务所需要的直播服务器减少,需要关闭一部分直播服务器。在直播服务器关闭之前,需要将该直播服务器内存中存储的数据备份到持久化存储***中。
其中,技术人员可以在客户端中配置需要关闭的直播服务器的地址和端口,通过该客户端根据需要关闭的直播服务器的地址和端口,向需要关闭的直播服务器发送请求。需要关闭的直播服务器在接收该请求时,将其内存中的数据备份到持久化存储***中。
其中,该客户端可以为jmx客户端,通过jmx设定开关,在不重启***的情况下,通过jmx修改参数值的方式,动态触发数据备份机制。然后写个jmx客户端的工具,将需要备份的服务器节点的ip和jmx端口写入配置文件,然后在***扩容或者缩容前,执行该工具。这样,就可以在扩容或者缩容之前备份聊天室信息、聊天室用户和聊天室消息到redis中。
针对上述介绍扩容或缩容时,在不需要重启的时候,通过Jmx开关来触发Java.Runtime.addShutdownHook(Thread hook)方法来备份数据。
接下来就详细描述直播服务器如何将其内存中存储的数据备份到持久化存储***中,该数据可以为各直播聊天室包括的各观众用户的用户信息,还可以包括各直播聊天室包括的各用户的聊天内容。
步骤203:直播服务器当接收到该请求或检测到需要重启时,从其内存中获取各直播聊天室的聊天室信息。
在遇到以上三种情况时,直播服务器当接收到该请求或检测到需要重启,从而进行备份直播聊天室的聊天室信息。
对于任一直播聊天室,该直播聊天室的聊天室信息至少包括该直播聊天室中的各观众用户的用户信息,还可以包括该直播聊天室中的各观众用户的聊天内容。
直播服务器内存中存储的各直播聊天室均是当前主播用户正在做直播的直播聊天室,如果主播用户停止直播,则直播服务器会销毁该该直播用户的直播聊天室。
本步骤可以为:直播服务器获取其内存中的各直播聊天室,对于任一个直播聊天室,根据该直播聊天室的房间标识,从其内存存储的房间标识与观众用户的信息类的对应关系中获取该直播聊天室包括的各观众用户的信息类,观众用户的信息类中包括该观众用户的用户信息。
直播服务器还可以根据该直播聊天室的房间标识,从其内存存储的房间标识与聊天内容的对应关系中获取该直播聊天室内的各用户的聊天内容。
步骤204:直播服务器将各直播聊天室的房间标识与聊天室信息的对应关系存储在持久化存储***中。
本步骤可以为:对于任一直播聊天室,直播服务器对该直播聊天室中的各观众用户的信息类进行序列化操作,得到各观众用户的文本信息;将该直播聊天室的房间标识和各观众用户的文本信息存储持久化存储***中的房间标识与文本信息的对应关系中。
直播服务器还可以将该直播聊天室的房间标识和该直播聊天室内的各用户的聊天内容的对应关系存储在持久化存储***中。
其中,在直播服务器重启后或直播服务器扩容或缩容后,重启后的直播服务器或扩容缩容后剩下仍在工作的直播服务器需要按如下流程来恢复备份在持久化存储***中的直播聊天室。
由于聊天室中用户加入、退出频繁的特点,若在用户加入、退出的同时持久化,如前所述,将会做大量不必要的添加及删除操作。所以在上述步骤203中可通过Java.Runtime.addShutdownHook(Thread hook)方法,仅在JVM即将关闭前备份数据。
Java提供的的ShutdownHook在下面的场景下会被自动调用:
·程序正常退出
·使用System.exit()
·终端使用Ctrl+C触发的中断
·***关闭
·OutOfMemory导致***宕机等
在调用addShutdownHook时,将下面逻辑写到Thread hook线程的run方法中,该方法的逻辑为,扫描直播服务器中所有的直播聊天室,将直播聊天室包括的观众用户信息序列化后,作为value;把直播应用的应用标识appId作为key,把直播聊天室的房间标识chatroomId作为field,将上述数据持久化到redis中。这样,在恢复时,可以根据直播应用的应用标识appId和直播聊天室的房间标识chatroomId两个维度查询备份的直播聊天室包括的用户。
步骤205:当终端请求获取待获取聊天室时,如果直播服务器的内存中不包括待获取聊天室的配置信息和聊天室信息,则直播服务器向终端发送一个空对象,该空对象包括预设的聊天室的配置信息和聊天室信息,否则向终端发送待获取聊天室的配置信息和聊天室信息。
聊天室服务器在扩容缩容或重启后,内存及内存中数据均发生变化,在有终端请求聊天室相关信息时,执行上述步骤205,该终端可以为观众用户对应的终端,用户可以在该终端的直播应用中打开应用界面,该应用界面中包括当前正在做直播的各主播用户的直播聊天室。观众用户可以在其终端的直播应用中选择要加入的直播聊天室,该直播聊天室为待获取聊天室,然后向直播服务器发送携带待获取直播聊天室的房间标识的加入请求。
直播服务器接收该加入请求,根据该加入请求携带的待获取聊天室的房间标识,查找房间标识与空对象的对应关系;如果没有查找到对应的空对象,在内存中创建一个新空对象,该新空对象包括预设的聊天室的配置信息和聊天室信息,读取新空对象的内容并向终端发送新空对象的内容,以及将待获取聊天室的房间标识和新空对象存储在房间标识与空对象的对应关系中;如果查找到对应的空对象,当查找的空对象包括待获取聊天室的配置信息和聊天室信息时,将查找的空对象包括的待获取聊天室的配置信息和聊天室信息发送给终端,当查找的空对象不包括待获取聊天室的配置信息和聊天室信息时,将查找的空对象发送给终端。
在终端请求加入直播聊天室时以及直播服务器的内存中没有该直播聊天室的配置信息和聊天室信息时,直播服务器可以先直接向该终端发送一个空对象,然后再通过如下步骤向直播服务器的内存中加载该直播聊天室的配置信息和聊天室信息。这样可以只需要向持久化存储***请求一次获取该直播聊天室的配置信息和聊天室信息,避免大量用户请求加入该直播聊天室时,直播服务器向持久化存储***做出大量请求,导致持久化存储***崩溃。
步骤206:如果直播服务器的内存中不包括待获取聊天室的配置信息和聊天室信息,直播服务器根据待获取聊天室的房间标识,从持久化存储***中获取待获取聊天室的配置信息和聊天室信息并加载到其内存中。
采用JDK的ConcurrentHashMap的putIfAbsent方法,为了防止“缓存穿透”,先创建个空对象,作为要恢复的数据放到ConcurrentHashMap的value中,然后根据key从redis中查询之前备份的数据,
本步骤可以为,直播服务器根据待获取聊天室的房间标识,从持久化存储***中获取待获取包括待获取聊天室的房间标识的配置信息,并将该配置信息加载到该待获取聊天室对应的空对象中;根据待获取聊天室的房间标识,从持久化存储***中保存的房间标识与文本信息的对应关系中获取对应各观众用户的文本信息;对各观众用户的文本信息进行反序列化操作,得到各观众用户的信息类,将各观众用户的信息类加载到待获取聊天室对应的空对象中。
进一步地,还可以根据待获取聊天室的房间标识,从持久化存储***中保存的房间标识与聊天内容的对应关系中获取待获取待获取聊天室中的各用户的聊天内容,将待获取聊天室中的各用户的聊天内容加载到待获取聊天室对应的空对象中。
以上的步骤205、206的方案是在有终端请求聊天室信息时启动备份数据的恢复,在另一种实施例中,直播服务器还可以在完成重启或扩容缩容后,直接进行备份数据的恢复,具体包括:在内存创建聊天室对应的空对象,进而根据持久化存储的数据加载所述空对象,直至数据恢复完成,恢复期间有终端请求数据时,将当前空对象对应内容返回给终端。
在本发明实施例中,在直播服务器重启或接收到请求时,例如在直播服务器扩容或缩容前,直播服务器才将其内存中的各直播聊天室的聊天室信息存储到持久化存储***中,这样可以减少对持久化存储***进行存储和删除的操作,减少了对持久化存储***中的硬件资源的占用。在终端请求加入直播聊天室时,直播服务器的内存中没有该直播聊天室的配置信息和聊天室信息时就直播向该终端发送一个空对象,然后再向其内存中加载该直播聊天室的配置信息和聊天室信息。这样可以避免大量用户请求加入直播聊天室时,直播服务器向持久化存储***发送获取数据请求,导致持久化存储***崩溃。
实施例三
参见图3,本发明实施例提供了提供了一种备份数据的装置300,所述装置300包括:
第一获取模块301,用于当创建直播聊天室时,获取所述直播聊天室的配置信息,所述配置信息包括所述直播聊天室的房间标识、房间名称和创建所述直播聊天室的主播用户的用户信息中的一个或多个,所述用户信息包括所述主播用户的用户标识和用户名称中的一个或多个;
第一存储模块302,用于将所述直播聊天室的配置信息存储在持久化存储***中;
第二获取模块303,用于当接收到指示备份直播服务器的请求或检测到所述直播服务器重启时,从所述直播服务器的内存中获取所述直播聊天室的聊天室信息,所述聊天室信息至少包括所述直播聊天室中的各观众用户的用户信息;
第二存储模块304,用于将所述直播聊天室的房间标识与所述聊天室信息的对应关系存储在所述持久化存储***中。
可选的,所述第二获取模块303,用于根据所述直播聊天室的房间标识,从直播服务器的内存存储的房间标识与观众用户的信息类的对应关系中获取所述直播聊天室包括的各观众用户的信息类,观众用户的信息类中包括所述观众用户的用户信息。
可选的,所述第二存储模块304包括:
序列化单元,用于对所述各观众用户的信息类进行序列化操作,得到所述各观众用户的文本信息;
存储单元,用于将所述直播聊天室的房间标识和所述各观众用户的文本信息存储所述持久化存储***中的房间标识与文本信息的对应关系中。
可选的,所述装置300还包括:
发送模块,用于当终端请求获取待获取聊天室时,如果所述直播服务器的内存中不包括所述待获取聊天室的配置信息和聊天室信息,在内存中创建所述待获取聊天室对应的空对象,读取所述空对象内容并发送给终端,所述空对象包括预设的聊天室的配置信息和聊天室信息;如果所述直播服务器的内存中包括所述待获取聊天室的配置信息和聊天室信息,则向所述终端发送所述待获取聊天室的配置信息和聊天室信息。
可选的,所述装置300还包括:
加载模块,用于根据所述待获取聊天室的房间标识,从持久化存储***中获取所述待获取聊天室的配置信息和聊天室信息并加载到所述空对象中。
在本发明实施例中,通过在直播服务器重启或接收到请求时,才将直播服务器内存中的各直播聊天室的聊天室信息存储到持久化存储***中,这样可以减少对持久化存储***进行存储和删除的操作,减少了对持久化存储***中的硬件资源的占用。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种备份数据的方法,其特征在于,所述方法包括:
当创建直播聊天室时,获取所述直播聊天室的配置信息,所述配置信息包括所述直播聊天室的房间标识、房间名称和创建所述直播聊天室的主播用户的用户信息中的一者或多者,所述用户信息包括所述主播用户的用户标识和用户名称中的一者或多者;
将所述直播聊天室的配置信息存储在持久化存储***中;
当接收到指示备份直播服务器的请求或检测到所述直播服务器重启时,从所述直播服务器的内存中获取所述直播聊天室的聊天室信息,所述聊天室信息至少包括所述直播聊天室中的各观众用户的用户信息;
将所述直播聊天室的房间标识与所述聊天室信息的对应关系存储在所述持久化存储***中;
当终端请求获取待获取聊天室时,如果所述直播服务器的内存中不包括所述待获取聊天室的配置信息和聊天室信息,在内存中创建所述待获取聊天室对应的空对象,读取所述空对象内容并发送给终端,所述空对象包括预设的聊天室的配置信息和聊天室信息;如果所述直播服务器的内存中包括所述待获取聊天室的配置信息和聊天室信息,则向所述终端发送所述待获取聊天室的配置信息和聊天室信息。
2.如权利要求1所述的方法,其特征在于,所述从所述直播服务器的内存中获取所述直播聊天室的聊天室信息,包括:
根据所述直播聊天室的房间标识,从直播服务器的内存存储的房间标识与观众用户的信息类的对应关系中获取所述直播聊天室包括的各观众用户的信息类,观众用户的信息类中包括所述观众用户的用户信息。
3.如权利要求2所述的方法,其特征在于,所述将所述直播聊天室的房间标识与所述聊天室信息的对应关系存储在所述持久化存储***中,包括:
对所述各观众用户的信息类进行序列化操作,得到所述各观众用户的文本信息;
将所述直播聊天室的房间标识和所述各观众用户的文本信息存储所述持久化存储***中的房间标识与文本信息的对应关系中。
4.如权利要求1所述的方法,其特征在于,所述读取所述空对象内容并发送给终端之后,还包括:
根据所述待获取聊天室的房间标识,从持久化存储***中获取所述待获取聊天室的配置信息和聊天室信息并加载到所述空对象中。
5.一种备份数据的装置,其特征在于,所述装置包括:
第一获取模块,用于当创建直播聊天室时,获取所述直播聊天室的配置信息,所述配置信息包括所述直播聊天室的房间标识、房间名称和创建所述直播聊天室的主播用户的用户信息中的一者或多者,所述用户信息包括所述主播用户的用户标识和用户名称中的一者或多者;
第一存储模块,用于将所述直播聊天室的配置信息存储在持久化存储***中;
第二获取模块,用于当接收到指示备份直播服务器的请求或检测到所述直播服务器重启时,从所述直播服务器的内存中获取所述直播聊天室的聊天室信息,所述聊天室信息至少包括所述直播聊天室中的各观众用户的用户信息;
第二存储模块,用于将所述直播聊天室的房间标识与所述聊天室信息的对应关系存储在所述持久化存储***中;
所述装置还包括:
发送模块,用于当终端请求获取待获取聊天室时,如果所述直播服务器的内存中不包括所述待获取聊天室的配置信息和聊天室信息,在内存中创建所述待获取聊天室对应的空对象,读取所述空对象内容并发送给终端,所述空对象包括预设的聊天室的配置信息和聊天室信息;如果所述直播服务器的内存中包括所述待获取聊天室的配置信息和聊天室信息,则向所述终端发送所述待获取聊天室的配置信息和聊天室信息。
6.如权利要求5所述的装置,其特征在于,所述第二获取模块,用于根据所述直播聊天室的房间标识,从直播服务器的内存存储的房间标识与观众用户的信息类的对应关系中获取所述直播聊天室包括的各观众用户的信息类,观众用户的信息类中包括所述观众用户的用户信息。
7.如权利要求6所述的装置,其特征在于,所述第二存储模块包括:
序列化单元,用于对所述各观众用户的信息类进行序列化操作,得到所述各观众用户的文本信息;
存储单元,用于将所述直播聊天室的房间标识和所述各观众用户的文本信息存储所述持久化存储***中的房间标识与文本信息的对应关系中。
8.如权利要求5所述的装置,其特征在于,所述装置还包括:
加载模块,用于根据所述待获取聊天室的房间标识,从持久化存储***中获取所述待获取聊天室的配置信息和聊天室信息并加载到所述空对象中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611118616.4A CN108173665B (zh) | 2016-12-07 | 2016-12-07 | 一种备份数据的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611118616.4A CN108173665B (zh) | 2016-12-07 | 2016-12-07 | 一种备份数据的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108173665A CN108173665A (zh) | 2018-06-15 |
CN108173665B true CN108173665B (zh) | 2021-02-23 |
Family
ID=62526391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611118616.4A Active CN108173665B (zh) | 2016-12-07 | 2016-12-07 | 一种备份数据的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108173665B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109254828A (zh) * | 2018-08-28 | 2019-01-22 | 四川爱创科技有限公司 | Jvm安全退出的方法 |
CN112312155B (zh) * | 2020-10-30 | 2022-04-22 | 北京金山云网络技术有限公司 | 视频流的处理方法、装置和服务器 |
CN114666615B (zh) * | 2022-03-10 | 2024-04-16 | 北京达佳互联信息技术有限公司 | 资源调配方法、装置、服务器、程序和存储介质 |
CN114866795B (zh) * | 2022-04-28 | 2024-01-26 | 百果园技术(新加坡)有限公司 | 一种直播间数据处理方法、装置及直播平台 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009092254A1 (zh) * | 2007-12-29 | 2009-07-30 | Huawei Technologies Co., Ltd. | 一种高速缓存数据恢复的方法、装置和*** |
CN102111313A (zh) * | 2010-12-23 | 2011-06-29 | 中兴通讯股份有限公司 | 接入用户表的自动恢复方法和装置 |
CN104394432A (zh) * | 2014-11-26 | 2015-03-04 | 广州华多网络科技有限公司 | 一种视频直播间的创建方法及服务设备 |
CN105612503A (zh) * | 2013-08-09 | 2016-05-25 | 桑迪士克科技股份有限公司 | 持久性数据结构 |
CN105933213A (zh) * | 2016-06-24 | 2016-09-07 | 腾讯科技(深圳)有限公司 | 一种聊天消息的处理方法、相关设备和*** |
-
2016
- 2016-12-07 CN CN201611118616.4A patent/CN108173665B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009092254A1 (zh) * | 2007-12-29 | 2009-07-30 | Huawei Technologies Co., Ltd. | 一种高速缓存数据恢复的方法、装置和*** |
CN102111313A (zh) * | 2010-12-23 | 2011-06-29 | 中兴通讯股份有限公司 | 接入用户表的自动恢复方法和装置 |
CN105612503A (zh) * | 2013-08-09 | 2016-05-25 | 桑迪士克科技股份有限公司 | 持久性数据结构 |
CN104394432A (zh) * | 2014-11-26 | 2015-03-04 | 广州华多网络科技有限公司 | 一种视频直播间的创建方法及服务设备 |
CN105933213A (zh) * | 2016-06-24 | 2016-09-07 | 腾讯科技(深圳)有限公司 | 一种聊天消息的处理方法、相关设备和*** |
Also Published As
Publication number | Publication date |
---|---|
CN108173665A (zh) | 2018-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11809726B2 (en) | Distributed storage method and device | |
CN108173665B (zh) | 一种备份数据的方法及装置 | |
US20150331612A1 (en) | Memory Cleaning Method and Apparatus, and Terminal Device | |
US9262324B2 (en) | Efficient distributed cache consistency | |
US20180285216A1 (en) | Virtual Machine Recovery Method and Virtual Machine Management Device | |
US8843581B2 (en) | Live object pattern for use with a distributed cache | |
US20100088300A1 (en) | Resource tracking | |
CN104750573A (zh) | 分布式数据***数据节点的全局一致性备份和还原方法 | |
CN114900449B (zh) | 一种资源信息管理方法、***及装置 | |
CN113885780A (zh) | 数据同步方法、装置、电子设备、***和存储介质 | |
CN115934414A (zh) | 数据备份方法、数据恢复方法、装置、设备及存储介质 | |
CN113641640B (zh) | 用于流式计算***的数据处理方法、装置、设备和介质 | |
US20100145933A1 (en) | Dynamic Restoration of Message Object Search Indexes | |
CN111342986A (zh) | 分布式节点管理方法及装置、分布式***、存储介质 | |
CN113238815A (zh) | 一种接口访问控制方法、装置、设备及存储介质 | |
CN117435569A (zh) | 缓存***动态扩容方法、装置、设备、介质和程序产品 | |
CN115314361B (zh) | 一种服务器集群管理方法及其相关组件 | |
CN112035062A (zh) | 云计算的本地存储的迁移方法、计算机设备及存储介质 | |
CN109669642B (zh) | 存储***的节点加入方法、***、装置及可读存储介质 | |
CN116701020A (zh) | 消息延时处理方法、装置、设备、介质和程序产品 | |
CN108271420A (zh) | 管理文件的方法、文件***和服务器*** | |
US9852031B2 (en) | Computer system and method of identifying a failure | |
CN111226200B (zh) | 为分布式应用创建一致性快照的方法、装置和分布式*** | |
CN107145302B (zh) | 一种用于在分布式存储***中执行文件写入的方法与设备 | |
CN115238006A (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 |