CN110233791B - 数据去重方法和装置 - Google Patents

数据去重方法和装置 Download PDF

Info

Publication number
CN110233791B
CN110233791B CN201910489938.7A CN201910489938A CN110233791B CN 110233791 B CN110233791 B CN 110233791B CN 201910489938 A CN201910489938 A CN 201910489938A CN 110233791 B CN110233791 B CN 110233791B
Authority
CN
China
Prior art keywords
server
request
issuing
data
group
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
Application number
CN201910489938.7A
Other languages
English (en)
Other versions
CN110233791A (zh
Inventor
刘宇平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201910489938.7A priority Critical patent/CN110233791B/zh
Publication of CN110233791A publication Critical patent/CN110233791A/zh
Application granted granted Critical
Publication of CN110233791B publication Critical patent/CN110233791B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/212Monitoring or handling of messages using filtering or selective blocking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • H04L67/1048Departure or maintenance mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/148Migration or transfer of sessions

Abstract

本公开实施例公开了数据去重方法和装置。方法包括:发布端响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID;基于业务数据和当前会话消息ID,生成发布请求,向服务端发送发布请求;服务端响应于接收发布请求且发布请求中携带的当前会话消息ID小于或等于服务端会话消息确认ID,向发布端返回发布请求重复。该实施方式可以防止发布端重复发布业务数据,并且对于重复数据的判断简单且性能较高。

Description

数据去重方法和装置
技术领域
本公开涉及计算机技术领域,具体涉及分布式消息系统技术领域,尤其涉及数据去重方法和装置。
背景技术
在软件架构中,发布/订阅是一种消息范式,消息的发送者(称为发布者)不会将消息直接发送给特定的接收者(称为订阅者)。而是将发布的消息分为不同的类别,无需了解哪些订阅者(如果有的话)可能存在。同样的,订阅者可以表达对一个或多个类别的兴趣,只接收感兴趣的消息,无需了解哪些发布者(如果有的话)存在。
发布/订阅是消息队列范式的兄弟,通常是更大的面向消息中间件系统的一部分。分布式消息系统在API中通常同时支持消息队列模型和发布/订阅模型。分布式消息系统可以采用多种方式实现。例如Bigpipe分布式消息系统或Kafka分布式消息系统等。
发明内容
本公开实施例提供了数据去重方法和装置。
第一方面,本公开实施例提供了一种数据去重方法,包括:接收发布请求;其中,发布请求由发布端基于业务数据和当前会话消息ID生成;当前会话消息ID由发布端自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID得到;响应于发布请求中携带的当前会话消息ID小于或等于服务端会话ID中的服务端会话消息确认ID,向发布端返回发布请求重复,其中,服务端会话消息确认ID为存储上一次发布请求所携带的业务数据时自增的服务端会话消息确认ID。
在一些实施例中,方法还包括以下至少一项:响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID但小于或等于服务端会话ID中的服务端会话消息ID,向发布端返回发布请求重复;或响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID且大于服务端会话ID中的服务端会话消息ID,自增服务端会话消息ID,存储发布请求所携带的业务数据,并自增服务端会话消息确认ID,向发布端返回对发布请求的响应,对发布请求的响应携带服务端会话消息确认ID。
在一些实施例中,方法还包括:接收连接请求,连接请求包括会话ID;响应于连接请求的会话ID与已经连接的发布端的会话ID不重复,将携带服务端会话消息确认ID的对连接请求的响应发送至发布端,以便发布端在向服务端发送发布请求时,过滤掉发布请求中当前会话消息ID小于对连接请求的响应中的服务端会话消息确认ID的发布请求。
在一些实施例中,方法还包括:响应于连接请求的会话ID与已经连接的发布端的会话ID重复,向发布端返回发布端重复。
在一些实施例中,方法还包括:响应于群组监测到节点发生故障,将最后的服务端会话消息确认ID上传至分布式应用程序协调服务;管理者响应于经由分布式应用程序协调服务监测到群组中的节点发生故障,基于各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从分布式应用程序协调服务获取最后的服务端会话消息确认ID,以便迁移后的数据管道所在的群组的主节点接收发布端发送的连接请求。
在一些实施例中,方法还包括:群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理者发起对新的处于发布状态的数据容器的迁移请求;管理者根据各个群组的资源占用状态,为新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节点发送连接请求,以便发布端向确定的新的群组的主节点发送连接请求;或管理者根据服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中,以便发布端向处于发布状态的数据容器迁移后的群组的主节点发送连接请求。
第二方面,本公开实施例提供了一种数据去重方法,包括:响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID;基于业务数据和当前会话消息ID,生成发布请求,向服务端发送发布请求,以便服务端响应于接收发布请求且发布请求中携带的当前会话消息ID小于或等于服务端会话ID中的服务端会话消息确认ID,返回发布请求重复。
在一些实施例中,基于业务数据和当前会话消息ID,生成发布请求,向服务端发送发布请求进一步以便服务端进一步执行以下任意一项:响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID但小于或等于服务端会话ID中的服务端会话消息ID,向发布端返回发布请求重复;或响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID且大于服务端会话ID中的服务端会话消息ID,自增服务端会话消息ID,存储发布请求所携带的业务数据,并自增服务端会话消息确认ID,向发布端返回对发布请求的响应,对发布请求的响应携带服务端会话消息确认ID。
在一些实施例中,方法还包括:向服务端发送连接请求,连接请求包括会话ID;接收服务端响应于连接请求的会话ID与已经连接的发布端的会话ID不重复返回的对连接请求的响应,对连接请求的响应携带服务端会话消息确认ID;在向服务端发送发布请求时,过滤掉发布请求中当前会话消息ID小于对连接请求的响应中的服务端会话消息确认ID的发布请求。
在一些实施例中,方法还包括:响应于经由分布式应用程序协调服务监测到服务端中的节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
在一些实施例中,方法还包括:响应于服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向新的主节点发送连接请求:服务端中的群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理者发起对新的处于发布状态的数据容器的迁移请求;管理者根据各个群组的资源占用状态,为新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节点发送连接请求;或服务端的管理者根据服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
在一些实施例中,请求进度还包括:输入的业务数据相对于上一次发布的业务数据的偏移量;方法还包括:响应于输入的业务数据指示发布至多条数据管道,获取各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布业务数据。
第三方面,本公开实施例提供了一种数据去重方法,包括:发布端响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID;基于业务数据和当前会话消息ID,生成发布请求,向服务端发送发布请求;服务端响应于接收发布请求且发布请求中携带的当前会话消息ID小于或等于服务端会话消息确认ID,向发布端返回发布请求重复。
在一些实施例中,方法还包括以下至少一项:服务端响应于发布请求中携带的当前会话消息ID大于服务端会话ID中的服务端会话消息确认ID但小于或等于服务端会话ID中的服务端会话消息ID,向发布端返回发布请求重复;或服务端响应于发布请求中携带的当前会话消息ID大于服务端会话ID中的服务端会话消息确认ID且大于服务端会话ID中的服务端会话消息ID,自增服务端会话消息ID,存储发布请求所携带的业务数据,并自增服务端会话消息确认ID,向发布端返回对发布请求的响应,对发布请求的响应携带服务端会话消息确认ID。
在一些实施例中,方法还包括:发布端向服务端发送连接请求,连接请求包括会话ID;服务端接收连接请求,响应于连接请求的会话ID与已经连接的发布端的会话ID不重复,将携带服务端会话消息确认ID的对连接请求的响应发送至发布端;发布端在向服务端发送发布请求时,过滤掉发布请求中当前会话消息ID小于对连接请求的响应中的服务端会话消息确认ID的发布请求。
在一些实施例中,方法还包括:服务端响应于连接请求的会话ID与已经连接的发布端的会话ID重复,向发布端返回发布端重复。
在一些实施例中,方法还包括:服务端的群组响应于监测到节点发生故障,将最后的服务端会话消息确认ID上传至分布式应用程序协调服务;服务端的管理者响应于经由分布式应用程序协调服务监测到服务端中的群组中的节点发生故障,基于服务端中各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从分布式应用程序协调服务获取最后的服务端会话消息确认ID;发布端响应于经由分布式应用程序协调服务监测到节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
在一些实施例中,方法还包括:发布端响应于服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向新的主节点发送连接请求:服务端中的群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向服务端的管理者发起对新的处于发布状态的数据容器的迁移请求;管理者根据服务端中各个群组的资源占用状态,为新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节点发送连接请求;或服务端的管理者根据服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
在一些实施例中,方法还包括:响应于输入的业务数据指示发布至多条数据管道,获取多条数据管道中各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布业务数据;以及在多条数据管道中各个数据管道的请求进度中,记录输入的业务数据相对于上一次发布的业务数据的偏移量。
第四方面,本公开实施例提供了一种数据去重装置,包括:发布请求接收单元,被配置成接收发布请求;其中,发布请求由发布端基于业务数据和当前会话消息ID生成;当前会话消息ID由发布端自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID得到;发布请求响应单元,被配置成响应于发布请求中携带的当前会话消息ID小于或等于服务端会话ID中的服务端会话消息确认ID,向发布端返回发布请求重复,其中,服务端会话消息确认ID为存储上一次发布请求所携带的业务数据时自增的服务端会话消息确认ID。
在一些实施例中,发布请求响应单元进一步被配置成以下至少一项:响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID但小于或等于服务端会话ID中的服务端会话消息ID,向发布端返回发布请求重复;或响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID且大于服务端会话ID中的服务端会话消息ID,自增服务端会话消息ID,存储发布请求所携带的业务数据,并自增服务端会话消息确认ID,向发布端返回对发布请求的响应,对发布请求的响应携带服务端会话消息确认ID。
在一些实施例中,装置还包括:连接请求接收单元,被配置成接收连接请求,连接请求包括会话ID;连接请求响应单元,被配置成响应于连接请求的会话ID与已经连接的发布端的会话ID不重复,将携带服务端会话消息确认ID的对连接请求的响应发送至发布端,以便发布端在向服务端发送发布请求时,过滤掉发布请求中当前会话消息ID小于对连接请求的响应中的服务端会话消息确认ID的发布请求。
在一些实施例中,连接请求响应单元进一步被配置成:响应于连接请求的会话ID与已经连接的发布端的会话ID重复,向发布端返回发布端重复。
在一些实施例中,装置还包括:确认ID上传单元,被配置成响应于群组监测到节点发生故障,将最后的服务端会话消息确认ID上传至分布式应用程序协调服务;管理者,被配置成响应于经由分布式应用程序协调服务监测到群组中的节点发生故障,基于各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从分布式应用程序协调服务获取最后的服务端会话消息确认ID,以便迁移后的数据管道所在的群组的主节点接收发布端发送的连接请求。
在一些实施例中,装置还包括:迁移请求发起单元,被配置成群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理者发起对新的处于发布状态的数据容器的迁移请求;管理者根据各个群组的资源占用状态,为新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节点发送连接请求,以便发布端向确定的新的群组的主节点发送连接请求;或管理者进一步被配置成:根据服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中,以便发布端向处于发布状态的数据容器迁移后的群组的主节点发送连接请求。
第五方面,本公开实施例提供了一种数据去重装置,包括:消息ID自增单元,被配置成响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID;发布请求发送单元,被配置成基于业务数据和当前会话消息ID,生成发布请求,向服务端发送发布请求,以便服务端响应于接收发布请求且发布请求中携带的当前会话消息ID小于或等于服务端会话ID中的服务端会话消息确认ID,返回发布请求重复。
在一些实施例中,发布请求发送单元进一步以便服务端进一步执行以下任意一项:响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID但小于或等于服务端会话ID中的服务端会话消息ID,向发布端返回发布请求重复;或响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID且大于服务端会话ID中的服务端会话消息ID,自增服务端会话消息ID,存储发布请求所携带的业务数据,并自增服务端会话消息确认ID,向发布端返回对发布请求的响应,对发布请求的响应携带服务端会话消息确认ID。
在一些实施例中,装置还包括:连接请求发送单元,被配置成向服务端发送连接请求,连接请求包括会话ID;连接响应接收单元,被配置成接收服务端响应于连接请求的会话ID与已经连接的发布端的会话ID不重复返回的对连接请求的响应,对连接请求的响应携带服务端会话消息确认ID;发布请求发送单元进一步被配置成:在向服务端发送发布请求时,过滤掉发布请求中当前会话消息ID小于对连接请求的响应中的服务端会话消息确认ID的发布请求。
在一些实施例中,连接请求发送单元进一步被配置成:响应于经由分布式应用程序协调服务监测到服务端中的节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
在一些实施例中,连接请求发送单元进一步被配置成:响应于服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向新的主节点发送连接请求:服务端中的群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理者发起对新的处于发布状态的数据容器的迁移请求;管理者根据各个群组的资源占用状态,为新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节点发送连接请求;或服务端的管理者根据服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
在一些实施例中,装置还包括:发布管道确定单元,被配置成响应于输入的业务数据指示发布至多条数据管道,获取多条数据管道中各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布业务数据;以及在多条数据管道中各个数据管道的请求进度中,记录输入的业务数据相对于上一次发布的业务数据的偏移量。
第六方面,本公开实施例提供了一种数据去重装置,包括:发布端,被配置成响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID;基于业务数据和当前会话消息ID,生成发布请求,向服务端发送发布请求;服务端,被配置成响应于接收发布请求且发布请求中携带的当前会话消息ID小于或等于服务端会话消息确认ID,向发布端返回发布请求重复。
在一些实施例中,装置还包括以下至少一项:服务端进一步被配置成:响应于发布请求中携带的当前会话消息ID大于服务端会话ID中的服务端会话消息确认ID但小于或等于服务端会话ID中的服务端会话消息ID,向发布端返回发布请求重复;或服务端进一步被配置成:响应于发布请求中携带的当前会话消息ID大于服务端会话ID中的服务端会话消息确认ID且大于服务端会话ID中的服务端会话消息ID,自增服务端会话消息ID,存储发布请求所携带的业务数据,并自增服务端会话消息确认ID,向发布端返回对发布请求的响应,对发布请求的响应携带服务端会话消息确认ID。
在一些实施例中,装置还包括:发布端进一步被配置成:向服务端发送连接请求,连接请求包括会话ID;服务端进一步被配置成:接收连接请求,响应于连接请求的会话ID与已经连接的发布端的会话ID不重复,将携带服务端会话消息确认ID的对连接请求的响应发送至发布端;发布端进一步被配置成:在向服务端发送发布请求时,过滤掉发布请求中当前会话消息ID小于对连接请求的响应中的服务端会话消息确认ID的发布请求。
在一些实施例中,装置还包括:服务端进一步被配置成:响应于连接请求的会话ID与已经连接的发布端的会话ID重复,向发布端返回发布端重复。
在一些实施例中,装置还包括:服务端的群组被配置成:响应于监测到节点发生故障,将最后的服务端会话消息确认ID上传至分布式应用程序协调服务;服务端的管理者被配置成:响应于经由分布式应用程序协调服务监测到服务端中的群组中的节点发生故障,基于服务端中各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从分布式应用程序协调服务获取最后的服务端会话消息确认ID;发布端进一步被配置成:响应于经由分布式应用程序协调服务监测到节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
在一些实施例中,装置还包括:发布端进一步被配置成:响应于服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向新的主节点发送连接请求:服务端中的群组的主节点被配置成:响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向服务端的管理者发起对新的处于发布状态的数据容器的迁移请求;管理者进一步被配置成:根据服务端中各个群组的资源占用状态,为新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点进一步被配置成:将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节;或服务端的管理者进一步被配置成:根据服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
在一些实施例中,装置还包括:发布端进一步被配置成:响应于输入的业务数据指示发布至多条数据管道,获取多条数据管道中各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布业务数据;以及在多条数据管道中各个数据管道的请求进度中,记录输入的业务数据相对于上一次发布的业务数据的偏移量。
第七方面,本公开实施例提供了一种电子设备/终端/服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上任一所述的数据去重方法。
第八方面,本公开实施例提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上任一所述的数据去重方法。
本公开实施例提供的数据去重方法和装置,发布端响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID;之后,发布端基于业务数据和当前会话消息ID,生成发布请求,向服务端发送发布请求;之后,服务端响应于接收发布请求且发布请求中携带的当前会话消息ID小于或等于服务端会话消息确认ID,向发布端返回发布请求重复。在这一过程中,通过采用服务端会话消息确认ID来确认发布端发送的发布请求是否重复,可以防止发布端重复发布业务数据,并且对于重复数据的判断简单且性能较高。
附图说明
通过阅读参照以下附图所作的对非限制性实施例详细描述,本公开的其它特征、目的和优点将会变得更明显:
图1是本公开可以应用于其中的示例性系统架构图;
图2是根据本公开实施例的数据去重方法的一个实施例的流程示意图;
图3是根据本公开实施例的数据去重方法的一个示意性信令图;
图4是根据本公开实施例的数据去重方法的又一个实施例的流程示意图;
图5是本公开的数据去重装置的一个实施例的示例性结构图;
图6是适于用来实现本公开实施例的服务器的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
图1示出了可以应用本公开的数据去重方法或数据去重装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105、106。网络104用以在终端设备101、102、103和服务器105、106之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户110可以使用终端设备101、102、103通过网络104与服务器105、106交互,以发布或订阅消息等。终端设备101、102、103上可以安装上安装有客户端代理(Broker)。
终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture Experts Group Audio LayerIII,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group AudioLayer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105、106可以是提供各种服务的服务器,例如对终端设备101、102、103发布或订阅的消息提供转发功能的后台云端服务器。后台云端服务器可以为分布式消息系统,将从发布终端设备收到的消息转发给订阅终端设备。后台云端服务器还可以具备zookeeper功能,其中,zookeeper是一种分布式的、开放源码的分布式应用程序协调服务。分布式消息队列的Broker之间的会话数据都会同步到zookeeper,zookeeper用于协调Broker之间各种关系,存储一些重要的元数据,并且监控Broker的状态,例如与终端设备断开连接的状态等。
需要说明的是,在实践中,本公开实施例所提供的数据去重方法可以由终端设备101、102、103和/或服务器105、106执行,数据去重装置也可以设置于终端设备101、102、103和/或服务器105、106中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,图2示出了根据本公开的数据去重方法的一个实施例的流程200。该数据去重方法用于包括发布端和服务端的装置,包括以下步骤:
步骤201,发布端响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID。
在本实施例中,发布端连接服务端的过程中会携带唯一标识该发布端的会话ID,服务端经过一系列认证和鉴权后会在内存中保存该会话ID,并回复发布端已连接,之后发布端会持有这个会话ID将数据陆续发送到服务端。
在将数据发送到服务端(也即分布式消息系统)时,可以先将输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID+1,得到指示当前会话消息的编号的当前会话消息ID。
在一个具体的示例中,发布端可以维护包括两个字段的请求进度,这两个字段分别为:未确认ID和已确认ID。其中,未确认ID对应向服务端发送发布请求的会话消息ID;已确认ID对应从服务端返回的会话消息确认ID。
可选地,若发布端已配置检查点,发布端会将请求进度中的未确认ID和已确认ID定时保存为检查点。在下次重新连接时,优先从内存里恢复连接状态。若未能从内存里回复状态,则从该检查点中恢复连接状态。
步骤202,发布端基于业务数据和当前会话消息ID,生成发布请求,向服务端发送发布请求。
在本实施例中,基于步骤201中得到的当前会话消息ID,发布端可以将业务数据和该当前会话消息ID编码至发布请求中,并持有上述的会话ID向服务端发送发布请求。
步骤203,服务端响应于接收发布请求且发布请求中携带的当前会话消息ID小于或等于服务端会话消息确认ID,向发布端返回发布请求重复。
在本实施例中,服务端可以为分布式消息系统集群,包括多个群组。发布端发布的数据会保存在服务端的磁盘上,一般是双副本。服务端在接收发布请求后,由服务端解析所述发布请求。之后,服务端判断发布请求中携带的当前会话消息ID是否小于或等于服务端会话消息确认ID。其中,服务端会话消息确认ID为服务端在确认完成上一次发布请求中业务数据的存储后所更新的会话消息确认ID。
在这里,服务端可以针对各个会话ID,采用服务端会话消息确认ID记录经由该会话ID发布的业务数据的进度。
若当前会话消息ID小于或等于服务端会话消息确认ID,则说明发布请求中的业务数据之前已经发送过且已经被存储至服务端。此时,服务端向发布端返回发布请求重复。
以下以服务端为分布式消息系统、且该分布式消息系统为Bigpipe集群为例,说明该数据去重方法的应用。
Bigpipe是一套分布式消息系统,可以以Topic或Queue模式工作。用户端可将业务产生的事件消息或日志发送到Bigpipe中,由订阅端进行订阅消费,实现业务的解耦。
在Bigpipe中,pipe是一个业务的数据集合,有独立名字和ACL访问控制策略。pipe下面可划分一个或者多个Pipelet。当业务流量上涨时,可以通过增加Pipelet实现扩容。pipe中的数据保留时间是有限的,一般为几个小时到数天。Pipelet是一个Pipe中的独立的数据管道,单个Pipelet内的数据是连续的。用户发送的一条消息会append到一个Pipelet的末尾。
用户发送到Bigpipe的每一条消息都会被赋予一个全局唯一的消息ID(messageID),单个Pipelet内的message ID是顺序递增的。
在用户向Bigpipe开始发布数据的时候,会与Bigpipe服务端broker建立会话(session)连接,客户端通过在SDK中指定session ID来标明该客户端的身份,在c-api(C语言的应用程序接口)中,session ID可能从本地状态文件加载。
在c-api的有进度模式下,当发布端连接成功建立session之后,后续发送的消息会赋予一个唯一的session_message_ID,服务端在处理来自同一个session的发布请求的时候会检查每条消息的session_message_ID,如果一条消息的session_message_ID小于等于服务端当前session中已处理的session_message_ID,服务端将返回重复。
broker是Bigpipe系统的存储服务组件,处理用户的发布订阅请求。用户发布的数据会保存在broker的磁盘上,一般是双副本。一个Bigpipe集群的broker分为多个群组(group),每个group有一主一从,或者一主多从,多个副本之间数据保持强一致。在使用Bigpipe api时用户的发布请求会发送到某一group的主节点。
在本实施例的一些可选实现方式中,上述数据去重方法还包括:服务端可以响应于发布请求中携带的当前会话消息ID大于服务端会话ID中的服务端会话消息确认ID但小于或等于服务端会话ID中的服务端会话消息ID,向发布端返回发布请求重复。
在本实现方式中,服务端可以针对各个会话ID,采用服务端会话消息ID记录经由该会话ID发布的业务数据是否被接收。
若当前会话消息ID大于服务端会话ID中的服务端会话消息确认ID但小于或等于服务端会话ID中的服务端会话消息ID,说明服务端已接收过该发布请求,但服务端目前尚未完成业务数据的存储和确认。此时,服务端可以向发布端返回发布请求重复。
与此同时,服务端可以继续完成对上一次接收的该发布请求的处理,存储上一次接收的该发布请求所携带的业务数据,并将服务端会话消息确认ID+1。之后,服务端可以向发布端返回对上一次接收的该发布请求的响应。其中,对上一次接收的该发布请求的响应中携带服务端会话消息确认ID,以备发布端了解当前已经发布的会话消息。
在本实现方式中,服务端通过当前会话消息ID与服务端会话消息确认ID、服务端会话消息ID的比对,可以确认服务端已接收但未确认发布的发布请求,从而在快速准确的实现对发布请求的发布的同时,防止服务端重复发布业务数据。
备选地或附加地,在本实施例的一些可选实现方式中,服务端可以响应于发布请求中携带的当前会话消息ID大于服务端会话ID中的服务端会话消息确认ID且大于服务端会话ID中的服务端会话消息ID,自增服务端会话消息ID,存储发布请求所携带的业务数据,并自增服务端会话消息确认ID,向发布端返回对发布请求的响应,对发布请求的响应携带服务端会话消息确认ID。
在本实现方式中,服务端可以针对各个会话ID,采用服务端会话消息ID记录经由该会话ID发布的业务数据是否被接收。
若当前会话消息ID大于服务端会话ID中的服务端会话消息确认ID且大于服务端会话ID中的服务端会话消息ID,说明服务端未完成业务数据的存储和确认,也未接收过该发布请求。
此时,服务端可以将服务端会话消息ID+1,存储发布请求所携带的业务数据,并将服务端会话消息确认ID分别+1。之后,服务端可以向发布端返回对发布请求的响应。其中,对发布请求的响应中携带服务端会话消息确认ID,以备发布端了解当前已经发布的会话消息。
在本实现方式中,服务端通过当前会话消息ID与服务端会话消息确认ID、服务端会话消息ID的比对,可以确认服务端未确认发布且未接收过的发布请求,从而在快速准确的实现对发布请求的发布的同时,防止服务端重复发布业务数据。
在上述实施例的一些可选实现方式中,上述的数据去重方法还可以包括:发布端响应于输入的业务数据指示发布至多条数据管道,获取多条数据管道中各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布业务数据,并在多条数据管道中各个数据管道的请求进度中,记录输入的业务数据相对于上一次发布的业务数据的偏移量。
在本实现方式中,发布端在输入的业务数据指示发布至多条数据管道时,可以比较多条数据管道中的请求进度的偏移量,并从具有最小偏移量的数据管道开始发布业务数据,并且将输入的业务数据相对于上一次发布的业务数据的偏移量更新至该多条数据管道中各个数据管道的请求进度中。
在该实现方式中,发布端并且,可以从输入的业务数据所指示的多条数据管道中具有最小偏移量的数据管道开始,根据输入的业务数据所指示的多条数据管道之间的逻辑关系,依次发布业务数据,以确保业务数据发布至该多条数据管道中的每一个数据管道,从而避免业务数据丢失。重启时,可以通过从服务端返回的服务端会话消息确认ID确认已发布成功的业务数据,
以下结合图3,描述本公开的数据去重方法的示例性应用场景。
如图3所示,图3示出了根据本公开的数据去重方法的一个示意性信令图。
如图3所示,数据去重方法300运行于发布端310和服务端320中,可以包括:
在步骤301中,发布端310响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID。
在步骤302中,发布端310基于业务数据和当前会话消息ID,生成发布请求。
在步骤303中,发布端310向服务端发送发布请求。
在步骤304中,服务端320响应于接收发布请求且发布请求中携带的当前会话消息ID小于或等于服务端会话消息确认ID,确定发布请求重复。
在步骤305中,服务端320向发布端返回发布请求重复。
在可选地步骤306中,服务端320响应于发布请求中携带的当前会话消息ID大于服务端会话ID中的服务端会话消息确认ID但小于或等于服务端会话ID中的服务端会话消息ID,确定发布请求重复。
在对应可选步骤306的步骤307中,服务端320向发布端310返回发布请求重复。
在可选地步骤308中,服务端320响应于发布请求中携带的当前会话消息ID大于服务端会话ID中的服务端会话消息确认ID且大于服务端会话ID中的服务端会话消息ID,自增服务端会话消息ID,存储发布请求所携带的业务数据,并自增服务端会话消息确认ID;
在对应可选步骤308的步骤309中,服务端320向发布端返回对发布请求的响应,对发布请求的响应携带服务端会话消息确认ID。
应当理解,上述图3中所示出的数据去重方法的应用场景,仅为对于数据去重方法的示例性描述,并不代表对该方法的限定。例如,上述图3中示出的各个步骤,可以进一步采用更为细节的实现方法。也可以在上述图3的基础上,进一步增加其它用于去重业务数据的步骤。
本公开上述实施例的数据去重方法,发布端可以响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID;之后,发布端可以基于业务数据和当前会话消息ID,生成发布请求,向服务端发送发布请求;之后,服务端响应于接收发布请求且发布请求中携带的当前会话消息ID小于或等于服务端会话消息确认ID,向发布端返回发布请求重复。在这一数据去重方法中,可以通过对比发布请求中携带的当前会话消息ID与服务端会话消息确认ID是否重复,从而确定重复的发布请求,避免重复发布业务数据。
进一步参考图4,图4示出了根据本公开的数据去重方法的又一个实施例的示意性流程图。
如图4所示,本实施例的数据去重方法400,可以包括以下步骤:
步骤401,发布端向服务端发送连接请求,连接请求包括会话ID。
在本实施例中,发布端发送的连接请求中携带唯一标识该发布端的会话ID。
步骤402,服务端接收连接请求,响应于连接请求的会话ID与已经连接的发布端的会话ID不重复,将携带服务端会话消息确认ID的对连接请求的响应发送至发布端。
在本实施例中,服务端在接收连接请求后,将连接请求的会话ID与已经建立连接的发布端的会话ID进行匹配,以判断连接请求的会话ID是否存在于已经建立连接的发布端的会话ID中。
若连接请求的会话ID不存在于已经建立连接的发布端的会话ID中,则连接请求的会话ID与已经连接的发布端的会话ID不重复,服务端确认可以连接,将携带服务端会话消息确认ID的对连接请求的响应发送至发布端。其中,服务端会话消息确认ID指示该会话ID已发布的业务数据的进度。
步骤403,发布端在向服务端发送发布请求时,过滤掉发布请求中当前会话消息ID小于对连接请求的响应中的服务端会话消息确认ID的发布请求。
在本实施例中,发布端在向服务端发送发布请求时,若发布请求中当前会话消息ID小于对连接请求的响应中的服务端会话消息确认ID,则说明该当前会话消息ID所指示的发布请求中的业务数据已被服务端成功发布。此时,发布端可以从发布请求中过滤掉这些当前会话消息ID小于对连接请求的响应中的服务端会话消息确认ID的发布请求,也即过滤掉业务数据已成功发布的发布请求,从而实现在发布端防止重复向服务端发送发布请求。
步骤404,服务端响应于连接请求的会话ID与已经连接的发布端的会话ID重复,向发布端返回发布端重复。
在本实施例中,若连接请求的会话ID存在于已经建立连接的发布端的会话ID中,则连接请求的会话ID与已经连接的发布端的会话ID重复,服务端将发布端重复的消息返回发布端,并过滤掉该连接请求,以实现服务端对与已建立连接的发布端的去重。
仍以Bigpipe为例,在同一时刻,一个会话ID(session ID)只允许一个连接进行发布,在这个连接断开之前,后续使用同一个session ID连接服务端的客户端将收到6006(session冲突)错误。
步骤405,发布端响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID。
在本实施例中,发布端连接服务端的过程中会携带唯一标识该发布端的会话ID,服务端经过一系列认证和鉴权后会在内存中保存该会话ID,并回复发布端已连接,之后发布端会持有这个会话ID将数据陆续发送到服务端。
在将数据发送到服务端时,可以先将输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID+1,得到指示当前会话消息的编号的当前会话消息ID。
步骤406,基于业务数据和当前会话消息ID,生成发布请求,向服务端发送发布请求。
在本实施例中,基于步骤201中得到的当前会话消息ID,发布端可以将业务数据和该当前会话消息ID编码至发布请求中,并持有上述的会话ID向服务端发送发布请求。
步骤407,服务端响应于接收发布请求且发布请求中携带的当前会话消息ID小于或等于服务端会话消息确认ID,向发布端返回发布请求重复。
在本实施例中,服务端接收发布请求后,在服务端解析所述发布请求。之后,服务端判断发布请求中携带的当前会话消息ID是否小于或等于服务端会话消息确认ID。其中,服务端会话消息确认ID为服务端在确认完成上一次发布请求中业务数据的存储后所更新的会话消息确认ID。
在这里,服务端可以针对各个会话ID,采用服务端会话消息确认ID记录经由该会话ID发布的业务数据的进度。
若当前会话消息ID小于或等于服务端会话消息确认ID,则说明发布请求中的业务数据之前已经发送过且已经被存储至服务端。此时,服务端向发布端返回发布请求重复。
本领域技术人员应当理解,上述图4所示的实施例中的步骤405、步骤406和步骤407,分别与上述图2所示的实施例中的步骤201、步骤202和步骤203相对应。因此,上述图2中针对步骤201、202和步骤203所述的特征和操作步骤,同样适用于步骤405、步骤406和步骤407,在此不再赘述。
本公开图4中的实施例中的数据去重方法,在图2中所示的数据去重方法的基础上,增加了服务端对于同一发布端的连接请求的去重,从而提高了数据去重的效率。
在上述实施例的一些可选的实现方式中,上述数据去重方法还包括:服务端的群组响应于监测到节点发生故障,将最后的服务端会话消息确认ID上传至分布式应用程序协调服务;服务端的管理者响应于经由分布式应用程序协调服务监测到服务端中的群组中的节点发生故障,基于服务端中各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从分布式应用程序协调服务获取最后的服务端会话消息确认ID;发布端响应于经由分布式应用程序协调服务监测到节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
在本实现方式中,服务端的群组监测到该群组中的节点发生故障时,可以将最后的服务端会话消息确认ID上传至分布式应用程序协调服务,以便向之后切换后的群组的主节点提供原节点已发布的业务数据的进度。
分布式应用程序协调服务用于对服务端的应用程序提供协调服务。也即,用于协调服务端中各个服务群组之间的各种关系,存储一些重要的元数据,并且监控各个服务群组的状态,例如与终端设备断开连接的状态。
服务端的管理者(例如Bigpipe集群中的master)响应于经由分布式应用程序协调服务监测到服务端中的群组中的节点发生故障,基于服务端中各个群组的资源占用状态,将节点发生故障的群组中的数据管道(例如Pipelet)迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从分布式应用程序协调服务获取之前发生故障的群组上传的最后的服务端会话消息确认ID。这里的接收条件,可以为预先设定的接收条件,例如可以为群组的资源占用状态所指示的群组的剩余资源状态满足被迁移的数据管道的资源需求等。
发布端在由分布式应用程序协调服务监测到节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点之后,向迁移后的数据管道所在的群组的主节点发送连接请求,以继续向服务端发布业务数据。
在上述实施例的一些可选的实现方式中,上述数据去重方法还包括:发布端响应于服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向新的主节点发送连接请求:服务端中的群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向服务端的管理者发起对新的处于发布状态的数据容器的迁移请求;管理者根据服务端中各个群组的资源占用状态,为新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节点发送连接请求;或服务端的管理者根据服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
在本实现方式中,发布端响应于服务端中的群组的主节点基于以下操作已切换为其它群组中的新的主节点,向新的主节点发送连接请求:服务端中的群组的主节点在数据管道中的数据容器(例如Pipelet中的不定长的切块Stripe)存储的数据量等于预设数据阈值时,表明数据容器存储的数据过多,主动触发数据容器的迁移。这里的预设数据阈值是可配置的。
服务端中的群组的主节点在迁移数据容器时,可以将处于发布状态的数据容器标识为迁移状态,并在接收下一个发布请求时,向服务端返回对发布请求的响应为不再接收发布请求,然后向服务端的管理者发起对新的处于发布状态的数据容器的迁移请求。
之后,服务端的管理者可以根据服务端中各个群组的资源占用状态,为新的处于发布状态的数据容器确定其它群组中新的主节点新的群组,并将所确定的新的群组发送给发起迁移请求的主节点。
最后,发起迁移请求的主节点可以将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,以备所确定的新的群组下载被迁移的会话ID和被迁移的会话消息确认ID。并且,发起迁移请求的主节点在上传上述标识进度的数据后,可以将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节点发送连接请求。
仍以Bigpipe集群中的Pipelet为例,每个Pipelet中包括不定数量的stripe。如果预设的数据阈值为20G或者10亿条消息,那么当stripe达到20G大小或者10亿条消息时,stripe主动触发数据容器的迁移。stripe向Master发起迁移请求,Master会根据当前集群的情况选择一个合适的群组执行迁移。
备选地或附加地,发布端响应于服务端中的群组的主节点基于以下操作已切换为其它群组中的新的主节点,向新的主节点发送连接请求:服务端的管理者根据服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
在这里,服务端的管理者会根据服务端中的各个群组的资源占用状态,采取负载均衡,将负载较高的群组中的数据管道中处于发布状态的数据容器迁移到负载较低的群组中。
在这一过程中,为了各个群组的负载均衡,当前负载较高的群组中的数据管道中处于发布状态的数据容器的也可以被切分,关闭处于发布状态的数据容器,生成新的处于发布状态的数据容器,并将新的处于发布状态的数据容器的迁移至负载较低的群组中。
本实现方式中的数据去重方法,发布端可以响应于服务端中的群组的主节点已切换为其它群组中的新的主节点,向新的主节点发送连接请求,从而避免了业务数据重复发送至切换前的群组的主节点,提高了防止数据重复的效率。
与上述实施例相对应,本公开的数据去重方法可以用于服务端。该用于服务端的数据去重方法可以包括:接收发布请求;其中,发布请求由发布端基于业务数据和当前会话消息ID生成;当前会话消息ID由发布端自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID得到;响应于发布请求中携带的当前会话消息ID小于或等于服务端会话ID中的服务端会话消息确认ID,向发布端返回发布请求重复,其中,服务端会话消息确认ID为存储上一次发布请求所携带的业务数据时自增的服务端会话消息确认ID。
在本实施例的一些可选实现方式中,方法还包括以下至少一项:响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID但小于或等于服务端会话ID中的服务端会话消息ID,向发布端返回发布请求重复;或响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID且大于服务端会话ID中的服务端会话消息ID,自增服务端会话消息ID,存储发布请求所携带的业务数据,并自增服务端会话消息确认ID,向发布端返回对发布请求的响应,对发布请求的响应携带服务端会话消息确认ID。
在本实施例的一些可选实现方式中,方法还包括:接收连接请求,连接请求包括会话ID;响应于连接请求的会话ID与已经连接的发布端的会话ID不重复,将携带服务端会话消息确认ID的对连接请求的响应发送至发布端,以便发布端在向服务端发送发布请求时,过滤掉发布请求中当前会话消息ID小于对连接请求的响应中的服务端会话消息确认ID的发布请求。
在本实施例的一些可选实现方式中,方法还包括:响应于连接请求的会话ID与已经连接的发布端的会话ID重复,向发布端返回发布端重复。
在本实施例的一些可选实现方式中,方法还包括:响应于群组监测到节点发生故障,将最后的服务端会话消息确认ID上传至分布式应用程序协调服务;管理者响应于经由分布式应用程序协调服务监测到群组中的节点发生故障,基于各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从分布式应用程序协调服务获取最后的服务端会话消息确认ID,以便迁移后的数据管道所在的群组的主节点接收发布端发送的连接请求。
在本实施例的一些可选实现方式中,方法还包括:群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理者发起对新的处于发布状态的数据容器的迁移请求;管理者根据各个群组的资源占用状态,为新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节点发送连接请求,以便发布端向确定的新的群组的主节点发送连接请求;或管理者根据服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中,以便发布端向处于发布状态的数据容器迁移后的群组的主节点发送连接请求。
应当理解,用于服务端的数据去重方法中记载的操作和特征与参考图2-图4描述的方法中的服务端执行的操作和特征相对应。由此,上文针对用于包括发布端和服务端的装置的数据去重方法中针对服务端描述的操作和特征同样适用于服务端的数据去重方法中的步骤,在此不再赘述。
与上述实施例相对应,本公开的数据去重方法可以用于发布端。该用于发布端的数据去重方法可以包括:响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID;基于业务数据和当前会话消息ID,生成发布请求,向服务端发送发布请求,以便服务端响应于接收发布请求且发布请求中携带的当前会话消息ID小于或等于服务端会话ID中的服务端会话消息确认ID,返回发布请求重复。
在本实施例的一些可选实现方式中,基于业务数据和当前会话消息ID,生成发布请求,向服务端发送发布请求进一步以便服务端进一步执行以下任意一项:响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID但小于或等于服务端会话ID中的服务端会话消息ID,向发布端返回发布请求重复;或响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID且大于服务端会话ID中的服务端会话消息ID,自增服务端会话消息ID,存储发布请求所携带的业务数据,并自增服务端会话消息确认ID,向发布端返回对发布请求的响应,对发布请求的响应携带服务端会话消息确认ID。
在本实施例的一些可选实现方式中,方法还包括:向服务端发送连接请求,连接请求包括会话ID;接收服务端响应于连接请求的会话ID与已经连接的发布端的会话ID不重复返回的对连接请求的响应,对连接请求的响应携带服务端会话消息确认ID;在向服务端发送发布请求时,过滤掉发布请求中当前会话消息ID小于对连接请求的响应中的服务端会话消息确认ID的发布请求。
在本实施例的一些可选实现方式中,方法还包括:响应于经由分布式应用程序协调服务监测到服务端中的节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
在本实施例的一些可选实现方式中,方法还包括:响应于服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向新的主节点发送连接请求:服务端中的群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理者发起对新的处于发布状态的数据容器的迁移请求;管理者根据各个群组的资源占用状态,为新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节点发送连接请求;或服务端的管理者根据服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
在本实施例的一些可选实现方式中,请求进度还包括:输入的业务数据相对于上一次发布的业务数据的偏移量;方法还包括:响应于输入的业务数据指示发布至多条数据管道,获取各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布业务数据。
应当理解,用于发布端的数据去重方法中记载的操作和特征与参考图2-图4描述的方法中的发布端执行的操作和特征相对应。由此,上文针对用于包括发布端和服务端的装置的数据去重方法中针对发布端描述的操作和特征同样适用于发布端的数据去重方法中的步骤,在此不再赘述。
进一步参考图5,作为对上述各图所示方法的实现,本公开实施例提供了一种数据去重装置的一个实施例,该装置实施例与图2-图4中所示的方法实施例相对应,该装置具体可以应用于包括发布端与服务端的装置中。
如图5所示,本实施例的数据去重装置500可以包括:发布端510,被配置成响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID;基于业务数据和当前会话消息ID,生成发布请求,向服务端发送发布请求;服务端520,被配置成响应于接收发布请求且发布请求中携带的当前会话消息ID小于或等于服务端会话消息确认ID,向发布端返回发布请求重复。
在本实施例的一些可选实现方式中,装置还包括以下至少一项:服务端520进一步被配置成:响应于发布请求中携带的当前会话消息ID大于服务端会话ID中的服务端会话消息确认ID但小于或等于服务端会话ID中的服务端会话消息ID,向发布端返回发布请求重复;或服务端520进一步被配置成:响应于发布请求中携带的当前会话消息ID大于服务端会话ID中的服务端会话消息确认ID且大于服务端会话ID中的服务端会话消息ID,自增服务端会话消息ID,存储发布请求所携带的业务数据,并自增服务端会话消息确认ID,向发布端返回对发布请求的响应,对发布请求的响应携带服务端会话消息确认ID。
在本实施例的一些可选实现方式中,装置还包括:发布端510进一步被配置成:向服务端发送连接请求,连接请求包括会话ID;服务端520进一步被配置成:接收连接请求,响应于连接请求的会话ID与已经连接的发布端的会话ID不重复,将携带服务端会话消息确认ID的对连接请求的响应发送至发布端;发布端510进一步被配置成:在向服务端发送发布请求时,过滤掉发布请求中当前会话消息ID小于对连接请求的响应中的服务端会话消息确认ID的发布请求。
在本实施例的一些可选实现方式中,装置还包括:服务端520进一步被配置成:响应于连接请求的会话ID与已经连接的发布端的会话ID重复,向发布端返回发布端重复。
在本实施例的一些可选实现方式中,装置还包括:服务端520的群组被配置成:响应于监测到节点发生故障,将最后的服务端会话消息确认ID上传至分布式应用程序协调服务;服务端520的管理者被配置成:响应于经由分布式应用程序协调服务监测到服务端中的群组中的节点发生故障,基于服务端中各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从分布式应用程序协调服务获取最后的服务端会话消息确认ID;发布端510进一步被配置成:响应于经由分布式应用程序协调服务监测到节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
在本实施例的一些可选实现方式中,装置还包括:发布端510进一步被配置成:响应于服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向新的主节点发送连接请求:服务端520中的群组的主节点被配置成:响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向服务端的管理者发起对新的处于发布状态的数据容器的迁移请求;管理者进一步被配置成:根据服务端中各个群组的资源占用状态,为新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点进一步被配置成:将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节;或服务端520的管理者进一步被配置成:根据服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
在本实施例的一些可选实现方式中,装置还包括:发布端510进一步被配置成:响应于输入的业务数据指示发布至多条数据管道,获取多条数据管道中各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布业务数据;以及在多条数据管道中各个数据管道的请求进度中,记录输入的业务数据相对于上一次发布的业务数据的偏移量。
应当理解,装置500中记载的发布端和服务端与参考图2-图4描述的方法中针对发布端和服务端的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于装置500及其中包含的发布端和服务端,在此不再赘述。
与上述实施例相对应,本公开的数据去重装置可以用于服务端。该用于服务端的数据去重装置可以包括:发布请求接收单元,被配置成接收发布请求;其中,发布请求由发布端基于业务数据和当前会话消息ID生成;当前会话消息ID由发布端自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID得到;发布请求响应单元,被配置成响应于发布请求中携带的当前会话消息ID小于或等于服务端会话ID中的服务端会话消息确认ID,向发布端返回发布请求重复,其中,服务端会话消息确认ID为存储上一次发布请求所携带的业务数据时自增的服务端会话消息确认ID。
在本实施例的一些可选实现方式中,发布请求响应单元进一步被配置成以下至少一项:响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID但小于或等于服务端会话ID中的服务端会话消息ID,向发布端返回发布请求重复;或响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID且大于服务端会话ID中的服务端会话消息ID,自增服务端会话消息ID,存储发布请求所携带的业务数据,并自增服务端会话消息确认ID,向发布端返回对发布请求的响应,对发布请求的响应携带服务端会话消息确认ID。
在本实施例的一些可选实现方式中,装置还包括:连接请求接收单元,被配置成接收连接请求,连接请求包括会话ID;连接请求响应单元,被配置成响应于连接请求的会话ID与已经连接的发布端的会话ID不重复,将携带服务端会话消息确认ID的对连接请求的响应发送至发布端,以便发布端在向服务端发送发布请求时,过滤掉发布请求中当前会话消息ID小于对连接请求的响应中的服务端会话消息确认ID的发布请求。
在本实施例的一些可选实现方式中,连接请求响应单元进一步被配置成:响应于连接请求的会话ID与已经连接的发布端的会话ID重复,向发布端返回发布端重复。
在本实施例的一些可选实现方式中,装置还包括:确认ID上传单元,被配置成响应于群组监测到节点发生故障,将最后的服务端会话消息确认ID上传至分布式应用程序协调服务;管理者,被配置成响应于经由分布式应用程序协调服务监测到群组中的节点发生故障,基于各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从分布式应用程序协调服务获取最后的服务端会话消息确认ID,以便迁移后的数据管道所在的群组的主节点接收发布端发送的连接请求。
在本实施例的一些可选实现方式中,装置还包括:迁移请求发起单元,被配置成群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理者发起对新的处于发布状态的数据容器的迁移请求;管理者根据各个群组的资源占用状态,为新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节点发送连接请求,以便发布端向确定的新的群组的主节点发送连接请求;或管理者进一步被配置成:根据服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中,以便发布端向处于发布状态的数据容器迁移后的群组的主节点发送连接请求。
应当理解,用于服务端的数据去重装置中记载的操作和特征与参考图2-图4描述的方法中的服务端执行的操作和特征相对应。由此,上文针对用于包括发布端和服务端的装置的数据去重方法中针对服务端描述的操作和特征同样适用于服务端的数据去重装置中的步骤,在此不再赘述。
与上述实施例相对应,本公开的数据去重装置可以用于发布端。该用于发布端的数据去重装置可以包括:消息ID自增单元,被配置成响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID;发布请求发送单元,被配置成基于业务数据和当前会话消息ID,生成发布请求,向服务端发送发布请求,以便服务端响应于接收发布请求且发布请求中携带的当前会话消息ID小于或等于服务端会话ID中的服务端会话消息确认ID,返回发布请求重复。
在本实施例的一些可选实现方式中,发布请求发送单元进一步以便服务端进一步执行以下任意一项:响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID但小于或等于服务端会话ID中的服务端会话消息ID,向发布端返回发布请求重复;或响应于发布请求中携带的当前会话消息ID大于服务端会话消息确认ID且大于服务端会话ID中的服务端会话消息ID,自增服务端会话消息ID,存储发布请求所携带的业务数据,并自增服务端会话消息确认ID,向发布端返回对发布请求的响应,对发布请求的响应携带服务端会话消息确认ID。
在本实施例的一些可选实现方式中,装置还包括:连接请求发送单元,被配置成向服务端发送连接请求,连接请求包括会话ID;连接响应接收单元,被配置成接收服务端响应于连接请求的会话ID与已经连接的发布端的会话ID不重复返回的对连接请求的响应,对连接请求的响应携带服务端会话消息确认ID;发布请求发送单元进一步被配置成:在向服务端发送发布请求时,过滤掉发布请求中当前会话消息ID小于对连接请求的响应中的服务端会话消息确认ID的发布请求。
在本实施例的一些可选实现方式中,连接请求发送单元进一步被配置成:响应于经由分布式应用程序协调服务监测到服务端中的节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
在本实施例的一些可选实现方式中,连接请求发送单元进一步被配置成:响应于服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向新的主节点发送连接请求:服务端中的群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理者发起对新的处于发布状态的数据容器的迁移请求;管理者根据各个群组的资源占用状态,为新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节点发送连接请求;或服务端的管理者根据服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
在本实施例的一些可选实现方式中,装置还包括:发布管道确定单元,被配置成响应于输入的业务数据指示发布至多条数据管道,获取多条数据管道中各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布业务数据;以及在多条数据管道中各个数据管道的请求进度中,记录输入的业务数据相对于上一次发布的业务数据的偏移量。
应当理解,用于发布端的数据去重装置中记载的操作和特征与参考图2-图4描述的方法中的发布端执行的操作和特征相对应。由此,上文针对用于包括发布端和服务端的装置的数据去重方法中针对发布端描述的操作和特征同样适用于发布端的数据去重装置中的单元,在此不再赘述。
下面参考图6,其示出了适于用来实现本公开的实施例的电子设备(例如图1中的服务器或终端设备)600的结构示意图。本公开的实施例中的终端设备可以包括但不限于诸如笔记本电脑、台式计算机等。图6示出的终端设备/服务器仅仅是一个示例,不应对本公开的实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。图6中示出的每个方框可以代表一个装置,也可以根据需要代表多个装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开的实施例的方法中限定的上述功能。需要说明的是,本公开的实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收发布请求;其中,发布请求由发布端基于业务数据和当前会话消息ID生成;当前会话消息ID由发布端自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID得到;响应于发布请求中携带的当前会话消息ID小于或等于服务端会话ID中的服务端会话消息确认ID,向发布端返回发布请求重复,其中,服务端会话消息确认ID为存储上一次发布请求所携带的业务数据时自增的服务端会话消息确认ID。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括发布请求接收单元和发布请求响应单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,发布请求接收单元还可以被描述为“接收发布请求的单元”。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (58)

1.一种数据去重方法,包括:
接收发布请求;其中,所述发布请求由发布端基于业务数据和当前会话消息ID生成;所述当前会话消息ID由所述发布端自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID得到;
响应于所述发布请求中携带的当前会话消息ID小于或等于服务端会话ID中的服务端会话消息确认ID,向所述发布端返回所述发布请求重复,其中,所述服务端会话消息确认ID为上一次发布请求所携带的会话消息ID大于自增之前的、服务端会话ID中的服务端会话消息确认ID,且存储上一次发布请求所携带的业务数据时自增的服务端会话消息确认ID。
2.根据权利要求1所述的方法,其中,所述方法还包括以下至少一项:
响应于所述发布请求中携带的当前会话消息ID大于所述服务端会话消息确认ID但小于或等于所述服务端会话ID中的服务端会话消息ID,向所述发布端返回所述发布请求重复,其中,所述服务端会话消息ID用于表征所述服务端是否接收所述发布请求,所述服务端会话消息确认ID用于表征所述服务端是否确认接收所述业务数据;或
响应于所述发布请求中携带的当前会话消息ID大于所述服务端会话消息确认ID且大于所述服务端会话ID中的服务端会话消息ID,自增所述服务端会话消息ID,存储所述发布请求所携带的所述业务数据,并自增所述服务端会话消息确认ID,向所述发布端返回对所述发布请求的响应,所述对所述发布请求的响应携带所述服务端会话消息确认ID。
3.根据权利要求1或2所述的方法,其中,所述方法还包括:
接收连接请求,所述连接请求包括会话ID;
响应于所述连接请求的会话ID与已经连接的发布端的会话ID不重复,将携带所述服务端会话消息确认ID的对所述连接请求的响应发送至所述发布端,以便所述发布端在向服务端发送所述发布请求时,过滤掉所述发布请求中当前会话消息ID小于对所述连接请求的响应中的所述服务端会话消息确认ID的发布请求。
4.根据权利要求3所述的方法,其中,所述方法还包括:响应于所述连接请求的会话ID与已经连接的发布端的会话ID重复,向所述发布端返回发布端重复。
5.根据权利要求1或2所述的方法,其中,所述方法还包括:
响应于群组监测到节点发生故障,将最后的服务端会话消息确认ID上传至分布式应用程序协调服务;
管理装置响应于经由所述分布式应用程序协调服务监测到群组中的节点发生故障,基于各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从所述分布式应用程序协调服务获取所述最后的服务端会话消息确认ID,以便所述迁移后的数据管道所在的群组的主节点接收所述发布端发送的连接请求。
6.根据权利要求4所述的方法,其中,所述方法还包括:
响应于群组监测到节点发生故障,将最后的服务端会话消息确认ID上传至分布式应用程序协调服务;
管理装置响应于经由所述分布式应用程序协调服务监测到群组中的节点发生故障,基于各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从所述分布式应用程序协调服务获取所述最后的服务端会话消息确认ID,以便所述迁移后的数据管道所在的群组的主节点接收所述发布端发送的连接请求。
7.根据权利要求1或2所述的方法,其中,所述方法还包括:
群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理装置发起对新的处于发布状态的数据容器的迁移请求;所述管理装置根据各个群组的资源占用状态,为所述新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便所述发布端向确定的新的群组的主节点发送连接请求;或
管理装置根据所述服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中,以便所述发布端向处于发布状态的数据容器迁移后的群组的主节点发送所述连接请求。
8.根据权利要求4或6所述的方法,其中,所述方法还包括:
群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理装置发起对新的处于发布状态的数据容器的迁移请求;所述管理装置根据各个群组的资源占用状态,为所述新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便所述发布端向确定的新的群组的主节点发送连接请求;或
管理装置根据所述服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中,以便所述发布端向处于发布状态的数据容器迁移后的群组的主节点发送所述连接请求。
9.一种数据去重方法,包括:
响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID;
基于所述业务数据和所述当前会话消息ID,生成发布请求,向服务端发送所述发布请求,以便所述服务端响应于接收所述发布请求且所述发布请求中携带的当前会话消息ID小于或等于服务端会话ID中的服务端会话消息确认ID,返回所述发布请求重复,其中,所述服务端会话消息确认ID为所述服务端在确认完成上一次发布请求中业务数据的存储后自增的会话消息确认ID。
10.根据权利要求9所述的方法,其中,所述基于所述业务数据和所述当前会话消息ID,生成发布请求,向服务端发送所述发布请求进一步以便所述服务端进一步执行以下任意一项:
响应于所述发布请求中携带的当前会话消息ID大于所述服务端会话消息确认ID但小于或等于所述服务端会话ID中的服务端会话消息ID,向发布端返回所述发布请求重复,其中,所述服务端会话消息ID用于表征所述服务端是否接收所述发布请求,所述服务端会话消息确认ID用于表征所述服务端是否确认接收所述业务数据;或
响应于所述发布请求中携带的当前会话消息ID大于所述服务端会话消息确认ID且大于所述服务端会话ID中的服务端会话消息ID,自增所述服务端会话消息ID,存储所述发布请求所携带的所述业务数据,并自增所述服务端会话消息确认ID,向所述发布端返回对所述发布请求的响应,所述对所述发布请求的响应携带所述服务端会话消息确认ID。
11.根据权利要求9或10所述的方法,其中,所述方法还包括:
向所述服务端发送连接请求,所述连接请求包括会话ID;
接收所述服务端响应于所述连接请求的会话ID与已经连接的发布端的会话ID不重复返回的对所述连接请求的响应,所述对所述连接请求的响应携带所述服务端会话消息确认ID;
在向服务端发送所述发布请求时,过滤掉所述发布请求中当前会话消息ID小于对所述连接请求的响应中的所述服务端会话消息确认ID的发布请求。
12.根据权利要求9或10所述的方法,其中,所述方法还包括:
响应于经由分布式应用程序协调服务监测到所述服务端中的节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
13.根据权利要求11所述的方法,其中,所述方法还包括:
响应于经由分布式应用程序协调服务监测到所述服务端中的节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
14.根据权利要求9或10所述的方法,其中,所述方法还包括:
响应于所述服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向所述新的主节点发送连接请求:
所述服务端中的群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,关闭处于发布状态的数据容器,生成新的处于发布状态的数据容器,向管理装置发起对所述新的处于发布状态的数据容器的迁移请求;所述管理装置根据各个群组的资源占用状态,为所述新的处于发布状态的数据容器确定其它群组中新的主节点将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理装置发起对新的处于发布状态的数据容器的迁移请求;所述管理装置根据各个群组的资源占用状态,为所述新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节点发送所述连接请求;或
所述服务端的管理装置根据所述服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
15.根据权利要求13所述的方法,其中,所述方法还包括:
响应于所述服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向所述新的主节点发送连接请求:
所述服务端中的群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,关闭处于发布状态的数据容器,生成新的处于发布状态的数据容器,向管理装置发起对所述新的处于发布状态的数据容器的迁移请求;所述管理装置根据各个群组的资源占用状态,为所述新的处于发布状态的数据容器确定其它群组中新的主节点将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理装置发起对新的处于发布状态的数据容器的迁移请求;所述管理装置根据各个群组的资源占用状态,为所述新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便所述发布端向确定的新的群组的主节点发送所述连接请求;或
所述服务端的管理装置根据所述服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
16.根据权利要求9或10所述的方法,其中,所述请求进度还包括:所述输入的业务数据相对于上一次发布的业务数据的偏移量;
所述方法还包括:响应于输入的业务数据指示发布至多条数据管道,获取各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布所述业务数据。
17.根据权利要求13或15所述的方法,其中,所述请求进度还包括:所述输入的业务数据相对于上一次发布的业务数据的偏移量;
所述方法还包括:响应于输入的业务数据指示发布至多条数据管道,获取各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布所述业务数据。
18.一种数据去重方法,包括:
发布端响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID;基于所述业务数据和所述当前会话消息ID,生成发布请求,向服务端发送所述发布请求;
所述服务端响应于接收所述发布请求且所述发布请求中携带的当前会话消息ID小于或等于服务端会话消息确认ID,向所述发布端返回所述发布请求重复,其中,所述服务端会话消息确认ID为所述服务端在确认完成上一次发布请求中业务数据的存储后自增的会话消息确认ID。
19.根据权利要求18所述的方法,其中,所述方法还包括以下至少一项:
所述服务端响应于所述发布请求中携带的当前会话消息ID大于所述服务端会话ID中的服务端会话消息确认ID但小于或等于所述服务端会话ID中的服务端会话消息ID,向所述发布端返回所述发布请求重复,其中,所述服务端会话消息ID用于表征所述服务端是否接收所述发布请求,所述服务端会话消息确认ID用于表征所述服务端是否确认接收所述业务数据;或
所述服务端响应于所述发布请求中携带的当前会话消息ID大于所述服务端会话ID中的服务端会话消息确认ID且大于所述服务端会话ID中的服务端会话消息ID,自增所述服务端会话消息ID,存储所述发布请求所携带的所述业务数据,并自增所述服务端会话消息确认ID,向所述发布端返回对所述发布请求的响应,所述对所述发布请求的响应携带所述服务端会话消息确认ID。
20.根据权利要求18或19所述的方法,其中,所述方法还包括:
所述发布端向所述服务端发送连接请求,所述连接请求包括会话ID;
所述服务端接收所述连接请求,响应于所述连接请求的会话ID与已经连接的发布端的会话ID不重复,将携带所述服务端会话消息确认ID的对所述连接请求的响应发送至所述发布端;
所述发布端在向服务端发送所述发布请求时,过滤掉所述发布请求中当前会话消息ID小于对所述连接请求的响应中的所述服务端会话消息确认ID的发布请求。
21.根据权利要求20所述的方法,其中,所述方法还包括:
所述服务端响应于所述连接请求的会话ID与已经连接的发布端的会话ID重复,向所述发布端返回发布端重复。
22.根据权利要求18或19所述的方法,其中,所述方法还包括:
所述服务端的群组响应于监测到节点发生故障,将最后的所述服务端会话消息确认ID上传至分布式应用程序协调服务;
所述服务端的管理装置响应于经由所述分布式应用程序协调服务监测到所述服务端中的群组中的节点发生故障,基于所述服务端中各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从所述分布式应用程序协调服务获取所述最后的所述服务端会话消息确认ID;
所述发布端响应于经由所述分布式应用程序协调服务监测到节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
23.根据权利要求21所述的方法,其中,所述方法还包括:
所述服务端的群组响应于监测到节点发生故障,将最后的所述服务端会话消息确认ID上传至分布式应用程序协调服务;
所述服务端的管理装置响应于经由所述分布式应用程序协调服务监测到所述服务端中的群组中的节点发生故障,基于所述服务端中各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从所述分布式应用程序协调服务获取所述最后的所述服务端会话消息确认ID;
所述发布端响应于经由所述分布式应用程序协调服务监测到节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
24.根据权利要求18或19所述的方法,其中,所述方法还包括:
所述发布端响应于所述服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向所述新的主节点发送连接请求:
所述服务端中的群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向所述服务端的管理装置发起对新的处于发布状态的数据容器的迁移请求;所述管理装置根据所述服务端中各个群组的资源占用状态,为所述新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便所述发布端向确定的新的群组的主节点发送所述连;或
所述服务端的管理装置根据所述服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
25.根据权利要求21或23所述的方法,其中,所述方法还包括:
所述发布端响应于所述服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向所述新的主节点发送连接请求:
所述服务端中的群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向所述服务端的管理装置发起对新的处于发布状态的数据容器的迁移请求;所述管理装置根据所述服务端中各个群组的资源占用状态,为所述新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便所述发布端向确定的新的群组的主节点发送所述连;或
所述服务端的管理装置根据所述服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
26.根据权利要求18或19所述的方法,其中,所述方法还包括:
响应于输入的业务数据指示发布至多条数据管道,获取所述多条数据管道中各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布所述业务数据;以及
在所述多条数据管道中各个数据管道的请求进度中,记录输入的业务数据相对于上一次发布的业务数据的偏移量。
27.根据权利要求21或23所述的方法,其中,所述方法还包括:
响应于输入的业务数据指示发布至多条数据管道,获取所述多条数据管道中各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布所述业务数据;以及
在所述多条数据管道中各个数据管道的请求进度中,记录输入的业务数据相对于上一次发布的业务数据的偏移量。
28.一种数据去重装置,包括:
发布请求接收单元,被配置成接收发布请求;其中,所述发布请求由发布端基于业务数据和当前会话消息ID生成;所述当前会话消息ID由所述发布端自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID得到;
发布请求响应单元,被配置成响应于所述发布请求中携带的当前会话消息ID小于或等于服务端会话ID中的服务端会话消息确认ID,向所述发布端返回所述发布请求重复,其中,所述服务端会话消息确认ID为上一次发布请求所携带的会话消息ID大于自增之前的、服务端会话ID中的服务端会话消息确认ID,且存储上一次发布请求所携带的业务数据时自增的服务端会话消息确认ID。
29.根据权利要求28所述的装置,其中,所述发布请求响应单元进一步被配置成以下至少一项:
响应于所述发布请求中携带的当前会话消息ID大于所述服务端会话消息确认ID但小于或等于所述服务端会话ID中的服务端会话消息ID,向所述发布端返回所述发布请求重复,其中,所述服务端会话消息ID用于表征所述服务端是否接收所述发布请求,所述服务端会话消息确认ID用于表征所述服务端是否确认接收所述业务数据;或
响应于所述发布请求中携带的当前会话消息ID大于所述服务端会话消息确认ID且大于所述服务端会话ID中的服务端会话消息ID,自增所述服务端会话消息ID,存储所述发布请求所携带的所述业务数据,并自增所述服务端会话消息确认ID,向所述发布端返回对所述发布请求的响应,所述对所述发布请求的响应携带所述服务端会话消息确认ID。
30.根据权利要求28或29所述的装置,其中,所述装置还包括:
连接请求接收单元,被配置成接收连接请求,所述连接请求包括会话ID;
连接请求响应单元,被配置成响应于所述连接请求的会话ID与已经连接的发布端的会话ID不重复,将携带所述服务端会话消息确认ID的对所述连接请求的响应发送至所述发布端,以便所述发布端在向服务端发送所述发布请求时,过滤掉所述发布请求中当前会话消息ID小于对所述连接请求的响应中的所述服务端会话消息确认ID的发布请求。
31.根据权利要求30所述的装置,其中,所述连接请求响应单元进一步被配置成:响应于所述连接请求的会话ID与已经连接的发布端的会话ID重复,向所述发布端返回发布端重复。
32.根据权利要求28或29所述的装置,其中,所述装置还包括:
确认ID上传单元,被配置成响应于群组监测到节点发生故障,将最后的服务端会话消息确认ID上传至分布式应用程序协调服务;
管理装置,被配置成响应于经由所述分布式应用程序协调服务监测到群组中的节点发生故障,基于各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从所述分布式应用程序协调服务获取所述最后的服务端会话消息确认ID,以便所述迁移后的数据管道所在的群组的主节点接收所述发布端发送的连接请求。
33.根据权利要求31所述的装置,其中,所述装置还包括:
确认ID上传单元,被配置成响应于群组监测到节点发生故障,将最后的服务端会话消息确认ID上传至分布式应用程序协调服务;
管理装置,被配置成响应于经由所述分布式应用程序协调服务监测到群组中的节点发生故障,基于各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从所述分布式应用程序协调服务获取所述最后的服务端会话消息确认ID,以便所述迁移后的数据管道所在的群组的主节点接收所述发布端发送的连接请求。
34.根据权利要求28或29所述的装置,其中,所述装置还包括:
迁移请求发起单元,被配置成群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理装置发起对新的处于发布状态的数据容器的迁移请求;所述管理装置进一步被配置成:根据各个群组的资源占用状态,为所述新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;所述发起迁移请求的主节点进一步被配置成:将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便所述发布端向确定的新的群组的主节点发送连接请求,以便所述发布端向确定的新的群组的主节点发送所述连接请求;或
所述管理装置进一步被配置成:根据所述服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中,以便所述发布端向处于发布状态的数据容器迁移后的群组的主节点发送所述连接请求。
35.根据权利要求31或33所述的装置,其中,所述装置还包括:
迁移请求发起单元,被配置成群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理装置发起对新的处于发布状态的数据容器的迁移请求;所述管理装置进一步被配置成:根据各个群组的资源占用状态,为所述新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;所述发起迁移请求的主节点进一步被配置成:将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便所述发布端向确定的新的群组的主节点发送连接请求,以便所述发布端向确定的新的群组的主节点发送所述连接请求;或
所述管理装置进一步被配置成:根据所述服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中,以便所述发布端向处于发布状态的数据容器迁移后的群组的主节点发送所述连接请求。
36.一种数据去重装置,包括:
消息ID自增单元,被配置成响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID;
发布请求发送单元,被配置成基于所述业务数据和所述当前会话消息ID,生成发布请求,向服务端发送所述发布请求,以便所述服务端响应于接收所述发布请求且所述发布请求中携带的当前会话消息ID小于或等于服务端会话ID中的服务端会话消息确认ID,返回所述发布请求重复,其中,所述服务端会话消息确认ID为所述服务端在确认完成上一次发布请求中业务数据的存储后自增的会话消息确认ID。
37.根据权利要求36所述的装置,其中,所述服务端进一步执行以下任意一项:
响应于所述发布请求中携带的当前会话消息ID大于所述服务端会话消息确认ID但小于或等于所述服务端会话ID中的服务端会话消息ID,向发布端返回所述发布请求重复,其中,所述服务端会话消息ID用于表征所述服务端是否接收所述发布请求,所述服务端会话消息确认ID用于表征所述服务端是否确认接收所述业务数据;或
响应于所述发布请求中携带的当前会话消息ID大于所述服务端会话消息确认ID且大于所述服务端会话ID中的服务端会话消息ID,自增所述服务端会话消息ID,存储所述发布请求所携带的所述业务数据,并自增所述服务端会话消息确认ID,向所述发布端返回对所述发布请求的响应,所述对所述发布请求的响应携带所述服务端会话消息确认ID。
38.根据权利要求36或37所述的装置,其中,所述装置还包括:
连接请求发送单元,被配置成向所述服务端发送连接请求,所述连接请求包括会话ID;
连接响应接收单元,被配置成接收所述服务端响应于所述连接请求的会话ID与已经连接的发布端的会话ID不重复返回的对所述连接请求的响应,所述对所述连接请求的响应携带所述服务端会话消息确认ID;
所述发布请求发送单元进一步被配置成:在向服务端发送所述发布请求时,过滤掉所述发布请求中当前会话消息ID小于对所述连接请求的响应中的所述服务端会话消息确认ID的发布请求。
39.根据权利要求36或37所述的装置,其中,连接请求发送单元进一步被配置成:
响应于经由分布式应用程序协调服务监测到所述服务端中的节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
40.根据权利要求39所述的装置,其中,所述连接请求发送单元进一步被配置成:
响应于经由分布式应用程序协调服务监测到所述服务端中的节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
41.根据权利要求36或37所述的装置,其中,所述服务端进一步被配置成:响应于所述服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向所述新的主节点发送连接请求:
所述服务端中的群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理装置发起对新的处于发布状态的数据容器的迁移请求;所述管理装置根据各个群组的资源占用状态,为所述新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节点发送所述连接请求;或
所述服务端的管理装置根据所述服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
42.根据权利要求40所述的装置,其中,所述服务端进一步被配置成:响应于所述服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向所述新的主节点发送连接请求:
所述服务端中的群组的主节点响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向管理装置发起对新的处于发布状态的数据容器的迁移请求;所述管理装置根据各个群组的资源占用状态,为所述新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;发起迁移请求的主节点将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便发布端向确定的新的群组的主节点发送所述连接请求;或
所述服务端的管理装置根据所述服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
43.根据权利要求36或37所述的装置,其中,所述装置还包括:
发布管道确定单元,被配置成响应于输入的业务数据指示发布至多条数据管道,获取所述多条数据管道中各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布所述业务数据;以及在所述多条数据管道中各个数据管道的请求进度中,记录输入的业务数据相对于上一次发布的业务数据的偏移量。
44.根据权利要求40或42所述的装置,其中,所述装置还包括:
发布管道确定单元,被配置成响应于输入的业务数据指示发布至多条数据管道,获取所述多条数据管道中各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布所述业务数据;以及在所述多条数据管道中各个数据管道的请求进度中,记录输入的业务数据相对于上一次发布的业务数据的偏移量。
45.一种数据去重系统,包括:
发布端,被配置成响应于获取输入的业务数据,自增输入的业务数据所指示的数据管道的请求进度中所包括的会话消息ID,得到当前会话消息ID;基于所述业务数据和所述当前会话消息ID,生成发布请求,向服务端发送所述发布请求;
所述服务端,被配置成响应于接收所述发布请求且所述发布请求中携带的当前会话消息ID小于或等于服务端会话消息确认ID,向所述发布端返回所述发布请求重复,其中,所述服务端会话消息确认ID为所述服务端在确认完成上一次发布请求中业务数据的存储后自增的会话消息确认ID。
46.根据权利要求45所述的系统,其中,
所述服务端进一步被配置成:响应于所述发布请求中携带的当前会话消息ID大于所述服务端会话ID中的服务端会话消息确认ID但小于或等于所述服务端会话ID中的服务端会话消息ID,向所述发布端返回所述发布请求重复,其中,所述服务端会话消息ID用于表征所述服务端是否接收所述发布请求,所述服务端会话消息确认ID用于表征所述服务端是否确认接收所述业务数据;或
所述服务端进一步被配置成:响应于所述发布请求中携带的当前会话消息ID大于所述服务端会话ID中的服务端会话消息确认ID且大于所述服务端会话ID中的服务端会话消息ID,自增所述服务端会话消息ID,存储所述发布请求所携带的所述业务数据,并自增所述服务端会话消息确认ID,向所述发布端返回对所述发布请求的响应,所述对所述发布请求的响应携带所述服务端会话消息确认ID。
47.根据权利要求45或46所述的系统,其中,
所述发布端进一步被配置成:向所述服务端发送连接请求,所述连接请求包括会话ID;
所述服务端进一步被配置成:接收所述连接请求,响应于所述连接请求的会话ID与已经连接的发布端的会话ID不重复,将携带所述服务端会话消息确认ID的对所述连接请求的响应发送至所述发布端;
所述发布端进一步被配置成:在向服务端发送所述发布请求时,过滤掉所述发布请求中当前会话消息ID小于对所述连接请求的响应中的所述服务端会话消息确认ID的发布请求。
48.根据权利要求47所述的系统,其中,
所述服务端进一步被配置成:响应于连接请求的会话ID与已经连接的发布端的会话ID重复,向所述发布端返回发布端重复。
49.根据权利要求45或46所述的系统,其中,
所述服务端的群组被配置成:响应于监测到节点发生故障,将最后的所述服务端会话消息确认ID上传至分布式应用程序协调服务;
所述服务端的管理装置被配置成:响应于经由所述分布式应用程序协调服务监测到所述服务端中的群组中的节点发生故障,基于所述服务端中各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从所述分布式应用程序协调服务获取所述最后的所述服务端会话消息确认ID;
所述发布端进一步被配置成:响应于经由所述分布式应用程序协调服务监测到节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
50.根据权利要求48所述的系统,其中,
所述服务端的群组被配置成:响应于监测到节点发生故障,将最后的所述服务端会话消息确认ID上传至分布式应用程序协调服务;
所述服务端的管理装置被配置成:响应于经由所述分布式应用程序协调服务监测到所述服务端中的群组中的节点发生故障,基于所述服务端中各个群组的资源占用状态,将节点发生故障的群组中的数据管道迁移至资源占用状态符合接收条件的群组中,并指令迁移后的数据管道所在的群组的主节点从所述分布式应用程序协调服务获取所述最后的所述服务端会话消息确认ID;
所述发布端进一步被配置成:响应于经由所述分布式应用程序协调服务监测到节点发生故障的群组的主节点已切换为迁移后的数据管道所在的群组的主节点,向迁移后的数据管道所在的群组的主节点发送连接请求。
51.根据权利要求45或46所述的系统,其中,
所述发布端进一步被配置成:响应于所述服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向所述新的主节点发送连接请求:
所述服务端中的群组的主节点被配置成:响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向所述服务端的管理装置发起对新的处于发布状态的数据容器的迁移请求;所述管理装置进一步被配置成:根据所述服务端中各个群组的资源占用状态,为所述新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;所述发起迁移请求的主节点进一步被配置成:将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便所述发布端向确定的新的群组的主节点发送所述连接请求;或
所述服务端的管理装置进一步被配置成:根据所述服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
52.根据权利要求48或50所述的系统,其中,
所述发布端进一步被配置成:响应于所述服务端中的群组的主节点基于以下任意一项已切换为其它群组中的新的主节点,向所述新的主节点发送连接请求:
所述服务端中的群组的主节点被配置成:响应于数据管道中的数据容器存储的数据量等于预设数据阈值时,将处于发布状态的数据容器标识为迁移状态,响应于接收下一个发布请求,返回对发布请求的响应为不再接收发布请求,向所述服务端的管理装置发起对新的处于发布状态的数据容器的迁移请求;所述管理装置进一步被配置成:根据所述服务端中各个群组的资源占用状态,为所述新的处于发布状态的数据容器确定新的群组,将所确定的新的群组发送至发起迁移请求的主节点;所述发起迁移请求的主节点进一步被配置成:将所确定的新的群组、被迁移的会话ID和被迁移的会话消息确认ID上传至分布式应用程序协调服务,将标识为迁移状态的容器标识为关闭状态,以便所述发布端向确定的新的群组的主节点发送所述连接请求;或
所述服务端的管理装置进一步被配置成:根据所述服务端中各个群组的资源占用状态,将资源占用状态符合迁移条件的群组中的处于发布状态的数据容器迁移至资源占用状态符合接收条件的群组中。
53.根据权利要求45或46所述的系统,其中,所述发布端进一步被配置成:响应于输入的业务数据指示发布至多条数据管道,获取所述多条数据管道中各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布所述业务数据;以及在所述多条数据管道中各个数据管道的请求进度中,记录输入的业务数据相对于上一次发布的业务数据的偏移量。
54.根据权利要求48或50所述的系统,其中,所述发布端进一步被配置成:响应于输入的业务数据指示发布至多条数据管道,获取所述多条数据管道中各个数据管道的请求进度的偏移量,从具有最小偏移量的数据管道开始发布所述业务数据;以及在所述多条数据管道中各个数据管道的请求进度中,记录输入的业务数据相对于上一次发布的业务数据的偏移量。
55.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-27中任一所述的方法。
56.一种终端,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求9-17中任一所述的方法。
57.一种服务器,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的方法。
58.一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-27中任一所述的方法。
CN201910489938.7A 2019-06-06 2019-06-06 数据去重方法和装置 Active CN110233791B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910489938.7A CN110233791B (zh) 2019-06-06 2019-06-06 数据去重方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910489938.7A CN110233791B (zh) 2019-06-06 2019-06-06 数据去重方法和装置

Publications (2)

Publication Number Publication Date
CN110233791A CN110233791A (zh) 2019-09-13
CN110233791B true CN110233791B (zh) 2022-04-15

Family

ID=67858440

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910489938.7A Active CN110233791B (zh) 2019-06-06 2019-06-06 数据去重方法和装置

Country Status (1)

Country Link
CN (1) CN110233791B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX2022007792A (es) * 2020-02-14 2022-09-27 Ericsson Telefon Ab L M Metodo y entidad de red para publicacion de api de servicio.
CN114465697B (zh) * 2022-04-11 2022-07-19 湖南戎腾网络科技有限公司 一种基于以太网的可靠通信方法、装置及设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103716182B (zh) * 2013-12-12 2016-08-31 中国科学院信息工程研究所 一种面向实时云平台的故障检测与容错方法及系统
CN104092717B (zh) * 2013-12-13 2015-08-12 深圳市腾讯计算机系统有限公司 消息处理方法及系统、消息目的端设备
WO2017213397A1 (ko) * 2016-06-06 2017-12-14 엘지전자(주) 무선 통신 시스템에서 데이터를 송수신하기 위한 방법 및 이를 지원하는 장치
CN108809855A (zh) * 2018-05-24 2018-11-13 北京三快在线科技有限公司 消息管理方法、装置及电子设备
CN108833503B (zh) * 2018-05-29 2021-07-20 华南理工大学 一种基于ZooKeeper的Redis集群方法

Also Published As

Publication number Publication date
CN110233791A (zh) 2019-09-13

Similar Documents

Publication Publication Date Title
KR102004160B1 (ko) 사물인터넷 환경에서 클라이언트 식별자를 이용하여 클라이언트 노드들을 논리적으로 그룹화하는 장치 및 방법
CN107295080B (zh) 应用于分布式服务器集群的数据存储方法和服务器
CN106657314B (zh) 跨数据中心数据同步系统及方法
CN110311983B (zh) 服务请求的处理方法、装置、系统、电子设备及存储介质
KR101871383B1 (ko) 계층적 데이터 구조의 노드 상에서 재귀적 이벤트 리스너를 사용하기 위한 방법 및 시스템
KR101480867B1 (ko) 맵리듀스 연산 가속 시스템 및 방법
CN106209966A (zh) 管控端更新设备状态的方法、服务端的处理方法和装置
CN110233791B (zh) 数据去重方法和装置
CN105808374A (zh) 一种快照处理方法及相关设备
CN111338834B (zh) 数据存储方法和装置
CN110324384B (zh) 数据推送的方法和装置
KR101822401B1 (ko) 공동 편집 문서를 공유하는 방법 및 장치
CN107818027B (zh) 名字节点主备切换的方法、装置和分布式系统
US9137331B2 (en) Adaptive replication
CN104750545A (zh) 一种调度进程的方法及装置
CN111444148B (zh) 基于MapReduce的数据传输方法和装置
CN117118982A (zh) 基于云原生多集群的消息传输方法、装置、介质及设备
CN110677443A (zh) 数据发送和接收方法、发送端、接收端、系统及存储介质
CN111343220B (zh) 转发器、分布式文件传输方法、系统、介质及电子设备
CN109981778B (zh) 内容分发网络的服务实现方法、装置、设备及存储介质
CN109542981B (zh) 一种数据同步的系统及方法、电子设备、存储介质
CN111290873B (zh) 故障处理方法和装置
CN114827171A (zh) 信息同步方法、装置、计算机设备和存储介质
CN110278133B (zh) 由服务器执行的检查方法、装置、计算设备以及介质
CN114461582A (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