CN114844948B - 一种实时分发***的客户端缓存优化方法及装置 - Google Patents
一种实时分发***的客户端缓存优化方法及装置 Download PDFInfo
- Publication number
- CN114844948B CN114844948B CN202111524916.3A CN202111524916A CN114844948B CN 114844948 B CN114844948 B CN 114844948B CN 202111524916 A CN202111524916 A CN 202111524916A CN 114844948 B CN114844948 B CN 114844948B
- Authority
- CN
- China
- Prior art keywords
- publisher
- proxy server
- buffer
- proxy
- cache
- 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
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000005457 optimization Methods 0.000 title claims abstract description 20
- 238000013507 mapping Methods 0.000 claims abstract description 14
- 230000008569 process Effects 0.000 claims description 11
- 238000010276 construction Methods 0.000 claims description 3
- 239000012634 fragment Substances 0.000 claims description 3
- 238000003780 insertion Methods 0.000 description 8
- 230000037431 insertion Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 239000003086 colorant Substances 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种实时分发***的客户端缓存优化方法及装置,所述方法包括:当出现N个proxy代理服务器时,根据proxy代理服务器的地址排序转换为红黑树,在构建红黑树时将proxy代理服务器分为不同范围的节点,每一节点上的proxy代理服务器代理预设范围内的值,当发布者的消息在proxy代理服务器所代理的预设范围内,根据哈希映射将发布者的消息放在关键字key为头结点的缓存队列中;本发明的优点在于:当发布者发送消息的速率高于订阅者接受消息的速率时,消息被存储在缓存队列中,订阅方缓存不会被填满,后续的消息不会丢失,不存在丢包问题。
Description
技术领域
本发明涉及数据实时分发领域,更具体涉及一种实时分发***的客户端缓存优化方法及装置。
背景技术
随着云计算、大数据技术的不断发展,计算机应用领域不断扩展,越来越多的部门开始对计算机呈现出更强的依赖性。与集中式***相比,分布式***具有高可靠性,资源共享,通信快捷方便,快速响应等明显的优点,为了满足人们对计算机性能和可靠性的更高要求,一种新的基于发布/订阅的中间件架构-实时数据分发服务(realtime datadistribution service)出现了。实时分发的目的在于快速的将信息有效且稳健的传递到目标设备,在高并发,大数据场景下,提供高性能的数据快速访问。然而在分发过程中,发布者发送消息的速率要高于订阅者接受消息的速率,订阅方缓存容易被填满,导致后续的消息因无法缓存而丢失,从而产生丢包问题,因此优化订阅端缓存,防止缓存溢出就具有了重要的现实意义。
中国专利授权公告号CN104601581B,公开了基于可靠协议兴趣代理的分布式发布/订阅***,该***包括发布方单元,用于构建分布式发布/订阅数据交换的发布方;发布方管理单元,用于根据发布方创建与其相对应的订阅代理,并存储此发布方的兴趣和与其对应的订阅代理;数据通道模块,用于建立发布方和订阅方的分布式数据交换的数据通道;订阅方管理单元,用于根据订阅方创建与其相对应的发布代理,并存储此订阅方的兴趣和与其对应的发布代理;订阅方单元,用于构建分布式发布/订阅数据交换的订阅方。该发明所述技术方案突破了组播或广播等特殊网络条件限制,提高了网络安全性和数据可靠性;基于兴趣代理的方式不限制数据规模、不局限于特定数据内容,可有效建立大规模通用的发布/订阅关系。但是该发明当发布者发送消息的速率高于订阅者接受消息的速率时,订阅方缓存容易被填满,导致后续的消息因无法缓存而丢失,从而产生丢包问题。
发明内容
本发明所要解决的技术问题在于现有技术发布/订阅***当发布者发送消息的速率高于订阅者接受消息的速率时,订阅方缓存容易被填满,导致后续的消息因无法缓存而丢失,从而产生丢包问题。
本发明通过以下技术手段实现解决上述技术问题的:一种实时分发***的客户端缓存优化方法,所述实时分发***包括订阅者、proxy代理服务器以及发布者,订阅者通过proxy代理服务器向发布者发送请求,发布者通过proxy代理服务器向订阅者返回数据,所述proxy代理服务器代理订阅者与发布者进行交互且缓存发布者所发送的数据;
当出现N个proxy代理服务器时,根据proxy代理服务器的地址排序转换为红黑树,在构建红黑树时将proxy代理服务器分为不同范围的节点,每一节点上的proxy代理服务器代理预设范围内的值,当发布者的消息在proxy代理服务器所代理的预设范围内,根据哈希映射将发布者的消息放在关键字key为头结点的缓存队列中,每个proxy代理服务器都有其对应的缓存队列且每个proxy代理服务器与其缓存队列都有相同的关键字key。
本发明根据proxy代理服务器的地址排序转换为红黑树,在构建红黑树时将proxy代理服务器分为不同范围的节点,实现第一层数据分流,当发布者的消息在proxy代理服务器所代理的预设范围内,根据哈希映射将发布者的消息放在关键字key为头结点的缓存队列中,实现第二层数据分流,当发布者发送消息的速率高于订阅者接受消息的速率时,消息被存储在缓存队列中,订阅方缓存不会被填满,后续的消息不会丢失,不存在丢包问题。
进一步地,当多个订阅者订阅同个主题时,由proxy代理服务器代理主题,并在proxy代理服务器中缓存发布者发送的数据,订阅者从proxy代理服务器将缓存的数据取走。
进一步地,每个proxy代理服务器的关键字为其所代理的预设范围的左端点。
进一步地,所述缓存优化方法包括索引缓存和内容缓存,所述索引缓存用于存放缓存片段的起始地址和/或结束地址,所述内容缓存用于存放实体数据,根据索引缓存得到需要访问的缓存起始地址或结束地址,然后再起始地址或结束地址搜寻内容缓存的位置,从内容缓存对应位置获取缓存数据。
更进一步地,若从索引缓存获取不到地址,则向发布者获得缓存。
更进一步地,所述将proxy代理服务器分为不同范围的节点,每一节点上的proxy代理服务器代理预设范围内的值为索引缓存,所述当发布者的消息在proxy代理服务器所代理的预设范围内,根据哈希映射将发布者的消息放在关键字key为头结点的缓存队列中为内容缓存。
进一步地,在每条消息打上时间戳,当在设定的截止时间段内都没有任何进程访问这个消息,则判定该条消息为过期,从缓存队列中将这个消息删除。
本发明还提供一种实时分发***的客户端缓存优化装置,所述实时分发***包括订阅者、proxy代理服务器以及发布者,订阅者通过proxy代理服务器向发布者发送请求,发布者通过proxy代理服务器向订阅者返回数据,所述proxy代理服务器代理订阅者与发布者进行交互且缓存发布者所发送的数据;
红黑树构建模块,用于当出现N个proxy代理服务器时,根据proxy代理服务器的地址排序转换为红黑树;
索引缓存模块,用于在构建红黑树时将proxy代理服务器分为不同范围的节点,每一节点上的proxy代理服务器代理预设范围内的值;
内容缓存模块,用于当发布者的消息在proxy代理服务器所代理的预设范围内,根据哈希映射将发布者的消息放在关键字key为头结点的缓存队列中,每个proxy代理服务器都有其对应的缓存队列且每个proxy代理服务器与其缓存队列都有相同的关键字key。
进一步地,当多个订阅者订阅同个主题时,由proxy代理服务器代理主题,并在proxy代理服务器中缓存发布者发送的数据,订阅者从proxy代理服务器将缓存的数据取走。
更进一步地,每个proxy代理服务器的关键字为其所代理的预设范围的左端点。
进一步地,所述缓存优化装置包括索引缓存和内容缓存,所述索引缓存用于存放缓存片段的起始地址和/或结束地址,所述内容缓存用于存放实体数据,根据索引缓存得到需要访问的缓存起始地址或结束地址,然后再起始地址或结束地址搜寻内容缓存的位置,从内容缓存对应位置获取缓存数据。
更进一步地,若从索引缓存获取不到地址,则向发布者获得缓存。
更进一步地,所述将proxy代理服务器分为不同范围的节点,每一节点上的proxy代理服务器代理预设范围内的值为索引缓存,所述当发布者的消息在proxy代理服务器所代理的预设范围内,根据哈希映射将发布者的消息放在关键字key为头结点的缓存队列中为内容缓存。
进一步地,在每条消息打上时间戳,当在设定的截止时间段内都没有任何进程访问这个消息,则判定该条消息为过期,从缓存队列中将这个消息删除。
本发明的优点在于:本发明根据proxy代理服务器的地址排序转换为红黑树,在构建红黑树时将proxy代理服务器分为不同范围的节点,实现第一层数据分流,当发布者的消息在proxy代理服务器所代理的预设范围内,根据哈希映射将发布者的消息放在关键字key为头结点的缓存队列中,实现第二层数据分流,当发布者发送消息的速率高于订阅者接受消息的速率时,消息被存储在缓存队列中,订阅方缓存不会被填满,后续的消息不会丢失,不存在丢包问题。
附图说明
图1为本发明实施例所公开的一种实时分发***的客户端缓存优化方法中实时分发***的结构框图;
图2为本发明实施例所公开的一种实时分发***的客户端缓存优化方法中缓存层次示意图;
图3为本发明实施例所公开的一种实时分发***的客户端缓存优化方法中客户端缓存三层索引示意;
图4为本发明实施例所公开的一种实时分发***的客户端缓存优化方法中构建Proxy的缓存队列的示意图;
图5为本发明实施例所公开的一种实时分发***的客户端缓存优化方法中发布-订阅过程示意图;
图6为本发明实施例所公开的一种实时分发***的客户端缓存优化方法中构建的红黑树示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
在实时分发***下,如果发布端的发布速度高于订阅端的接受速度就容易导致订阅端缓存逐渐被填满,直到出现溢出丢包的问题,为了解决这个问题,可以在发布端与订阅端之间设置正向代理,也就是使用proxy代理模式,构建proxy代理服务器。为了实现实时分发下订阅端与发布端之间相同请求的归一,本发明主要研究正向代理,正向代理是位于发布者与订阅者的一种中介(代理服务器),使用正向代理的方式可以使代理服务器代理订阅端,与发布端进行交互且在proxy代理服务器(以下简称proxy)可以缓存发布者所发送的数据。如图1所示,所述实时分发***包括订阅者、proxy代理服务器以及发布者,订阅者通过proxy代理服务器向发布者发送请求,发布者通过proxy代理服务器向订阅者返回数据,所述proxy代理服务器代理订阅者与发布者进行交互且缓存发布者所发送的数据。
实时分发***一般都会面对高并发访问和海量数据,当传统数据库面临大规模数据访问时,磁盘I/O能力往往成为性能瓶颈,从而导致过高的响应延迟,而比较常用的提升性能的手段,是在应用和数据库之间加入一层分布式缓存来提升数据访问性能,分布式缓存将高速内存作为数据对象的存储介质,常见的缓存实现会通过LRU算法来缓存访问最多的数据,进而提升缓存效率。分布式缓存还具有支持弹性扩展的能力,通过动态增加或减少节点,应对变化的数据访问负载,提供可预测的性能与扩展性,同时也能最大限度地提高资源利用率。
为了方便查找Proxy的缓存数据,提高proxy的利用率,将Proxy缓存分为两个部分:索引缓存(index cache)以及内容缓存(concent cache)。如图2所示,在访问缓存时可以先根据索引缓存可以得到需要访问的缓存起始地址或结束地址,然后再从内容缓存获取缓存数据。如果从索引缓存获取不到地址,就需要向发布者处获得缓存。具体内容:所述索引缓存用于存放缓存片段的起始地址和/或结束地址,所述内容缓存用于存放实体数据,根据索引缓存得到需要访问的缓存起始地址或结束地址,然后再起始地址或结束地址搜寻内容缓存的位置,从内容缓存对应位置获取缓存数据。若从索引缓存获取不到地址,则向发布者获得缓存。
客户端缓存三层索引示意图如图3所示。第一层红黑树:当出现N个proxy代理服务器时,缓存模型会根据地址排序转换为红黑树。第二层proxy代理值:在构建红黑树树时会将proxy分为不同范围的节点,每一节点上的proxy代理一定范围内的值。这一层相当于索引缓存(index cache)。
第三层哈希表:根据哈希映射使proxy中缓存的value(实体数据)放在所对应的key键下。这一层相当于内容缓存(concent cache)。具体索引过程为:在实时分发***中红黑树上的每一节点都是一个Proxy,每个Proxy代表一个区间,也就是说在红黑树上的每一proxy都代表一定范围内的值,当发布者的消息在该范围内,则该Proxy创建发布消息的缓存队列,数据命中proxy所代表的范围后,进入缓存队列,根据设定的哈希函数H(key)将发布者的消息放入缓存队列,每个消息根据关键字(key)即消息的topic,由哈希函数映射到缓存队列中,作为value值挂在关键字key为头结点的队列中,如图4所示,当订阅者需要获取消息时,将会到红黑树中找到对应的proxy节点,然后基于topic关键字找到对应的消息。
如果图5所示,发布-订阅过程为:注册Participant(参与者)作为应用需要的发布-订阅的容器,在Particpant下创建publisher(发布者),subscriber(订阅者)以及topic(订阅主题)。在publish中创建datawriter,负责写入数据,在subcriber中创建datareader负责订阅数据。在每一datawriter与datareader之间都有约定的主题(topic),使订阅者能够正确收到发布者的发送的数据,当多个订阅者订阅同个主题时,由proxy代理服务器代理主题,并在proxy代理服务器中缓存发布者发送的数据,订阅者从proxy代理服务器将缓存的数据取走。
构建红黑树的原理如图6所示,在订阅/发布的过程中,当产生N个proxy时会自动构建为红黑树,之后创建的proxy会***该红黑树中,利用红黑树实现proxy上所代理值的区间集合。构建的Proxy红黑树如图6所示。设定每个节点的关键值是区间的左端点。区间[low,high]表示成一个对象i,low表示区间的低点,high表示区间的高点。通过建立这种特定的结构,使区间的元素的查找和***都可以在O(lgn)的时间内完成。在Proxy红黑树中增加一个max[x],即以x为根的子树中所有区间的断点的最大值:max[x]=max(high[int[x]],max[left[x]],max[right[x]],以红黑树为基础,对x∈T,x包含区间int[x]的信息(低点和高点),key=low[int[x]]。
Proxy节点的***和删除代表了特定范围内topic的***删除,本实施例中,Proxy节点的***和删除采用现有技术过程,具体内容如下:
***操作
首先约定***的新节点的颜色都为红色。然后该节点***操作按二叉查找树的规则***到树中。称这个待***的节点为N。
1.根节点为空。这种情况,将N的颜色改为黑色即可。
2.N的父节点为黑色。这种情况不需要做修改。
3.N的父节点为红色(根据性质3,N的祖父节点必为黑色)。
N的叔父节点为红色。这种情况,将N的父节点和叔父节点的颜色都改为黑色,若祖父节点是跟节点就将其改为黑色,否则将其颜色改为红色,并以祖父节点为***的目标节点从情况1开始递归检测。
N的叔父节点为黑色,且N和N的父节点在同一边(即父节点为祖父的左儿子时,N也是父节点的左儿子。父节点为祖父节点的右儿子时。N也是父节点的右儿子)。以父节点为祖父节的左儿子为例,将父节点改为黑色,祖父节点改为红色,然后以祖父节点为基准右旋。(N为父节点右儿子时做相应的左旋。)
N的叔父节点为黑色,切N和N的父节点不在同一边(即父节点为祖父的左儿子时,N是父节点的右儿子。父节点为祖父节点的右儿子时。N也是父节点左右儿子)。以父节点为祖父节点的左儿子为例。以父节点为基准,进行左旋,然后以父节点为目标***节点进入情况进行操作。
删除操作
删除的节点有两个儿子时,可以转化为删除的节点只有一个儿子时的问题。对于二叉查找树,在删除带有两个非叶子儿子的节点的时候,找到要么在它的左子树中的最大元素、要么在它的右子树中的最小元素,并把它的值转移到要删除的节点中。接着删除我们从中复制出值的那个节点,它必定有少于两个非叶子的儿子。因为只是复制了一个值,不违反任何性质,这就把问题简化为如何删除最多有一个儿子的节点的问题。它不关心这个节点是最初要删除的节点还是我们从中复制出值的那个节点。
那么所有情况都可以转化为删除只有一个儿子的节点的情况,约定这个要删除的节点为N(若N“没有”儿子节点,并用他的任意一个为叶子节点的儿子节点顶替即可)
a.N为红色节点时。直接删除N,用它的黑色儿子代替它的位置。
b.N为黑色节点,且父节点为红色。直接删除N,用它的儿子节点代替它的位置,并将该儿子节点改为黑色。
c.N为黑色节点,且父节点为黑色。之前删除N,用它的儿子节点代替它,该儿子节点成为N',将N’的颜色改为黑色。
N’的兄弟节点和兄弟节点的2个儿子都为黑色。交换兄弟节点和父节点的颜色即可。
N’的兄弟节点为黑色、且兄弟节点的红色儿子和兄弟节点在一边(即兄弟节点为左儿子时,红色儿子也为左儿子。兄弟节点为右儿子时,红色儿子也为右儿子)。我们以兄弟节点为右儿子为例。将祖父节点和兄弟节点的颜色互换,并将红色右儿子的颜色改为黑色,然后以祖父节点为基准左旋。(若兄弟节点为左儿子,则相应的右旋)
N’的兄弟节点为黑色、且兄弟节点的红儿子和兄弟节点不在一边(即兄弟节点为左儿子时,红色儿子也为右儿子。兄弟节点为右儿子时,红色儿子也为左儿子)。以兄弟结点为右儿子为例。将兄弟节点和它的红色儿子的颜色互换,然后以兄弟节点为基准右旋。此时对于N’来说就进入了上文b情况。(若兄弟节点为右儿子,则相应的左旋)
N’的兄弟节点为红色。以兄弟节点为右儿子为例,将父节点和兄弟节点的颜色互换,然后以父节点为基准左旋(若兄弟节点为左儿子则相应的右旋),此N’有一个黑色的兄弟节点,接下来N就可以进入a、b、c三种情况分别操作了。
N’的兄弟节为黑色,父节点也为黑色。此时将兄弟节点的颜色改为红色。然后以父节点为目标***节点从头开始依次判断。
作为进一步改进的方案,本发明提供的缓存方法存在过期机制,过期机制分为绝对时间过期机制和空闲时间过期机制。在实时分发***中可以指定空闲时间过期机制,在每条消息打上时间戳即timestamp,当在设定的截止时间段内都没有任何进程访问这个数据,则判定该条消息为过期,此时缓存就把这个数据删除。这个方法可以有效缩短临时数据在缓存的时间,缓存自动把不用的数据删除。
通过以上技术方案,本发明根据proxy代理服务器的地址排序转换为红黑树,在构建红黑树时将proxy代理服务器分为不同范围的节点,实现第一层数据分流,当发布者的消息在proxy代理服务器所代理的预设范围内,根据哈希映射将发布者的消息放在关键字key为头结点的缓存队列中,实现第二层数据分流,当发布者发送消息的速率高于订阅者接受消息的速率时,消息被存储在缓存队列中,订阅方缓存不会被填满,后续的消息不会丢失,不存在丢包问题。
实施例2
基于实施例1,本发明实施例2还提供一种实时分发***的客户端缓存优化装置,所述实时分发***包括订阅者、proxy代理服务器以及发布者,订阅者通过proxy代理服务器向发布者发送请求,发布者通过proxy代理服务器向订阅者返回数据,所述proxy代理服务器代理订阅者与发布者进行交互且缓存发布者所发送的数据;
红黑树构建模块,用于当出现N个proxy代理服务器时,根据proxy代理服务器的地址排序转换为红黑树;
索引缓存模块,用于在构建红黑树时将proxy代理服务器分为不同范围的节点,每一节点上的proxy代理服务器代理预设范围内的值;
内容缓存模块,用于当发布者的消息在proxy代理服务器所代理的预设范围内,根据哈希映射将发布者的消息放在关键字key为头结点的缓存队列中,每个proxy代理服务器都有其对应的缓存队列且每个proxy代理服务器与其缓存队列都有相同的关键字key。
具体的,当多个订阅者订阅同个主题时,由proxy代理服务器代理主题,并在proxy代理服务器中缓存发布者发送的数据,订阅者从proxy代理服务器将缓存的数据取走。
更具体的,每个proxy代理服务器的关键字为其所代理的预设范围的左端点。
具体的,所述缓存优化装置包括索引缓存和内容缓存,所述索引缓存用于存放缓存片段的起始地址和/或结束地址,所述内容缓存用于存放实体数据,根据索引缓存得到需要访问的缓存起始地址或结束地址,然后再起始地址或结束地址搜寻内容缓存的位置,从内容缓存对应位置获取缓存数据。
更具体的,若从索引缓存获取不到地址,则向发布者获得缓存。
更具体的,所述将proxy代理服务器分为不同范围的节点,每一节点上的proxy代理服务器代理预设范围内的值为索引缓存,所述当发布者的消息在proxy代理服务器所代理的预设范围内,根据哈希映射将发布者的消息放在关键字key为头结点的缓存队列中为内容缓存。
具体的,在每条消息打上时间戳,当在设定的截止时间段内都没有任何进程访问这个消息,则判定该条消息为过期,从缓存队列中将这个消息删除。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种实时分发***的客户端缓存优化方法,其特征在于,所述实时分发***包括订阅者、proxy代理服务器以及发布者,订阅者通过proxy代理服务器向发布者发送请求,发布者通过proxy代理服务器向订阅者返回数据,所述proxy代理服务器代理订阅者与发布者进行交互且缓存发布者所发送的数据;
当出现N个proxy代理服务器时,根据proxy代理服务器的地址排序转换为红黑树,在构建红黑树时将proxy代理服务器分为不同范围的节点,每一节点上的proxy代理服务器代理预设范围内的值,当发布者的消息在proxy代理服务器所代理的预设范围内,根据哈希映射将发布者的消息放在关键字key为头结点的缓存队列中,每个proxy代理服务器都有其对应的缓存队列且每个proxy代理服务器与其缓存队列都有相同的关键字key;
所述缓存优化方法包括索引缓存和内容缓存,所述索引缓存用于存放缓存片段的起始地址和/或结束地址,所述内容缓存用于存放实体数据,根据索引缓存得到需要访问的缓存起始地址或结束地址,然后再起始地址或结束地址搜寻内容缓存的位置,从内容缓存对应位置获取缓存数据;所述将proxy代理服务器分为不同范围的节点,每一节点上的proxy代理服务器代理预设范围内的值为索引缓存,所述当发布者的消息在proxy代理服务器所代理的预设范围内,根据哈希映射将发布者的消息放在关键字key为头结点的缓存队列中为内容缓存。
2.根据权利要求1所述的一种实时分发***的客户端缓存优化方法,其特征在于,当多个订阅者订阅同个主题时,由proxy代理服务器代理主题,并在proxy代理服务器中缓存发布者发送的数据,订阅者从proxy代理服务器将缓存的数据取走。
3.根据权利要求1所述的一种实时分发***的客户端缓存优化方法,其特征在于,每个proxy代理服务器的关键字为其所代理的预设范围的左端点。
4.根据权利要求1所述的一种实时分发***的客户端缓存优化方法,其特征在于,若从索引缓存获取不到地址,则向发布者获得缓存。
5.根据权利要求1所述的一种实时分发***的客户端缓存优化方法,其特征在于,在每条消息打上时间戳,当在设定的截止时间段内都没有任何进程访问这个消息,则判定该条消息为过期,从缓存队列中将这个消息删除。
6.一种实时分发***的客户端缓存优化装置,其特征在于,所述实时分发***包括订阅者、proxy代理服务器以及发布者,订阅者通过proxy代理服务器向发布者发送请求,发布者通过proxy代理服务器向订阅者返回数据,所述proxy代理服务器代理订阅者与发布者进行交互且缓存发布者所发送的数据;
红黑树构建模块,用于当出现N个proxy代理服务器时,根据proxy代理服务器的地址排序转换为红黑树;
索引缓存模块,用于在构建红黑树时将proxy代理服务器分为不同范围的节点,每一节点上的proxy代理服务器代理预设范围内的值;
内容缓存模块,用于当发布者的消息在proxy代理服务器所代理的预设范围内,根据哈希映射将发布者的消息放在关键字key为头结点的缓存队列中,每个proxy代理服务器都有其对应的缓存队列且每个proxy代理服务器与其缓存队列都有相同的关键字key;
所述缓存优化装置包括索引缓存和内容缓存,所述索引缓存用于存放缓存片段的起始地址和/或结束地址,所述内容缓存用于存放实体数据,根据索引缓存得到需要访问的缓存起始地址或结束地址,然后再起始地址或结束地址搜寻内容缓存的位置,从内容缓存对应位置获取缓存数据;所述将proxy代理服务器分为不同范围的节点,每一节点上的proxy代理服务器代理预设范围内的值为索引缓存,所述当发布者的消息在proxy代理服务器所代理的预设范围内,根据哈希映射将发布者的消息放在关键字key为头结点的缓存队列中为内容缓存。
7.根据权利要求6所述的一种实时分发***的客户端缓存优化装置,其特征在于,当多个订阅者订阅同个主题时,由proxy代理服务器代理主题,并在proxy代理服务器中缓存发布者发送的数据,订阅者从proxy代理服务器将缓存的数据取走。
8.根据权利要求7所述的一种实时分发***的客户端缓存优化装置,其特征在于,每个proxy代理服务器的关键字为其所代理的预设范围的左端点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111524916.3A CN114844948B (zh) | 2021-12-14 | 2021-12-14 | 一种实时分发***的客户端缓存优化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111524916.3A CN114844948B (zh) | 2021-12-14 | 2021-12-14 | 一种实时分发***的客户端缓存优化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114844948A CN114844948A (zh) | 2022-08-02 |
CN114844948B true CN114844948B (zh) | 2024-05-31 |
Family
ID=82562276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111524916.3A Active CN114844948B (zh) | 2021-12-14 | 2021-12-14 | 一种实时分发***的客户端缓存优化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114844948B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1239252A (zh) * | 1998-05-27 | 1999-12-22 | 国际商业机器公司 | 发布/订阅数据处理设备、方法和计算机程序产品 |
CN101848236A (zh) * | 2010-05-06 | 2010-09-29 | 北京邮电大学 | 具有分布式网络架构的实时数据分发***及其工作方法 |
CN103412883A (zh) * | 2013-07-17 | 2013-11-27 | 中国人民解放军国防科学技术大学 | 基于p2p技术的语义智能信息发布订阅方法 |
CN103888517A (zh) * | 2014-03-04 | 2014-06-25 | 上海交通大学 | 用于发布订阅***的实现历史事件订阅的缓存方法 |
CN103916442A (zh) * | 2013-01-07 | 2014-07-09 | 阿里巴巴集团控股有限公司 | 消息推送实现方法、移动终端及消息推送*** |
WO2015088416A1 (en) * | 2013-12-11 | 2015-06-18 | Telefonaktiebolaget L M Ericsson (Publ) | Proxy interception |
CN106933989A (zh) * | 2017-02-22 | 2017-07-07 | 深圳云视融通科技有限公司 | 一种网上发布信息***的方法 |
CN108197138A (zh) * | 2017-11-21 | 2018-06-22 | 北京邮电大学 | 在发布/订阅***中发布信息匹配订阅信息的方法及*** |
CN110263282A (zh) * | 2019-06-19 | 2019-09-20 | 南京邮电大学 | 一种基于Kafka的内容发布订阅通信模式的设计方法 |
CN111770172A (zh) * | 2020-06-29 | 2020-10-13 | 深圳前海微众银行股份有限公司 | 消息中间件消费代理方法、装置、代理服务器及存储介质 |
CN112953940A (zh) * | 2021-02-20 | 2021-06-11 | 同济大学 | 基于混合加密算法和关键属性过滤的安全发布订阅***及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7672275B2 (en) * | 2002-07-08 | 2010-03-02 | Precache, Inc. | Caching with selective multicasting in a publish-subscribe network |
US7293038B2 (en) * | 2003-02-25 | 2007-11-06 | Bea Systems, Inc. | Systems and methods for client-side filtering of subscribed messages |
US9413702B2 (en) * | 2010-10-29 | 2016-08-09 | Nokia Technologies Oy | Method and apparatus for distributing published messages |
US20170164020A1 (en) * | 2015-12-08 | 2017-06-08 | Le Holdings (Beijing) Co., Ltd. | Content delivery method for content delivery network platform and scheduling proxy server |
-
2021
- 2021-12-14 CN CN202111524916.3A patent/CN114844948B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1239252A (zh) * | 1998-05-27 | 1999-12-22 | 国际商业机器公司 | 发布/订阅数据处理设备、方法和计算机程序产品 |
CN101848236A (zh) * | 2010-05-06 | 2010-09-29 | 北京邮电大学 | 具有分布式网络架构的实时数据分发***及其工作方法 |
CN103916442A (zh) * | 2013-01-07 | 2014-07-09 | 阿里巴巴集团控股有限公司 | 消息推送实现方法、移动终端及消息推送*** |
CN103412883A (zh) * | 2013-07-17 | 2013-11-27 | 中国人民解放军国防科学技术大学 | 基于p2p技术的语义智能信息发布订阅方法 |
WO2015088416A1 (en) * | 2013-12-11 | 2015-06-18 | Telefonaktiebolaget L M Ericsson (Publ) | Proxy interception |
CN103888517A (zh) * | 2014-03-04 | 2014-06-25 | 上海交通大学 | 用于发布订阅***的实现历史事件订阅的缓存方法 |
CN106933989A (zh) * | 2017-02-22 | 2017-07-07 | 深圳云视融通科技有限公司 | 一种网上发布信息***的方法 |
CN108197138A (zh) * | 2017-11-21 | 2018-06-22 | 北京邮电大学 | 在发布/订阅***中发布信息匹配订阅信息的方法及*** |
CN110263282A (zh) * | 2019-06-19 | 2019-09-20 | 南京邮电大学 | 一种基于Kafka的内容发布订阅通信模式的设计方法 |
CN111770172A (zh) * | 2020-06-29 | 2020-10-13 | 深圳前海微众银行股份有限公司 | 消息中间件消费代理方法、装置、代理服务器及存储介质 |
CN112953940A (zh) * | 2021-02-20 | 2021-06-11 | 同济大学 | 基于混合加密算法和关键属性过滤的安全发布订阅***及方法 |
Non-Patent Citations (3)
Title |
---|
MQTT数据交换协议的分析与优化;李娜;陈福;朱建明;黄勇峰;张艳梅;;网络空间安全(09);全文 * |
Securing restricted publisher-subscriber communications in smart grid substations;Neetesh Saxena; Santiago Grijalva; Bong Jun Choi;2018 10th International Conference on Communication Systems & Networks (COMSNETS);20180402;全文 * |
一种基于Nginx的UDP反向代理服务器数据转发策略;郭大伟;张伟;姜晓艳;;北京信息科技大学学报(自然科学版);20191215(06);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114844948A (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101826115B1 (ko) | 그래프 데이터용 분산형 캐시 | |
CN103260050B (zh) | 基于Google App Engine云平台的视频点播*** | |
EP2885731B1 (en) | Search infrastructure | |
US8065365B2 (en) | Grouping event notifications in a database system | |
CN106919654A (zh) | 一种基于Nginx的高可用MySQL数据库的实现方法 | |
CN107770259A (zh) | 基于文件热度和节点负载的副本数量动态调整方法 | |
WO2008151016A2 (en) | Transporting table valued parameter over tabular data stream protocol | |
Ma et al. | An improved web cache replacement algorithm based on weighting and cost | |
US20140108508A1 (en) | Cloud subscription download method and system, and computer storage medium | |
CN111522665A (zh) | 一种基于zookeeper实现Influxdb-proxy的高可用及负载均衡方法 | |
CN105989065B (zh) | 一种闪拍数据处理方法及*** | |
Chandramouli et al. | End-to-end support for joins in large-scale publish/subscribe systems | |
CN114844948B (zh) | 一种实时分发***的客户端缓存优化方法及装置 | |
Burns et al. | Efficient data distribution in a web server farm | |
Chandramouli et al. | Value-based notification conditions in large-scale publish/subscribe systems? | |
Liu et al. | Distributed caching of multi-dimensional data in mobile environments | |
Hu et al. | Research and implementation of campus information push system based on WebSocket | |
Pu et al. | Practical implementation of an OPC UA multi-server aggregation and management architecture for IIoT | |
CN110109871A (zh) | 一种跨站点的高能物理数据访问方法及*** | |
US20060129522A1 (en) | Subscription service for access to distributed cell-oriented data systems | |
Prabhavathy et al. | Energy efficient xpath query processing on wireless xml streaming data | |
Hiranpongsin et al. | Integration of recommender system for Web cache management | |
Zhang et al. | Multi-attribute probability caching algorithm in named data network | |
Liu et al. | Research and Improvement of Mosquitto Theme Subscription Mechanism | |
Huang et al. | Ceds: Center-edge collaborative data service for mobile iot data management |
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 |