CN109347935B - 一种基于区块链实现实时通讯消息同步的方法 - Google Patents
一种基于区块链实现实时通讯消息同步的方法 Download PDFInfo
- Publication number
- CN109347935B CN109347935B CN201811156974.3A CN201811156974A CN109347935B CN 109347935 B CN109347935 B CN 109347935B CN 201811156974 A CN201811156974 A CN 201811156974A CN 109347935 B CN109347935 B CN 109347935B
- Authority
- CN
- China
- Prior art keywords
- message
- block
- server
- hash value
- client
- 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
- 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
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于区块链实现实时通讯消息同步的方法,包括以下步骤:S1、服务器接收新会话消息并基于此创建第一个区块;S2、向区块头内写入基础信息;S3、向区块体内写入消息数据;S4、当区块体内消息数据储存满时,自动创建第二个区块并重复步骤S2、S3;S5、客户端通过服务器进行数据同步;S6、客户端同步成功后将区块内消息导出并发送至数据库;S7、交互界面基于数据库获取消息并对外显示。本发明可以有效解决原实时通讯系统中因消息ID冲突导致的一系列问题,并且在服务器发生故障后,通过客户端写回的方式迅速恢复服务器消息记录,保证了实时通讯的安全性和稳定性。
Description
技术领域
本发明涉及一种基于区块链实现实时通讯消息同步的方法,属于实时通讯应用领域。
背景技术
目前在主流实时通讯系统中,客户端和服务器之间漫游消息的同步实现主要依靠差集消息区间进行,即由客户端计算出本地跟服务器之间存在的差集消息区间,根据该区间向服务器获取区间内消息,并基于获取的消息补全本地消息,最终达到客户端与服务器之间消息的一致。但这种方法存在以下弊端:即客户端消息与服务器消息ID冲突导致数据丢失;服务器迁移容易引发故障;客户端在与正式服务器和测试服务器的连接进行切换时易应发冲突;服务器数据库的损坏容易导致数据丢失等。
发明内容
针对现有技术的不足,本发明提供了一种基于区块链实现实时通讯消息同步的方法,包括以下步骤:
S1、服务器接收新会话消息并基于此创建第一个区块;
S2、向区块头内写入基础信息;
S3、向区块体内写入消息数据;
S4、当区块体内消息数据储存满时,自动创建第二个区块并重复步骤S2、S3;
S5、客户端通过服务器进行数据同步;
S6、客户端同步成功后将区块内消息导出并发送至数据库;
S7、交互界面基于数据库获取消息并对外显示。
进一步,S2中所述基础信息包括但不限于本区块的哈希值、上一区块的哈希值以及本区块的区块ID。
进一步,所述区块ID基于区块时间戳生成。
进一步,所述各区块的哈希值即各区块内每条消息ID的总和值。
进一步,S3中所述消息数据包括消息ID和内容信息。
进一步,所述消息ID基于消息时间戳生成。
进一步,写入区块体内的消息数据量可以是一条或多条。
进一步,S5中所述数据同步是以区块为单位进行,当服务器发送消息至客户端时,客户端计算本地区块哈希值,如果与服务器区块哈希值相同,则客户端接收来自服务器的新消息,如果不相同,则接收整个区块。
本发明的有益效果为:本发明可以有效解决原实时通讯系统中因消息ID冲突导致的一系列问题,并且在服务器发生故障后,通过客户端写回的方式迅速恢复服务器消息记录,保证了实时通讯的安全性和稳定性。
附图说明
图1所示为根据本发明的总体流程图;
图2所示为根据本发明具体实施例a的流程图;
图3所示为根据本发明具体实施例b的流程图;
图4所示为根据本发明具体实施例c的流程图;
图5所示为根据本发明具体实施例d的流程图;
图6所示为根据本发明具体实施例e的流程图。
具体实施方式
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
需要说明的是,如无特殊声明,在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本文所使用的术语“和/或”包括一个或多个的所列项目的任意的组合。
应当理解,本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。
接下来结合附图对本发明的具体实施例作进一步说明:
参照图1所示根据本发明的总体流程图,具体包括以下步骤:
S1、服务器接收新会话消息并基于此创建第一个区块;
S2、向区块头内写入基础信息;所述基础信息包括但不限于本区块的哈希值、上一区块的哈希值以及本区块的区块ID;所述区块ID基于区块时间戳生成;所述各区块的哈希值即各区块内每条消息ID的总和值。
S3、向区块体内写入消息数据;所述消息数据包括消息ID和内容信息;所述消息ID基于消息时间戳生成;写入区块体内的消息数据量可以是一条或多条;
S4、当区块体内消息数据储存满时,自动创建第二个区块并重复步骤S2、S3;
S5、客户端通过服务器进行数据同步;所述数据同步是以区块为单位进行;
S6、客户端同步成功后将区块内消息导出并发送至数据库;
S7、交互界面基于数据库获取消息并对外显示。
参照图2具体实施例a,所示为客户端接收新消息的流程,服务器推送新消息或通知;客户端接收新消息或通知的提醒后,判断本地区块的哈希值与服务器端的区块哈希值是否相同;
如果相同,则客户端接收一条来自服务器的新消息,并存储至数据库内,随后判断本地区块在接收新消息后是否存满,如果存满则打包区块并存储至本地存储器,流程结束;
如果不同,则接收整个区块,并提取区块内消息数据并发送至数据库,同时备份存储区块至本地存储器,流程结束。
服务器在接收到新会话的第一条消息时,会基于此创建第一个区块,并将此消息封装进区块内,每往区块内插入一条新消息,区块的哈希值基于消息ID进行重新计算。
为了提高系统整体的读写能力,服务器会缓存会话消息存入的最后一个区块,这个区块通常处于未满状态,服务器在接收到新消息时会将其插入缓存中的区块并更新区块哈希值。
参照图3具体实施例b,出于节省内存空间的考量,每隔一段时间程序会对缓存中的区块进行逐个检查,判断是否过期,如过期则将区块换出缓存,服务器基于上次保存至磁盘的缓存区块哈希值表判断缓存区内区块哈希值是否发生变化;若判断结果为是,则将该区块保存至磁盘,并更新哈希值表,流程结束;若判断结果为否,检查流程结束;间隔时间由程序预先设定,可基于实际需求修改。
出于防止数据丢失的考量,程序设置每间隔一段时间将整个缓存内的数据保存至磁盘内,避免因机器重启导致未保存缓存数据的丢失,间隔时间由程序预先设定,可基于实际需求修改。
参照图4具体实施例c,服务器在接收到新的会话消息时,会对会话消息区块进行更新;服务器接收新的会话消息;判断缓存区内是否存在该会话的最后区块;若判断结果为是,更新缓存,流程结束;若判断结果为否,从磁盘加载区块至缓存后,更新缓存,流程结束。
参照图5具体实施例d,所示为客户端从服务器提取区块的具体流程;客户端发起提取区块指令;服务器判断缓存内是否存在该区块;若判断结果为是,发送区块至客户端,流程结束;若判断结果为否,从磁盘内加载缓存,发送区块至客户端,流程结束。
参照图6具体实施例e,所示为客户端保证两条消息间区块完整且连续的具体流程;判断两条消息间的区块是否都存在;若判断结果为是,进入下一阶段;若判断结果为否,同步缺少的区块,并将区块信息导入数据库内,进入下一阶段;
判断除了最后一个区块以外的其他区块均已满;若判断结果为是,流程结束;若判断结果为否,同步未满区块,并将区块信息导入数据库内,流程结束。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。
Claims (8)
1.一种基于区块链实现实时通讯消息同步的方法,包括以下步骤:
S1、服务器接收新会话消息并基于此创建第一个区块;
S2、向区块头内写入基础信息,所述基础信息包括所述区块的哈希值,每往区块内插入一条新消息,所述区块的哈希值基于消息ID进行重新计算,所述消息ID为新消息ID;
S3、向区块体内写入消息数据;
S4、当区块体内消息数据储存满时,自动创建第二个区块并重复步骤S2、S3;
S5、客户端通过服务器进行数据同步;
S6、客户端同步成功后将区块内消息导出并发送至数据库;
S7、交互界面基于数据库获取消息并对外显示。
2.根据权利要求1所述基于区块链实现实时通讯消息同步的方法,其特征在于,S2中所述基础信息包括但不限于本区块的哈希值、上一区块的哈希值以及本区块的区块ID。
3.根据权利要求2所述基于区块链实现实时通讯消息同步的方法,其特征在于,所述区块ID基于区块时间戳生成。
4.根据权利要求2所述基于区块链实现实时通讯消息同步的方法,其特征在于,所述各区块的哈希值即各区块内每条消息ID的总和值。
5.根据权利要求1所述基于区块链实现实时通讯消息同步的方法,其特征在于,S3中所述消息数据包括消息ID和内容信息。
6.根据权利要求5所述基于区块链实现实时通讯消息同步的方法,其特征在于,所述消息ID基于消息时间戳生成。
7.根据权利要求5所述基于区块链实现实时通讯消息同步的方法,其特征在于,写入区块体内的消息数据量可以是一条或多条。
8.根据权利要求1所述基于区块链实现实时通讯消息同步的方法,其特征在于,S5中所述数据同步是以区块为单位进行,当服务器发送消息至客户端时,客户端计算本地区块哈希值,如果与服务器区块哈希值相同,则客户端接收来自服务器的新消息,如果不相同,则接收整个区块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811156974.3A CN109347935B (zh) | 2018-09-30 | 2018-09-30 | 一种基于区块链实现实时通讯消息同步的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811156974.3A CN109347935B (zh) | 2018-09-30 | 2018-09-30 | 一种基于区块链实现实时通讯消息同步的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109347935A CN109347935A (zh) | 2019-02-15 |
CN109347935B true CN109347935B (zh) | 2021-08-03 |
Family
ID=65308429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811156974.3A Active CN109347935B (zh) | 2018-09-30 | 2018-09-30 | 一种基于区块链实现实时通讯消息同步的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109347935B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110471981A (zh) * | 2019-07-05 | 2019-11-19 | 深圳壹账通智能科技有限公司 | 基于区块链的线上数据同步方法、装置、终端及存储介质 |
CN110995776B (zh) * | 2019-10-12 | 2021-11-02 | 平安科技(深圳)有限公司 | 区块链的区块分发方法、装置、计算机设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102045274A (zh) * | 2010-05-11 | 2011-05-04 | 洪涛 | 基于即时通信实现信息交互的方法和通信系统 |
CN106682457A (zh) * | 2016-12-16 | 2017-05-17 | 北京握奇智能科技有限公司 | 一种基于区块链技术的图片版权保护方法和系统 |
CN107124444A (zh) * | 2017-03-28 | 2017-09-01 | 上海瑞麒维网络科技有限公司 | 一种区块链数据同步的方法和装置 |
CN107196934A (zh) * | 2017-05-18 | 2017-09-22 | 电子科技大学 | 一种基于区块链的云数据管理方法 |
CN107291862A (zh) * | 2017-06-12 | 2017-10-24 | 腾讯科技(深圳)有限公司 | 业务数据存储方法、装置、存储介质及电子设备 |
CN107315786A (zh) * | 2017-06-12 | 2017-11-03 | 腾讯科技(深圳)有限公司 | 业务数据存储方法及装置 |
WO2018135766A1 (ko) * | 2017-01-19 | 2018-07-26 | 주식회사 케이티 | 블록 체인을 이용하여 데이터를 관리하는 장치 및 방법 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9819624B2 (en) * | 2004-03-31 | 2017-11-14 | Google Inc. | Displaying conversations in a conversation-based email system |
CN103379021B (zh) * | 2012-04-24 | 2017-02-15 | 中兴通讯股份有限公司 | 实现分布式消息队列的方法及系统 |
GB201408408D0 (en) * | 2014-05-12 | 2014-06-25 | Tomlinson Martin | Method and apparatus for time limited messages in packet communications |
KR101735708B1 (ko) * | 2016-02-02 | 2017-05-15 | 주식회사 코인플러그 | 파일에 대한 노터리 서비스를 제공하고 상기 노터리 서비스를 사용하여 기록된 파일에 대한 검증을 수행하는 방법 및 서버 |
CN107528816B (zh) * | 2016-06-22 | 2021-05-18 | 中兴通讯股份有限公司 | 分布式数据库中id的处理方法、管理系统及服务器 |
CN106130738A (zh) * | 2016-08-25 | 2016-11-16 | 杭州天谷信息科技有限公司 | 一种支持国密算法的区块链系统 |
CN107040455B (zh) * | 2017-05-27 | 2021-05-11 | 北京思特奇信息技术股份有限公司 | 一种基于redis的即时消息通讯方法和系统 |
CN107819777B (zh) * | 2017-11-17 | 2020-07-24 | 利姆斯(北京)区块链技术有限公司 | 一种基于区块链技术的数据存证方法及系统 |
-
2018
- 2018-09-30 CN CN201811156974.3A patent/CN109347935B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102045274A (zh) * | 2010-05-11 | 2011-05-04 | 洪涛 | 基于即时通信实现信息交互的方法和通信系统 |
CN106682457A (zh) * | 2016-12-16 | 2017-05-17 | 北京握奇智能科技有限公司 | 一种基于区块链技术的图片版权保护方法和系统 |
WO2018135766A1 (ko) * | 2017-01-19 | 2018-07-26 | 주식회사 케이티 | 블록 체인을 이용하여 데이터를 관리하는 장치 및 방법 |
CN107124444A (zh) * | 2017-03-28 | 2017-09-01 | 上海瑞麒维网络科技有限公司 | 一种区块链数据同步的方法和装置 |
CN107196934A (zh) * | 2017-05-18 | 2017-09-22 | 电子科技大学 | 一种基于区块链的云数据管理方法 |
CN107291862A (zh) * | 2017-06-12 | 2017-10-24 | 腾讯科技(深圳)有限公司 | 业务数据存储方法、装置、存储介质及电子设备 |
CN107315786A (zh) * | 2017-06-12 | 2017-11-03 | 腾讯科技(深圳)有限公司 | 业务数据存储方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109347935A (zh) | 2019-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111399873B (zh) | 一种模型更新方法及装置 | |
CN109683826B (zh) | 用于分布式存储系统的扩容方法和装置 | |
EP3304310B1 (en) | System and method for automatic cloud-based full-data backup and restore on mobile devices | |
US9251231B2 (en) | Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation | |
CN107609188B (zh) | 基于GoldenGate的数据同步校验方法 | |
US8255920B2 (en) | Time management control method for computer system, and computer system | |
EP3051408B1 (en) | Data operating method and device | |
CN109347935B (zh) | 一种基于区块链实现实时通讯消息同步的方法 | |
CN105224361B (zh) | 一种对sqlite3型嵌入式数据库进行升级的方法及系统 | |
CN111190962B (zh) | 一种文件同步方法、装置及本地终端 | |
US20150227605A1 (en) | Information processing terminal, synchronization control method, and computer-readable recording medium | |
CN109388677B (zh) | 集群之间数据同步方法、装置、设备及其存储介质 | |
WO2019085466A1 (zh) | 关联测试方法、系统、应用服务器及计算机可读存储介质 | |
CN104601366A (zh) | 一种控制、服务节点配置服务的方法及装置 | |
CN108319617A (zh) | 确定数据库主从差异的方法、装置及切换控制方法、装置 | |
CN105446829A (zh) | 客户端程序的修复方法、装置、系统及服务器 | |
CN110727644A (zh) | 一种区块链数据裁剪的方法、系统及存储介质 | |
CN104519078A (zh) | 实现云存储的方法与装置 | |
CN107040576A (zh) | 信息推送方法及装置、通讯系统 | |
CN104092780A (zh) | 基于文件分块的文件修改方法、单文件同步方法及装置 | |
CN110196883A (zh) | 一种对线上业务无影响的数据同步方法及装置 | |
JP2012089049A (ja) | 計算機システム及びサーバ | |
EP3346642A1 (en) | Method and device for managing network element model | |
CN106557262B (zh) | 一种数据处理方法及装置 | |
CN103259863A (zh) | 基于集群的控制zookeeper服务的系统及方法 |
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 |