CN115729965A - 信息流处理方法、装置、流服务器及存储介质 - Google Patents
信息流处理方法、装置、流服务器及存储介质 Download PDFInfo
- Publication number
- CN115729965A CN115729965A CN202211436757.6A CN202211436757A CN115729965A CN 115729965 A CN115729965 A CN 115729965A CN 202211436757 A CN202211436757 A CN 202211436757A CN 115729965 A CN115729965 A CN 115729965A
- Authority
- CN
- China
- Prior art keywords
- information
- stored
- stream
- flow
- identifier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及数据处理技术领域,提供一种信息流处理方法、装置、流服务器及存储介质,根据多个已存储信息流设置了多个流桶,并根据轮询策略将多个已存储信息流存储至设置的多个流桶,每个流桶中的信息流不重复,体验较好,且横向来看每个流桶里面即有发布时间较新的信息流,也有发布时间较旧的信息流,在接收到客户端的查询请求时,根据流桶的第一标识及已存储信息流的第二标识从多个流桶中拉取与所述查询请求对应的目标信息流,从而保证拉取的信息流不存在重复,且具有实时性。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种信息流处理方法、装置、流服务器及存储介质。
背景技术
Feed流即持续更新并呈现给用户内容的信息流,Feed是一种信息格式,平台通过它将资讯传递给用户。Feed是信息聚合的最小单元,每一条状态或者消息都是Feed,比如朋友圈中的一个动态就是一个Feed,微博中的一条微博就是一个Feed。目前市面上通常使用KEY VALUE数据库、表格、关系型数据库MySQL等存储信息流。
发明人在实现本发明的过程中发现,这些数据库是按照信息流发布的时间顺序存储信息流,并不能直接用来实现为用户提供更好的体验的功能,而开源的文章,视频等信息流都是单一的信息流,导致所有用户看到的内容都一模一样,比较难为每个用户定制化呈现。因此,如果要实现比较丰富的千人千面的信息流逻辑必须自行开发对应的业务逻辑功能,实现起来非常复杂。
发明内容
鉴于以上内容,有必要提出一种信息流处理方法、装置、流服务器及存储介质,能够提高信息流处理的准确度。
本发明的第一方面提供一种信息流处理方法,所述方法包括:
获取多个已存储信息流,并根据所述多个已存储信息流设置多个流桶,每个所述流桶具有第一标识;
根据轮询策略将所述多个已存储信息流存储至所述多个流桶,存储至每个所述流桶中的每个所述信息流具有第二标识;
响应于客户端的查询请求,根据所述第一标识及所述第二标识从所述多个流桶中拉取与所述查询请求对应的目标信息流;
将所述目标信息流返回所述客户端。
根据本发明的一个可选的实施方式,所述根据所述多个已存储信息流设置多个流桶包括:
获取所述多个已存储信息流的数量;
通过预设桶数计算模型基于所述数量计算得到桶数;
根据所述桶数设置多个流桶。
根据本发明的一个可选的实施方式,所述根据轮询策略将所述多个已存储信息流存储至所述多个流桶包括:
获取每个所述已存储信息流的发布时间;
根据所述发布时间将所述多个已存储信息流进行排序;
根据所述多个流桶的桶数设置滑窗;
使用所述滑窗从排序后的已存储信息流中的第一个已存储信息流开始进行无重叠滑动,直至最后一个已存储信息流;
将每次滑窗对应的已存储信息流分发至所述多个流桶中,每个所述流桶每次分发一个所述已存储信息流。
根据本发明的一个可选的实施方式,所述根据所述第一标识及所述第二标识从所述多个流桶中拉取与所述查询请求对应的目标信息流包括:
提取所述查询请求中的设备标识;
从预设记录表中查询与所述设备标识对应的第一标识及第二标识;
根据与所述设备标识对应的第一标识确定拉取的流桶;
从确定拉取的流桶中拉取与所述第二标识对应的目标信息流。
根据本发明的一个可选的实施方式,所述方法还包括:
接收待存储信息流;
对所述待存储信息流按照预设间隔进行等间隔分块得到多个第一块信息流;
根据每个所述第一块信息流的块哈希值得到所述待存储信息流的第一哈希值;
根据所述第一哈希值及哈希表,判断是否对所述待存储信息流进行存储,其中,所述哈希表中包括多个第二哈希值,所述第二哈希值是根据对所述已存储信息流,按照所述预设间隔进行等间隔分块得到的多个第二块信息流的块哈希值得到的;
当确定不对所述待存储信息流进行存储时,删除所述待存储信息流。
根据本发明的一个可选的实施方式,所述根据所述第一哈希值及哈希表,判断是否对所述待存储信息流进行存储包括:
采用预设距离函数基于所述第一哈希值及所述第二哈希值计算得到距离;
对所述距离与预设距离阈值进行比较;
当所述距离小于所述预设距离阈值时,确定对所述待存储信息流进行存储;
当所述距离大于所述预设距离阈值时,确定对所述待存储信息流进行删除。
根据本发明的一个可选的实施方式,在确定对所述待存储信息流进行存储后,所述方法还包括:
获取所述待存储信息流的第一发布时间;
从所述多个已存储信息流的发布时间中确定最接近所述第一发布时间的第二发布时间;
确定在所述第二发布时间发布的已存储信息流存储的目标流桶的第一标识;
将所述待存储信息流存储至与所述目标流桶的第一标识相邻的第一标识对应的流桶。
本发明的第二发明提供一种信息流处理装置,所述装置包括:
设置模块,用于获取多个已存储信息流,并根据所述多个已存储信息流设置多个流桶,每个所述流桶具有第一标识;
存储模块,用于根据轮询策略将所述多个已存储信息流存储至所述多个流桶,存储至每个所述流桶中的每个所述信息流具有第二标识;
拉取模块,用于响应于客户端的查询请求,根据所述第一标识及所述第二标识从所述多个流桶中拉取与所述查询请求对应的目标信息流;
发送模块,用于将所述目标信息流返回所述客户端。
本发明的第三发明提供一种流服务器,所述流服务器包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序时实现所述信息流处理方法。
本发明的第四发明提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述信息流处理方法。
本发明实施方式提供的信息流处理方法、装置、流服务器及存储介质,与传统的信息流处理方法不同,传统的信息流处理方法将所有的信息流存储在同一个流桶,而本发明根据多个已存储信息流设置了多个流桶,并根据轮询策略将多个已存储信息流存储至设置的多个流桶,每个流桶中的信息流不重复,体验较好,且横向来看每个流桶里面即有发布时间较新的信息流,也有发布时间较旧的信息流,在接收到客户端的查询请求时,根据流桶的第一标识及已存储信息流的第二标识从多个流桶中拉取与所述查询请求对应的目标信息流,从而保证拉取的信息流不存在重复,且具有实时性。
另外,如果信息流是实时产生的,那么每个用户获取其中任意一个流桶中的信息流也必然发生变化,让用户有新的体验。即使短期没有产生新的信息流,通过将每个用户拉取的流桶的第一标识和拉取的流桶中的信息流的第二标识进行记录,能够保证为用户下次拉取的信息流不一样,使得信息流的展示不相同。
附图说明
图1是现有技术中信息流的存储的示意图。
图2是本发明实施例一提供的信息流处理方法的流程图。
图3是本发明实施例提供的信息流的存储的示意图。
图4是本发明实施例提供的信息流的流桶编号的示意图。
图5是本发明实施例二提供的信息流处理装置的结构图。
图6是本发明实施例三提供的流服务器的结构示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述在一个可选的实施方式中实施例的目的,不是旨在于限制本发明。
本发明实施例提供的信息流处理方法由流服务器执行,相应地,信息流处理装置运行于流服务器中。
本发明实施例可以基于人工智能技术对症状进行标准化处理。其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
如图1所示,为现有技术中信息流的存储的示意图。
信息发布会产生信息流,内容管理服务侦测到有信息流产生时,将信息流存入存储设备中。当用户通过客户端向流服务器请求拉取信息流时,提供信息流服务的流服务器在存储设备中拉取信息流,并将拉取到的信息流返回给客户端。由于流服务器是按照时间顺序拉取的信息流,因此,在没有新的信息流产生的情况下,流服务器每次拉取的信息流都是固定的,例如,每次都是拉取前K条信息流,导致每个用户在客户端的首页看到的信息流是一样的,因而,信息流的显示较为单一。
现有技术中,流服务器在拉取信息流之前,可以通过使用随机函数对存储设备中的信息流进行随机打乱,来解决流服务器拉取信息流固定导致信息流的显示较为单一的技术问题。但是,如果随机粒度设置的过小,就会出现客户端显示的信息流还是一样,只是一页中信息流显示的顺序不一样。如果随机粒度设置的过大,那么对于用户而言,在分页查询的时候,如果每页总数比较少的情况下,用户就会查询到重复数据。随机粒度是指设置的流服务器从前多少数量的信息流中进行随机拉取。示例性的,假设存储设备中存储有1000条信息流,客户端中每页可显示的信息流的数量为10,即客户端中每页最多能够显示10条信息流,如果粒度设置为5,即每次从这1000条信息流中随机拉取前5条信息流,那么无论怎么随机,每次拉取的都是前5条信息流,只不过每次拉取这前5条信息流的顺序不同,导致客户端的首页每次显示的仍然是这前5条信息流,只不过首页中显示的这前5条信息流的顺序不一样。如果粒度设置为20,即每次随机从这1000条信息流中前20条信息流中进行拉取,例如,第一次随机拉取的是前1至10条信息流,第二次随机拉取的是前3-12条信息流,则第一次拉取的信息流中与第二次拉取的信息流中存在重复的信息流(前3-10条信息流)。
可见,采用随机函数的方式,要么只能改变客户端中信息流的显示顺序,要么导致客户端中显示的信息流存在重复。此外,随机函数的方式无法保证信息流的时效性,因为,随机拉取会存在概率选择的问题,也就是最新的信息流,被拉取的几率是随机的,最新的信息流可能无法被拉取。
针对以上可能出现的问题,本发明实施例提供一种信息流处理方法,通过将产生的信息流进行计算并存储,来保证每次拉取的信息流中既有新产生的信息流,也有历史存储的信息流,从而保证客户端中显示的信息流的多样性和时效性。
实施例一
图2是本发明实施例一提供的信息流处理方法的流程图。所述信息流处理方法具体包括以下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些可以省略。
S21,获取多个已存储信息流,并根据所述多个已存储信息流设置多个流桶,每个所述流桶具有第一标识。
请一并参见图3所示的示意图,本实施例提供的信息流处理方法应用于多个客户端与流服务器构成的环境中,客户端是用户的终端设备,流服务器是提供信息流服务的设备。客户端既可以向流服务器请求信息流,也可以向流服务器发布信息流。流服务器对于客户端上不同的应用程序,流服务器可以认为是提供相应网络服务的后台服务器,例如,本发明实施例中的流服务器可以接收客户端发布的信息流并进行存储,也可以向客户端发送信息流,以供客户端的用户观看。其中,流服务器可以是一台服务器、若干台服务器组成的服务器集群或云计算中心。
客户端发布信息时产生信息流,流服务器接收到客户端发布的信息流时,将信息流存入存储设备中。当用户通过客户端向流服务器请求查询信息流时,提供信息流服务的流服务器在存储设备中拉取信息流,并通过客户端返回给用户。
流服务器从存储设备中获取多个已存储信息流,根据已存储信息流设置多个流桶,流桶可以为列表,或者分区。流服务器在设置完成流桶后,为每个流桶标记第一标识,第一标识用以区分流桶。示例性的,假设流服务器设置了5个流桶,为这5个流桶标记的第一标识分别为ID1、ID2、ID3、ID4及ID5。
在一个可选的实施方式中,所述根据所述多个已存储信息流设置多个流桶包括:
获取所述多个已存储信息流的数量;
通过预设桶数计算模型基于所述数量计算得到桶数;
根据所述桶数设置多个流桶。
其中,已存储信息流的数量是指存储设备中存储的信息流的数量,桶数是指需要设置的流桶的数量。
其中,所述预设桶数计算模型可以是线性函数,线性函数的自变量为已存储信息流的数量,线性函数的因变量为桶数。示例性的,预设桶数计算模型可以为y=ax+b,a和b为常数,x表示已存储信息流的数量,y表示桶数。
上述实施例中,通过预先设置桶数计算模型,能够根据存储设备中存储的信息流的数量确定需要设置的流桶的数量,存储设备中存储的信息流的数量越大,已存储信息流越多,通过桶数计算模型计算得到的桶数越大,需要设置的流桶越多,存储设备中存储的信息流的数量越小,已存储信息流越少,通过桶数计算模型计算得到的桶数越小,需要设置的流桶越少。
S22,根据轮询策略将所述多个已存储信息流存储至所述多个流桶,存储至每个所述流桶中的每个所述信息流具有第二标识。
流服务器设置完多个流桶后,即可将多个已存储信息流存储至多个流桶中,一个已存储信息流对应一个流桶,一个流桶对应多个已存储信息流,每个流桶中的信息流标记有第二标识,第二标识用以区分已存储信息流。
一个可选的实施方式中,第二标识可以包括第一标识。示例性的,假设第一个流桶中有10个已存储信息流,第一个流桶的第一标识为ID1,那么第一个流桶中的这10个已存储信息流的第二标识可以为ID1D1,ID1D2,ID1D3,ID1D4,ID1D5,ID1D6,ID1D7,ID1D8,ID1D9,ID1D10。设置第二标识包括第一标识,当某个已存储信息流损坏,能够快速定位损坏的信息流存储至哪个流桶的哪个位置,方便溯源。
在一个可选的实施方式中,所述根据轮询策略将所述多个已存储信息流存储至所述多个流桶包括:
获取每个所述已存储信息流的发布时间;
根据所述发布时间将所述多个已存储信息流进行排序;
根据所述多个流桶的桶数设置滑窗;
使用所述滑窗从排序后的已存储信息流中的第一个已存储信息流开始进行无重叠滑动,直至最后一个已存储信息流;
将每次滑窗对应的已存储信息流分发至所述多个流桶中,每个所述流桶每次分发一个所述已存储信息流。
其中,已存储信息流的发布时间是指客户端发布信息产生信息流的时间。流服务器接收客户端发布的信息流时,记录所述信息流的发布时间。在一些实施例中,可以认为信息流的发布时间为流服务器接收到客户端发布信息流的接收时间。
流服务器可以将所述多个已存储信息流按照从晚到早的发布时间进行排序,也可以将所述多个已存储信息流按照从早到晚的发布时间进行排序,本发明不做限制。
流服务器设置滑窗的尺寸为流桶的桶数,示例性的,假设流服务器设置的流桶的桶数为5个,则滑窗的尺寸为5,假设流服务器设置的流桶的桶数为10个,则滑窗的尺寸为10。
参阅图4所示,假设流服务器将所述多个已存储信息流按照从早到晚的发布时间进行排序,排在第一个的已存储信息流的发布时间最早,排在最后一个的已存储信息流的发布时间最晚,那么,将35个已存储信息流存储至设置的5个流桶中的过程为:设置滑窗的尺寸为5,第1次滑窗框住第1-5个已存储信息流,这第1-5个已存储信息流分别存储至流桶1-5中,即第1个已存储信息流存储至流桶1中,第2个已存储信息流存储至流桶1中,第3个已存储信息流存储至流桶4中,第5个已存储信息流存储至流桶1中。无重叠滑动滑窗,则第2次滑窗框住第6-10个已存储信息流,这第6-10个已存储信息流再分别存储至流桶1-5中。同样的,第3次滑窗框住第11-15个已存储信息流,这第11-15个已存储信息流再分别存储至流桶11-15中。以此类推。当滑窗滑动至最后一个已存储信息流时,所有的已存储信息流即被存储至多个流桶中。至此,流桶1中存储第1、6、11、16、21、26、31个已存储信息流,流桶2中存储第2、7、12、17、22、27、32个已存储信息流,流桶3中存储第3、8、13、18、23、28、33个已存储信息流,流桶4中存储第4、9、14、19、24、29、34个已存储信息流,流桶5中存储第5、10、15、20、25、30、35个已存储信息流。
应当理解的是,如果流服务器将所述多个已存储信息流按照从晚到早的发布时间进行排序,那么,每个流桶中存储的已存储信息流是按照从晚到早的发布时间进行排序的。如果流服务器将所述多个已存储信息流按照从早到晚的发布时间进行排序,那么,每个流桶中存储的已存储信息流是按照从早到晚的发布时间进行排序的。
上述可选的实施方式,根据流桶的桶数设置滑窗的尺寸,并使用设置的滑窗从排序后的已存储信息流中的第一个已存储信息流开始进行无重叠滑动时,能够保证每次滑动滑窗,滑窗框选的已存储信息流的数量与流桶的桶数相一致,从而将每次滑窗框选的已存储信息流分发至所述多个流桶中,每个所述流桶每次分发一个所述已存储信息流,实现了将多个已存储信息流均匀存储至多个流桶。此外,由于多个已存储信息流按照发布时间进行了排序,则每个流桶中的已存储信息流则完全不同,并且每个流桶中即有发布时间早的已存储信息流,也有发布时间晚的已存储信息流。
S23,响应于客户端的查询请求,根据所述第一标识及所述第二标识从所述多个流桶中拉取与所述查询请求对应的目标信息流。
用户需要查询信息时,通过客户端向流服务器发送查询请求,所述查询请求中可以包括查询关键词、查询信息流的条数、设备标识等。其中,设备标识是指客户端的标识。流服务器响应于客户端的查询请求,可以先生成查询请求对应的结构化查询语言(Structured Query Language,SQL),再根据SQL,在至少一个流桶中查询与所述查询关键词对应的已存储信息流。
其中,本申请实施放肆对于流服务器如何将查询请求转化为对应的SQL不做限制,可以根据实际情况采用合适的方式。
在一个可选的实施方式中,所述根据所述第一标识及所述第二标识从所述多个流桶中拉取与所述查询请求对应的目标信息流包括:
提取所述查询请求中的设备标识;
从预设记录表中查询与所述设备标识对应的第一标识及第二标识;
根据与所述设备标识对应的第一标识确定拉取的流桶;
从确定拉取的流桶中拉取与所述第二标识对应的目标信息流。
流服务器每响应客户端的查询请求,从多个流桶中拉取与所述查询请求对应的目标信息流之后,将目标信息流对应的第一标识和第二标识记录在预先生成的记录表中。记录表中记载了客户端的设备标识、查询关键词、第一标识、第二标识、查询时间等的对应关系。
示例性的,假设从预设记录表中查询到与所述设备标识对应的第一标识为ID2,第二标识为ID2D4,表明流服务器已经从第一标识为ID2的流桶中拉取了多个已存储信息流,具体是从第一标识为ID2的流桶中,从发布时间最晚的信息流拉取至第二标识为ID2D4的已存储信息流。对于该客户端的当前查询请求,流服务器从其他流桶,例如,第一标识为ID1、ID3-ID5的流桶中随机选择一个流桶进行信息流的拉取,假设选择的是第一标识为ID1的流桶,则在第一标识为ID1的流桶中从发布时间最晚的信息流拉取至第二标识为ID1D4的已存储信息流。在其他实施方式中,流服务器还可以按照轮询策略从第一标识为ID1、ID3-ID5的流桶中选择一个流桶进行信息流的拉取。
流服务器从预设记录表中查询到与所述设备标识对应的第一标识及第二标识,能够获知上一次从哪个流桶中拉取了哪些已存储信息流给客户端,如此,当客户端再次请求查询时,便从其他流桶中拉取已存储信息流给客户端,从而保证客户端每次查询到的信息流不同。
S24,将所述目标信息流返回所述客户端。
流服务器将查询到的目标信息流桶过客户端返回给用户。
本发明实施方式提供的信息流处理方法,与传统的信息流处理方法不同,传统的信息流处理方法将所有的信息流存储在同一个流桶,而本发明根据多个已存储信息流设置了多个流桶,并根据轮询策略将多个已存储信息流存储至设置的多个流桶,每个流桶中的信息流不重复,体验较好,且横向来看每个流桶里面即有发布时间较新的信息流,也有发布时间较旧的信息流,在接收到客户端的查询请求时,根据流桶的第一标识及已存储信息流的第二标识从多个流桶中拉取与所述查询请求对应的目标信息流,从而保证拉取的信息流不存在重复,且具有实时性。
另外,如果信息流是实时产生的,那么每个用户获取其中任意一个流桶中的信息流也必然发生变化,让用户有新的体验。即使短期没有产生新的信息流,通过将每个用户拉取的流桶的第一标识和拉取的流桶中的信息流的第二标识进行记录,能够保证为用户下次拉取的信息流不一样,使得信息流的展示不相同。
在一个可选的实施方式中,所述方法还包括:
将所述多个已存储信息流进行备份,并将每个所述已存储信息流对应的所述第一标识及所述第二标识与所述已存储信息流进行关联备份。
流服务器可以将所述多个已存储信息流存储至备份设备,作为备份信息流,备份设备可以是关系型数据库或者时序数据库等。
示例性的,假设第一标识ID4对应的流桶中的某个已存储信息流发生了损坏,且该损坏的已存储信息流的第二标识为ID4D6,那么根据第一标识ID4及第二标识ID4D6,在备份设备中查找到备份信息流,将备份信息流复制并存储至第一标识ID4对应的流桶中,且位于第二标识ID4D6对应的位置。
上述可选的实施方式,将每个已存储信息流对应的第一标识及第二标识与已存储信息流进行关联备份,当某个流桶中的已存储信息流发生了损坏,则根据关联备份的第一标识及第二标识从备份中查询信息流,并将查询到的信息流存储至第一标识对应的流桶且第二标识对应的位置。
在一个可选的实施方式中,所述方法还包括:
接收待存储信息流;
对所述待存储信息流按照预设间隔进行等间隔分块得到多个第一块信息流;
根据每个所述第一块信息流的块哈希值得到所述待存储信息流的第一哈希值;
根据所述第一哈希值及哈希表,判断是否对所述待存储信息流进行存储,其中,所述哈希表中包括多个第二哈希值,所述第二哈希值是根据对所述已存储信息流,按照所述预设间隔进行等间隔分块得到的多个第二块信息流的块哈希值得到的;
当确定不对所述待存储信息流进行存储时,删除所述待存储信息流。
其中,所述待存储信息流是指用户通过客户端上传至流服务器中的信息流,是相对所述已存储信息流而言的,即待存储信息流的发布时间晚于任意一个已存储信息流的发布时间。待存储信息流可以包括,但不限于:视频、音频、文本、图片。
所述预设间隔是预先设置的间隔的比特位数目,例如128k比特、32k比特等。流服务器可以通过数据流分段器对接收到的信息流进行分块,为便于区分,将对接收到的信息流进行分块得到的块信息流称之为第一块信息流。假设待存储信息流为1101101000011111,预设间隔为8比特,则待存储信息流可以被划分为两个第一块信息流11011010和00011111。
流服务器在得到所述待存储信息流的第一哈希值之前,先计算每个所述第一块信息流的块哈希值。具体实施时,可以采用哈希函数计算每个所述第一块信息流的哈希值,作为所述第一块信息流的块哈希值。将所有第一块信息流的块哈希值,按照第一块信息流的顺序进行拼接,得到所述待存储信息流的第一哈希值。所述块哈希值用以唯一标识所述待存储信息流中所述第一块信息流,第一哈希值用以唯一标识所述待存储信息流。示例性的,假设待存储信息流1101101000011111被划分为两个第一块信息流11011010和00011111,采用哈希函数对第一个块信息流11011010进行哈希计算得到的块哈希值为1011,采用哈希函数对第二个块信息流00011111进行哈希计算得到的块哈希值为0110,那么待存储信息流1101101000011111的第一哈希值为10110110。
流服务器根据所述第一哈希值及所述哈希表,从已存储信息流中查找与所述待存储信息流相同的信息流,从而根据查找结果判断是否对所述待存储信息流进行存储。当查找结果为从已存储信息流中查找到与所述待存储信息流相同的信息流时,表明流服务器中已有相同的信息流了,即待存储信息流属于重复数据,因此不对所述待存储信息流进行存储。当查找结果为从已存储信息流中未查找到与所述待存储信息流相同的信息流时,表明流服务器中没有相同的信息流,即待存储信息流不属于重复数据,因此对所述待存储信息流进行存储。
流服务器不对所述待存储信息流进行存储,可以是指将所述待存储信息流进行删除。
所述哈希表中包括已存储信息流的指针及第二哈希值的对应关系。第二哈希值用以唯一标识所述已存储信息流,所述指针用以指示所述已存储信息流在流服务器中的存储地址。所述已存储信息流的第二哈希值的计算过程包括:对所述已存储信息流按照所述预设间隔进行等间隔分块得到多个第二块信息流,根据每个所述第二块信息流的块哈希值得到所述已存储信息流的第二哈希值。具体过程可以参见所述待存储信息流的第一哈希值的计算过程,本发明不再赘述。
在一个可选的实施方式中,所述根据所述第一哈希值及哈希表,判断是否对所述待存储信息流进行存储包括:
采用预设距离函数基于所述第一哈希值及所述第二哈希值计算得到距离;
对所述距离与预设距离阈值进行比较;
当所述距离小于所述预设距离阈值时,确定对所述待存储信息流进行存储;
当所述距离大于所述预设距离阈值时,确定对所述待存储信息流进行删除。
本实施例中,所述预设距离函数可以为汉明距离(Hamming distance)函数,流服务器计算待存储数据流的第一哈希值与已存储信息流的第二哈希值之间的汉明距离。两个哈希值对应二进制串取值不同的数量称为这两个哈希值的汉明距离。示例性的,假设第一哈希值为10101,第二哈希值为00110,由于第一哈希值和第二哈希值从第一位开始依次有第一、二、五位不同,因此第一哈希值和第二哈希值之间的汉明距离为3。
上述可选的实施例中,汉明距离可以表示两个哈希值的相似程度,因而流服务器通过对汉明距离与预设距离阈值进行比较,来判断待存储信息流的第一哈希值与已存储信息流的第二哈希值是否相似,从而判断待存储信息流与已存储信息流是否相似,进而判断是否对待存储信息流进行存储。当第一哈希值和第二哈希值之间的汉明距离小于所述预设距离阈值时,表明待存储信息流的第一哈希值与已存储信息流的第二哈希值相似,从而确定待存储信息流与已存储信息流相似,进而确定对待存储信息流进行存储。当第一哈希值和第二哈希值之间的汉明距离大于所述预设距离阈值时,表明待存储信息流的第一哈希值与已存储信息流的第二哈希值不相似,从而确定待存储信息流与已存储信息流不相似,进而确定对待存储信息流不进行存储。需要说明的是,当第一哈希值和第二哈希值之间的汉明距离等于所述预设距离阈值时,既可以适用于第一哈希值和第二哈希值之间的汉明距离小于所述预设距离阈值的情况,也可以适用于第一哈希值和第二哈希值之间的汉明距离大于所述预设距离阈值的情况。即,当第一哈希值和第二哈希值之间的汉明距离等于所述预设距离阈值时,既可以选择对待存储信息流进行存储,也可以对待存储信息流不进行存储。
上述可选的实施方式,通过对信息流进行分块,并通过计算每个块信息流的哈希值得到整个信息流的哈希值,相比直接计算整个信息流的哈希值,效率更高。原因在于,块信息流的数据大小相对于整个信息流的数据大小而言是比较小的,数据量越小,哈希值的计算过程越快,且可以采用并行处理的方式来同时对每个块信息流执行哈希值的计算。通过待存储信息流的第一哈希值与已存储信息流的第二哈希值,从已存储信息流中查询是否存在与待存储信息流相似度较高的信息流,从而判定待存储信息流是否为重复数据。当从已存储信息流中查询到存在与待存储信息流相似度较高的信息流时,将待存储信息流进行删除,能够很好的起到去掉重复数据的作用,从而减少数据存储空间,提高数据存储利用率。
在一个可选的实施方式中,所述对所述待存储信息流进行存储包括:
获取所述待存储信息流的第一发布时间;
从所述多个已存储信息流的发布时间中确定最接近所述第一发布时间的第二发布时间;
确定在所述第二发布时间发布的已存储信息流存储的目标流桶的第一标识;
将所述待存储信息流存储至与所述目标流桶的第一标识相邻的第一标识对应的流桶。
示例性的,假设第一发布时间是22年9月21日8时56分13秒,多个已存储信息流的发布时间中最接近所述第一发布时间的第二发布时间是22年9月21日8时56分12秒,而在22年9月21日8时56分12秒发布的信息流存储在第一标识为ID3对应的流桶(目标流桶)中,由于第一标识ID4及第一标识ID2与第一标识ID3相邻,则将所述待存储信息流存储至第一标识ID4对应的流桶,或者存储至第一标识ID2对应的流桶。
更进一步的,当所述目标流桶的第一标识相邻的第一标识有两个时,流服务器还可以从所述多个已存储信息流的发布时间中确定第二接近所述第一发布时间的第三发布时间,判断在所述第三发布时间发布的已存储信息流存储的流桶的第一标识,为所述目标流桶的第一标识相邻的两个第一标识中的哪一个,则将所述待存储信息流存储至与所述目标流桶的第一标识相邻的另一个第一标识对应的流桶。示例性的,继续上述实施例,由于目标流桶的第一标识ID3相邻的第一标识有两个:ID4及ID2,在多个已存储信息流的发布时间中第二接近所述第一发布时间的第三发布时间为22年9月21日8时56分11秒,而22年9月21日8时56分11秒发布的信息流存储在第一标识为ID2对应的流桶中,流服务器将待存储信息流存储至第一标识ID4对应的流桶。
上述可选的实施方式,每接收到一个待存储信息流,通过待存储信息流的第一发布时间,从所述多个已存储信息流的发布时间中确定最接近所述第一发布时间的第二发布时间,从而确定在所述第二发布时间发布的已存储信息流存储的目标流桶的第一标识,最后将所述待存储信息流存储至与所述目标流桶的第一标识相邻的第一标识对应的流桶,能够保证将接收到的待存储信息流按照轮询的策略存储至多个流桶中,保证在任何时刻每个流桶中的已存储信息流是均匀的,避免导致某一个或者某部分流桶的信息流的数量过多,其余流桶的信息流的数量过少,造成信息流存储不均衡。
实施例二
图5是本发明实施例二提供的信息流处理装置的结构图。
在一些实施例中,所述信息流处理装置50可以包括多个由计算机程序段所组成的功能模块。所述信息流处理装置50中的各个程序段的计算机程序可以存储至流服务器的存储器中,并由至少一个处理器所执行,以执行(详见图5描述)信息流处理的功能。
本实施例中,所述信息流处理装置50根据其所执行的功能,可以被划分为多个功能模块。所述功能模块可以包括:设置模块501、存储模块502、拉取模块503、发送模块503、备份模块505及删除模块506。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在本实施例中,关于各模块的功能将在后续的实施例中详述。
所述设置模块501,用于获取多个已存储信息流,并根据所述多个已存储信息流设置多个流桶,每个所述流桶具有第一标识。
请一并参见图3所示的示意图,本实施例提供的信息流处理方法应用于多个客户端与流服务器构成的环境中,客户端是用户的终端设备,流服务器是提供信息流服务的设备。客户端既可以向流服务器请求信息流,也可以向流服务器发布信息流。流服务器对于客户端上不同的应用程序,流服务器可以认为是提供相应网络服务的后台服务器,例如,本发明实施例中的流服务器可以接收客户端发布的信息流并进行存储,也可以向客户端发送信息流,以供客户端的用户观看。其中,流服务器可以是一台服务器、若干台服务器组成的服务器集群或云计算中心。
客户端发布信息时产生信息流,流服务器接收到客户端发布的信息流时,将信息流存入存储设备中。当用户通过客户端向流服务器请求查询信息流时,提供信息流服务的流服务器在存储设备中拉取信息流,并通过客户端返回给用户。
流服务器从存储设备中获取多个已存储信息流,根据已存储信息流设置多个流桶,流桶可以为列表,或者分区。流服务器在设置完成流桶后,为每个流桶标记第一标识,第一标识用以区分流桶。示例性的,假设流服务器设置了5个流桶,为这5个流桶标记的第一标识分别为ID1、ID2、ID3、ID4及ID5。
在一个可选的实施方式中,所述根据所述多个已存储信息流设置多个流桶包括:
获取所述多个已存储信息流的数量;
通过预设桶数计算模型基于所述数量计算得到桶数;
根据所述桶数设置多个流桶。
其中,已存储信息流的数量是指存储设备中存储的信息流的数量,桶数是指需要设置的流桶的数量。
其中,所述预设桶数计算模型可以是线性函数,线性函数的自变量为已存储信息流的数量,线性函数的因变量为桶数。示例性的,预设桶数计算模型可以为y=ax+b,a和b为常数,x表示已存储信息流的数量,y表示桶数。
上述实施例中,通过预先设置桶数计算模型,能够根据存储设备中存储的信息流的数量确定需要设置的流桶的数量,存储设备中存储的信息流的数量越大,已存储信息流越多,通过桶数计算模型计算得到的桶数越大,需要设置的流桶越多,存储设备中存储的信息流的数量越小,已存储信息流越少,通过桶数计算模型计算得到的桶数越小,需要设置的流桶越少。
所述存储模块502,用于根据轮询策略将所述多个已存储信息流存储至所述多个流桶,存储至每个所述流桶中的每个所述信息流具有第二标识。
流服务器设置完多个流桶后,即可将多个已存储信息流存储至多个流桶中,一个已存储信息流对应一个流桶,一个流桶对应多个已存储信息流,每个流桶中的信息流标记有第二标识,第二标识用以区分已存储信息流。
一个可选的实施方式中,第二标识可以包括第一标识。示例性的,假设第一个流桶中有10个已存储信息流,第一个流桶的第一标识为ID1,那么第一个流桶中的这10个已存储信息流的第二标识可以为ID1D1,ID1D2,ID1D3,ID1D4,ID1D5,ID1D6,ID1D7,ID1D8,ID1D9,ID1D10。设置第二标识包括第一标识,当某个已存储信息流损坏,能够快速定位损坏的信息流存储至哪个流桶的哪个位置,方便溯源。
在一个可选的实施方式中,所述根据轮询策略将所述多个已存储信息流存储至所述多个流桶包括:
获取每个所述已存储信息流的发布时间;
根据所述发布时间将所述多个已存储信息流进行排序;
根据所述多个流桶的桶数设置滑窗;
使用所述滑窗从排序后的已存储信息流中的第一个已存储信息流开始进行无重叠滑动,直至最后一个已存储信息流;
将每次滑窗对应的已存储信息流分发至所述多个流桶中,每个所述流桶每次分发一个所述已存储信息流。
其中,已存储信息流的发布时间是指客户端发布信息产生信息流的时间。流服务器接收客户端发布的信息流时,记录所述信息流的发布时间。在一些实施例中,可以认为信息流的发布时间为流服务器接收到客户端发布信息流的接收时间。
流服务器可以将所述多个已存储信息流按照从晚到早的发布时间进行排序,也可以将所述多个已存储信息流按照从早到晚的发布时间进行排序,本发明不做限制。
流服务器设置滑窗的尺寸为流桶的桶数,示例性的,假设流服务器设置的流桶的桶数为5个,则滑窗的尺寸为5,假设流服务器设置的流桶的桶数为10个,则滑窗的尺寸为10。
参阅图4所示,假设流服务器将所述多个已存储信息流按照从早到晚的发布时间进行排序,排在第一个的已存储信息流的发布时间最早,排在最后一个的已存储信息流的发布时间最晚,那么,将35个已存储信息流存储至设置的5个流桶中的过程为:设置滑窗的尺寸为5,第1次滑窗框住第1-5个已存储信息流,这第1-5个已存储信息流分别存储至流桶1-5中,即第1个已存储信息流存储至流桶1中,第2个已存储信息流存储至流桶1中,第3个已存储信息流存储至流桶4中,第5个已存储信息流存储至流桶1中。无重叠滑动滑窗,则第2次滑窗框住第6-10个已存储信息流,这第6-10个已存储信息流再分别存储至流桶1-5中。同样的,第3次滑窗框住第11-15个已存储信息流,这第11-15个已存储信息流再分别存储至流桶11-15中。以此类推。当滑窗滑动至最后一个已存储信息流时,所有的已存储信息流即被存储至多个流桶中。至此,流桶1中存储第1、6、11、16、21、26、31个已存储信息流,流桶2中存储第2、7、12、17、22、27、32个已存储信息流,流桶3中存储第3、8、13、18、23、28、63个已存储信息流,流桶4中存储第4、9、14、19、24、29、34个已存储信息流,流桶5中存储第5、10、15、20、25、30、35个已存储信息流。
应当理解的是,如果流服务器将所述多个已存储信息流按照从晚到早的发布时间进行排序,那么,每个流桶中存储的已存储信息流是按照从晚到早的发布时间进行排序的。如果流服务器将所述多个已存储信息流按照从早到晚的发布时间进行排序,那么,每个流桶中存储的已存储信息流是按照从早到晚的发布时间进行排序的。
上述可选的实施方式,根据流桶的桶数设置滑窗的尺寸,并使用设置的滑窗从排序后的已存储信息流中的第一个已存储信息流开始进行无重叠滑动时,能够保证每次滑动滑窗,滑窗框选的已存储信息流的数量与流桶的桶数相一致,从而将每次滑窗框选的已存储信息流分发至所述多个流桶中,每个所述流桶每次分发一个所述已存储信息流,实现了将多个已存储信息流均匀存储至多个流桶。此外,由于多个已存储信息流按照发布时间进行了排序,则每个流桶中的已存储信息流则完全不同,并且每个流桶中即有发布时间早的已存储信息流,也有发布时间晚的已存储信息流。
所述拉取模块503,用于响应于客户端的查询请求,根据所述第一标识及所述第二标识从所述多个流桶中拉取与所述查询请求对应的目标信息流。
用户需要查询信息时,通过客户端向流服务器发送查询请求,所述查询请求中可以包括查询关键词、查询信息流的条数、设备标识等。其中,设备标识是指客户端的标识。流服务器响应于客户端的查询请求,可以先生成查询请求对应的结构化查询语言(Structured Query Language,SQL),再根据SQL,在至少一个流桶中查询与所述查询关键词对应的已存储信息流。
其中,本申请实施放肆对于流服务器如何将查询请求转化为对应的SQL不做限制,可以根据实际情况采用合适的方式。
在一个可选的实施方式中,所述根据所述第一标识及所述第二标识从所述多个流桶中拉取与所述查询请求对应的目标信息流包括:
提取所述查询请求中的设备标识;
从预设记录表中查询与所述设备标识对应的第一标识及第二标识;
根据与所述设备标识对应的第一标识确定拉取的流桶;
从确定拉取的流桶中拉取与所述第二标识对应的目标信息流。
流服务器每响应客户端的查询请求,从多个流桶中拉取与所述查询请求对应的目标信息流之后,将目标信息流对应的第一标识和第二标识记录在预先生成的记录表中。记录表中记载了客户端的设备标识、查询关键词、第一标识、第二标识、查询时间等的对应关系。
示例性的,假设从预设记录表中查询到与所述设备标识对应的第一标识为ID2,第二标识为ID2D4,表明流服务器已经从第一标识为ID2的流桶中拉取了多个已存储信息流,具体是从第一标识为ID2的流桶中,从发布时间最晚的信息流拉取至第二标识为ID2D4的已存储信息流。对于该客户端的当前查询请求,流服务器从其他流桶,例如,第一标识为ID1、ID3-ID5的流桶中随机选择一个流桶进行信息流的拉取,假设选择的是第一标识为ID1的流桶,则在第一标识为ID1的流桶中从发布时间最晚的信息流拉取至第二标识为ID1D4的已存储信息流。在其他实施方式中,流服务器还可以按照轮询策略从第一标识为ID1、ID3-ID5的流桶中选择一个流桶进行信息流的拉取。
流服务器从预设记录表中查询到与所述设备标识对应的第一标识及第二标识,能够获知上一次从哪个流桶中拉取了哪些已存储信息流给客户端,如此,当客户端再次请求查询时,便从其他流桶中拉取已存储信息流给客户端,从而保证客户端每次查询到的信息流不同。
所述发送模块504,用于将所述目标信息流返回所述客户端。
流服务器将查询到的目标信息流桶过客户端返回给用户。
本发明实施方式提供的信息流处理装置,与传统的信息流处理方法不同,传统的信息流处理方法将所有的信息流存储在同一个流桶,而本发明根据多个已存储信息流设置了多个流桶,并根据轮询策略将多个已存储信息流存储至设置的多个流桶,每个流桶中的信息流不重复,体验较好,且横向来看每个流桶里面即有发布时间较新的信息流,也有发布时间较旧的信息流,在接收到客户端的查询请求时,根据流桶的第一标识及已存储信息流的第二标识从多个流桶中拉取与所述查询请求对应的目标信息流,从而保证拉取的信息流不存在重复,且具有实时性。
另外,如果信息流是实时产生的,那么每个用户获取其中任意一个流桶中的信息流也必然发生变化,让用户有新的体验。即使短期没有产生新的信息流,通过将每个用户拉取的流桶的第一标识和拉取的流桶中的信息流的第二标识进行记录,能够保证为用户下次拉取的信息流不一样,使得信息流的展示不相同。
在一个可选的实施方式中,所述备份模块505,用于将所述多个已存储信息流进行备份,并将每个所述已存储信息流对应的所述第一标识及所述第二标识与所述已存储信息流进行关联备份。
流服务器可以将所述多个已存储信息流存储至备份设备,作为备份信息流,备份设备可以是关系型数据库或者时序数据库等。
示例性的,假设第一标识ID4对应的流桶中的某个已存储信息流发生了损坏,且该损坏的已存储信息流的第二标识为ID4D6,那么根据第一标识ID4及第二标识ID4D6,在备份设备中查找到备份信息流,将备份信息流复制并存储至第一标识ID4对应的流桶中,且位于第二标识ID4D6对应的位置。
上述可选的实施方式,将每个已存储信息流对应的第一标识及第二标识与已存储信息流进行关联备份,当某个流桶中的已存储信息流发生了损坏,则根据关联备份的第一标识及第二标识从备份中查询信息流,并将查询到的信息流存储至第一标识对应的流桶且第二标识对应的位置。
所述删除模块506,用于接收到待存储信息流时,判断是否对所述待存储信息流进行存储。
在一个可选的实施方式中,所述判断是否对所述待存储信息流进行存储包括:
对所述待存储信息流按照预设间隔进行等间隔分块得到多个第一块信息流;
根据每个所述第一块信息流的块哈希值得到所述待存储信息流的第一哈希值;
根据所述第一哈希值及哈希表,判断是否对所述待存储信息流进行存储,其中,所述哈希表中包括多个第二哈希值,所述第二哈希值是根据对所述已存储信息流,按照所述预设间隔进行等间隔分块得到的多个第二块信息流的块哈希值得到的;
当确定不对所述待存储信息流进行存储时,删除所述待存储信息流。
其中,所述待存储信息流是指用户通过客户端上传至流服务器中的信息流,是相对所述已存储信息流而言的,即待存储信息流的发布时间晚于任意一个已存储信息流的发布时间。待存储信息流可以包括,但不限于:视频、音频、文本、图片。
所述预设间隔是预先设置的间隔的比特位数目,例如128k比特、32k比特等。流服务器可以通过数据流分段器对接收到的信息流进行分块,为便于区分,将对接收到的信息流进行分块得到的块信息流称之为第一块信息流。假设待存储信息流为1101101000011111,预设间隔为8比特,则待存储信息流可以被划分为两个第一块信息流11011010和00011111。
流服务器在得到所述待存储信息流的第一哈希值之前,先计算每个所述第一块信息流的块哈希值。具体实施时,可以采用哈希函数计算每个所述第一块信息流的哈希值,作为所述第一块信息流的块哈希值。将所有第一块信息流的块哈希值,按照第一块信息流的顺序进行拼接,得到所述待存储信息流的第一哈希值。所述块哈希值用以唯一标识所述待存储信息流中所述第一块信息流,第一哈希值用以唯一标识所述待存储信息流。示例性的,假设待存储信息流1101101000011111被划分为两个第一块信息流11011010和00011111,采用哈希函数对第一个块信息流11011010进行哈希计算得到的块哈希值为1011,采用哈希函数对第二个块信息流00011111进行哈希计算得到的块哈希值为0110,那么待存储信息流1101101000011111的第一哈希值为10110110。
流服务器根据所述第一哈希值及所述哈希表,从已存储信息流中查找与所述待存储信息流相同的信息流,从而根据查找结果判断是否对所述待存储信息流进行存储。当查找结果为从已存储信息流中查找到与所述待存储信息流相同的信息流时,表明流服务器中已有相同的信息流了,即待存储信息流属于重复数据,因此不对所述待存储信息流进行存储。当查找结果为从已存储信息流中未查找到与所述待存储信息流相同的信息流时,表明流服务器中没有相同的信息流,即待存储信息流不属于重复数据,因此对所述待存储信息流进行存储。
流服务器不对所述待存储信息流进行存储,可以是指将所述待存储信息流进行删除。
所述哈希表中包括已存储信息流的指针及第二哈希值的对应关系。第二哈希值用以唯一标识所述已存储信息流,所述指针用以指示所述已存储信息流在流服务器中的存储地址。所述已存储信息流的第二哈希值的计算过程包括:对所述已存储信息流按照所述预设间隔进行等间隔分块得到多个第二块信息流,根据每个所述第二块信息流的块哈希值得到所述已存储信息流的第二哈希值。具体过程可以参见所述待存储信息流的第一哈希值的计算过程,本发明不再赘述。
在一个可选的实施方式中,所述根据所述第一哈希值及哈希表,判断是否对所述待存储信息流进行存储包括:
采用预设距离函数基于所述第一哈希值及所述第二哈希值计算得到距离;
对所述距离与预设距离阈值进行比较;
当所述距离小于所述预设距离阈值时,确定对所述待存储信息流进行存储;
当所述距离大于所述预设距离阈值时,确定对所述待存储信息流进行删除。
本实施例中,所述预设距离函数可以为汉明距离(Hamming distance)函数,流服务器计算待存储数据流的第一哈希值与已存储信息流的第二哈希值之间的汉明距离。两个哈希值对应二进制串取值不同的数量称为这两个哈希值的汉明距离。示例性的,假设第一哈希值为10101,第二哈希值为00110,由于第一哈希值和第二哈希值从第一位开始依次有第一、二、五位不同,因此第一哈希值和第二哈希值之间的汉明距离为3。
上述可选的实施例中,汉明距离可以表示两个哈希值的相似程度,因而流服务器通过对汉明距离与预设距离阈值进行比较,来判断待存储信息流的第一哈希值与已存储信息流的第二哈希值是否相似,从而判断待存储信息流与已存储信息流是否相似,进而判断是否对待存储信息流进行存储。当第一哈希值和第二哈希值之间的汉明距离小于所述预设距离阈值时,表明待存储信息流的第一哈希值与已存储信息流的第二哈希值相似,从而确定待存储信息流与已存储信息流相似,进而确定对待存储信息流进行存储。当第一哈希值和第二哈希值之间的汉明距离大于所述预设距离阈值时,表明待存储信息流的第一哈希值与已存储信息流的第二哈希值不相似,从而确定待存储信息流与已存储信息流不相似,进而确定对待存储信息流不进行存储。需要说明的是,当第一哈希值和第二哈希值之间的汉明距离等于所述预设距离阈值时,既可以适用于第一哈希值和第二哈希值之间的汉明距离小于所述预设距离阈值的情况,也可以适用于第一哈希值和第二哈希值之间的汉明距离大于所述预设距离阈值的情况。即,当第一哈希值和第二哈希值之间的汉明距离等于所述预设距离阈值时,既可以选择对待存储信息流进行存储,也可以对待存储信息流不进行存储。
上述可选的实施方式,通过对信息流进行分块,并通过计算每个块信息流的哈希值得到整个信息流的哈希值,相比直接计算整个信息流的哈希值,效率更高。原因在于,块信息流的数据大小相对于整个信息流的数据大小而言是比较小的,数据量越小,哈希值的计算过程越快,且可以采用并行处理的方式来同时对每个块信息流执行哈希值的计算。通过待存储信息流的第一哈希值与已存储信息流的第二哈希值,从已存储信息流中查询是否存在与待存储信息流相似度较高的信息流,从而判定待存储信息流是否为重复数据。当从已存储信息流中查询到存在与待存储信息流相似度较高的信息流时,将待存储信息流进行删除,能够很好的起到去掉重复数据的作用,从而减少数据存储空间,提高数据存储利用率。
在一个可选的实施方式中,所述对所述待存储信息流进行存储包括:
获取所述待存储信息流的第一发布时间;
从所述多个已存储信息流的发布时间中确定最接近所述第一发布时间的第二发布时间;
确定在所述第二发布时间发布的已存储信息流存储的目标流桶的第一标识;
将所述待存储信息流存储至与所述目标流桶的第一标识相邻的第一标识对应的流桶。
示例性的,假设第一发布时间是22年9月21日8时56分13秒,多个已存储信息流的发布时间中最接近所述第一发布时间的第二发布时间是22年9月21日8时56分12秒,而在22年9月21日8时56分12秒发布的信息流存储在第一标识为ID3对应的流桶(目标流桶)中,由于第一标识ID4及第一标识ID2与第一标识ID3相邻,则将所述待存储信息流存储至第一标识ID4对应的流桶,或者存储至第一标识ID2对应的流桶。
更进一步的,当所述目标流桶的第一标识相邻的第一标识有两个时,流服务器还可以从所述多个已存储信息流的发布时间中确定第二接近所述第一发布时间的第三发布时间,判断在所述第三发布时间发布的已存储信息流存储的流桶的第一标识,为所述目标流桶的第一标识相邻的两个第一标识中的哪一个,则将所述待存储信息流存储至与所述目标流桶的第一标识相邻的另一个第一标识对应的流桶。示例性的,继续上述实施例,由于目标流桶的第一标识ID3相邻的第一标识有两个:ID4及ID2,在多个已存储信息流的发布时间中第二接近所述第一发布时间的第三发布时间为22年9月21日8时56分11秒,而22年9月21日8时56分11秒发布的信息流存储在第一标识为ID2对应的流桶中,流服务器将待存储信息流存储至第一标识ID4对应的流桶。
上述可选的实施方式,每接收到一个待存储信息流,通过待存储信息流的第一发布时间,从所述多个已存储信息流的发布时间中确定最接近所述第一发布时间的第二发布时间,从而确定在所述第二发布时间发布的已存储信息流存储的目标流桶的第一标识,最后将所述待存储信息流存储至与所述目标流桶的第一标识相邻的第一标识对应的流桶,能够保证将接收到的待存储信息流按照轮询的策略存储至多个流桶中,保证在任何时刻每个流桶中的已存储信息流是均匀的,避免导致某一个或者某部分流桶的信息流的数量过多,其余流桶的信息流的数量过少,造成信息流存储不均衡。
实施例三
本实施例提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述信息流处理方法实施例中的步骤,例如图1所示的S21-S24:
S21,获取多个已存储信息流,并根据所述多个已存储信息流设置多个流桶,每个所述流桶具有第一标识;
S22,根据轮询策略将所述多个已存储信息流存储至所述多个流桶,存储至每个所述流桶中的每个所述信息流具有第二标识;
S23,响应于客户端的查询请求,根据所述第一标识及所述第二标识从所述多个流桶中拉取与所述查询请求对应的目标信息流;
S24,将所述目标信息流返回所述客户端。
或者,该计算机程序被处理器执行时实现上述装置实施例中各模块/单元的功能,例如图5中的模块501-504:
所述设置模块501,用于获取多个已存储信息流,并根据所述多个已存储信息流设置多个流桶,每个所述流桶具有第一标识;
所述存储模块502,用于根据轮询策略将所述多个已存储信息流存储至所述多个流桶,存储至每个所述流桶中的每个所述信息流具有第二标识;
所述拉取模块503,用于响应于客户端的查询请求,根据所述第一标识及所述第二标识从所述多个流桶中拉取与所述查询请求对应的目标信息流;
所述发送模块504,用于将所述目标信息流返回所述客户端。
所述备份模块505及删除模块506请参见上述实施例及其相关描述。
实施例四
参阅图6所示,为本发明实施例三提供的流服务器的结构示意图。在本发明较佳实施例中,所述流服务器6包括存储器61、至少一个处理器62、至少一条通信总线63及收发器64。
本领域技术人员应该了解,图6示出的流服务器的结构并不构成本发明实施例的限定,既可以是总线型结构,也可以是星形结构,所述流服务器6还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置。
在一些实施例中,所述流服务器6是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路、可编程门阵列、数字处理器及嵌入式设备等。所述流服务器6还可包括客户设备,所述客户设备包括但不限于任何一种可与客户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、数码相机等。
所述流服务器6仅为举例,其他现有的或今后可能出现的电子产品如可适应于本发明,也应包含在本发明的保护范围以内,并以引用方式包含于此。
在一些实施例中,所述存储器61中存储有计算机程序,所述计算机程序被所述至少一个处理器62执行时实现如所述的信息流处理方法中的全部或者部分步骤。所述存储器61包括只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-OnlyMemory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子擦除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
进一步地,所述计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
在一些实施例中,所述至少一个处理器62是所述流服务器6的控制核心(ControlUnit),利用各种接口和线路连接整个流服务器6的各个部件,通过运行或执行存储在所述存储器61内的程序或者模块,以及调用存储在所述存储器61内的数据,以执行流服务器6的各种功能和处理数据。例如,所述至少一个处理器62执行所述存储器中存储的计算机程序时实现本发明实施例中所述的信息流处理方法的全部或者部分步骤;或者实现信息流处理装置的全部或者部分功能。所述至少一个处理器62可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。
在一些实施例中,所述至少一条通信总线63被设置为实现所述存储器61以及所述至少一个处理器62等之间的连接通信。
尽管未示出,所述流服务器6还可以包括给各个部件供电的电源(比如电池),优选的,电源可以通过电源管理装置与所述至少一个处理器62逻辑相连,从而通过电源管理装置实现管理充电、放电、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述流服务器6还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,既可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或,单数不排除复数。说明书中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种信息流处理方法,其特征在于,所述方法包括:
获取多个已存储信息流,并根据所述多个已存储信息流设置多个流桶,每个所述流桶具有第一标识;
根据轮询策略将所述多个已存储信息流存储至所述多个流桶,存储至每个所述流桶中的每个所述信息流具有第二标识;
响应于客户端的查询请求,根据所述第一标识及所述第二标识从所述多个流桶中拉取与所述查询请求对应的目标信息流;
将所述目标信息流返回所述客户端。
2.如权利要求1所述的信息流处理方法,其特征在于,所述根据所述多个已存储信息流设置多个流桶包括:
获取所述多个已存储信息流的数量;
通过预设桶数计算模型基于所述数量计算得到桶数;
根据所述桶数设置多个流桶。
3.如权利要求1所述的信息流处理方法,其特征在于,所述根据轮询策略将所述多个已存储信息流存储至所述多个流桶包括:
获取每个所述已存储信息流的发布时间;
根据所述发布时间将所述多个已存储信息流进行排序;
根据所述多个流桶的桶数设置滑窗;
使用所述滑窗从排序后的已存储信息流中的第一个已存储信息流开始进行无重叠滑动,直至最后一个已存储信息流;
将每次滑窗对应的已存储信息流分发至所述多个流桶中,每个所述流桶每次分发一个所述已存储信息流。
4.如权利要求3所述的信息流处理方法,其特征在于,所述根据所述第一标识及所述第二标识从所述多个流桶中拉取与所述查询请求对应的目标信息流包括:
提取所述查询请求中的设备标识;
从预设记录表中查询与所述设备标识对应的第一标识及第二标识;
根据与所述设备标识对应的第一标识确定拉取的流桶;
从确定拉取的流桶中拉取与所述第二标识对应的目标信息流。
5.如权利要求1至4中任意一项所述的信息流处理方法,其特征在于,所述方法还包括:
接收待存储信息流;
对所述待存储信息流按照预设间隔进行等间隔分块得到多个第一块信息流;
根据每个所述第一块信息流的块哈希值得到所述待存储信息流的第一哈希值;
根据所述第一哈希值及哈希表,判断是否对所述待存储信息流进行存储,其中,所述哈希表中包括多个第二哈希值,所述第二哈希值是根据对所述已存储信息流,按照所述预设间隔进行等间隔分块得到的多个第二块信息流的块哈希值得到的;
当确定不对所述待存储信息流进行存储时,删除所述待存储信息流。
6.如权利要求5所述的信息流处理方法,其特征在于,所述根据所述第一哈希值及哈希表,判断是否对所述待存储信息流进行存储包括:
采用预设距离函数基于所述第一哈希值及所述第二哈希值计算得到距离;
对所述距离与预设距离阈值进行比较;
当所述距离小于所述预设距离阈值时,确定对所述待存储信息流进行存储;
当所述距离大于所述预设距离阈值时,确定对所述待存储信息流进行删除。
7.如权利要求5所述的信息流处理方法,其特征在于,在确定对所述待存储信息流进行存储后,所述方法还包括:
获取所述待存储信息流的第一发布时间;
从所述多个已存储信息流的发布时间中确定最接近所述第一发布时间的第二发布时间;
确定在所述第二发布时间发布的已存储信息流存储的目标流桶的第一标识;
将所述待存储信息流存储至与所述目标流桶的第一标识相邻的第一标识对应的流桶。
8.一种信息流处理装置,其特征在于,所述装置包括:
设置模块,用于获取多个已存储信息流,并根据所述多个已存储信息流设置多个流桶,每个所述流桶具有第一标识;
存储模块,用于根据轮询策略将所述多个已存储信息流存储至所述多个流桶,存储至每个所述流桶中的每个所述信息流具有第二标识;
拉取模块,用于响应于客户端的查询请求,根据所述第一标识及所述第二标识从所述多个流桶中拉取与所述查询请求对应的目标信息流;
发送模块,用于将所述目标信息流返回所述客户端。
9.一种流服务器,其特征在于,所述流服务器包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序时实现如权利要求1至7中任意一项所述信息流处理方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任意一项所述信息流处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211436757.6A CN115729965A (zh) | 2022-11-16 | 2022-11-16 | 信息流处理方法、装置、流服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211436757.6A CN115729965A (zh) | 2022-11-16 | 2022-11-16 | 信息流处理方法、装置、流服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115729965A true CN115729965A (zh) | 2023-03-03 |
Family
ID=85296083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211436757.6A Pending CN115729965A (zh) | 2022-11-16 | 2022-11-16 | 信息流处理方法、装置、流服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115729965A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117493422A (zh) * | 2023-12-29 | 2024-02-02 | 智者四海(北京)技术有限公司 | 抽样方法、装置、电子设备及存储介质 |
-
2022
- 2022-11-16 CN CN202211436757.6A patent/CN115729965A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117493422A (zh) * | 2023-12-29 | 2024-02-02 | 智者四海(北京)技术有限公司 | 抽样方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8452773B1 (en) | Mapping terms between multiple taxonomies | |
Dhyani et al. | Big data analytics using Hadoop | |
CN106095842B (zh) | 在线课程搜索方法和装置 | |
CN111666415A (zh) | 话题聚类方法、装置、电子设备及存储介质 | |
WO2022160442A1 (zh) | 答案生成方法、装置、电子设备及可读存储介质 | |
CN113342979A (zh) | 热点话题识别方法、计算机设备及存储介质 | |
CN112699142A (zh) | 冷热数据处理方法、装置、电子设备及存储介质 | |
CN115729965A (zh) | 信息流处理方法、装置、流服务器及存储介质 | |
KR20150123900A (ko) | 사용자 제공 식별자들을 크라우드소싱하고 그것들을 브랜드 아이덴티티들 연관시키기 | |
CN113377817A (zh) | 数据处理方法、系统、设备及存储介质 | |
KR20180077830A (ko) | 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
CN114003629A (zh) | 一种高效预编译型缓存数据管理方法、装置、设备和介质 | |
CN110442614B (zh) | 元数据的搜索方法及装置、电子设备、存储介质 | |
CN115062676B (zh) | 数据处理方法、装置及计算机可读存储介质 | |
CN111651452A (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
CN116775826A (zh) | 智能问答方法、装置、电子设备及存储介质 | |
CN106776810A (zh) | 一种大数据的数据处理系统及方法 | |
US20130117245A1 (en) | Method and system for identification of asset records in a version managed datastore | |
CN114817408B (zh) | 调度资源识别方法、装置、电子设备及存储介质 | |
CN107291875B (zh) | 一种基于元数据图的元数据组织管理方法和系统 | |
CN112328752B (zh) | 基于搜索内容的课程推荐方法、装置、计算机设备及介质 | |
US10885157B2 (en) | Determining a database signature | |
CN113849520A (zh) | 异常sql的智能识别方法、装置、电子设备及存储介质 | |
CN106970923B (zh) | 话题检测的方法和装置 | |
CN114756564B (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 |