CN106933989A - 一种网上发布信息***的方法 - Google Patents
一种网上发布信息***的方法 Download PDFInfo
- Publication number
- CN106933989A CN106933989A CN201710094319.9A CN201710094319A CN106933989A CN 106933989 A CN106933989 A CN 106933989A CN 201710094319 A CN201710094319 A CN 201710094319A CN 106933989 A CN106933989 A CN 106933989A
- Authority
- CN
- China
- Prior art keywords
- message
- node
- subscription
- metaevent
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及一种网上发布信息***的方法,网上发布信息***包含多个发布客户、代理网络、发布/订阅模块、多个订阅客户以及管理集群;发布/订阅模块包含消息存储器、消息分段器、用户订阅管理器、消息分发器;所述方法包含***相关的关键过程;本发明为了解决计算机理解信息资源的问题,将语义技术与发布订阅***有机地结合,在语义层的角度上来理解发布客户与订阅客户的本意,使发布的事件能更准确地匹配订阅者的要求,从而提高订阅与发布匹配的质量,提高整个***的性能。
Description
技术领域
本发明涉及计算机网络领域,涉及一种网上发布信息***的方法。
背景技术
随着互联网成为无处不在的计算和存储服务平台,如何把数据源产生的数据快速地、准确地分发至具有不同兴趣的大规模用户群体是当前亟需解决的关键技术问题。基于内容的发布/订阅因其松耦合的通讯模式适用于大规模分布式***且为用户提供了强大的语义表达能力,正成为实现数据分发的主要模式。
为了实现基于内容的弹性可扩展发布/订阅服务,当前面临的技术挑战主要包括以下两个方面:用事件来表示发布消息以及订阅消息,事件匹配技术能够有效地过滤出对事件不感兴趣的订阅者,从而降低数据分发延迟;高效的事件路由技术是保证数据分发实时性的重要因素,然而,在大数据块分发中上传带宽存在着性能瓶颈。
发明内容
有鉴于此,本发明提供一种解决或部分解决上述问题的一种网上发布信息***的方法。
为达到上述技术方案的效果,本发明的技术方案为:一种网上发布信息***的方法,包含以下步骤:
网上发布信息***包含多个发布客户、代理网络、发布/订阅模块、多个订阅客户以及管理集群;发布/订阅模块包含消息存储器、消息分段器、用户订阅管理器、消息分发器;方法包含***相关的关键过程;
代理网络由多个子网络组成,子网络是一个主节点与节点构成的网络,每个节点被分为二层,第一层存储节点的优先级,第二层为临时存储区,在临时存储区中存储订阅的分类关键词、子分类号以及一个计数器,按节点的优先级的先后将节点进行连接,优先级高的节点先连接,使用虚拟链路进行连接,虚拟链路能够随时断开并且随时在节点之间建立连接关系;每个子网络为表示的是订阅的一个类别,在主节点中存储订阅的一个类别的关键词以及分类号,而把每一个类别的订阅的关键词分配到每个节点中,节点的优先级为分配订阅的关键词时分配的顺序的依据;
关键过程包含发布客户发送发布消息给发布/订阅模块的过程,具体如下:
在多个发布客户将发布消息传输给发布/订阅模块之前,对发布消息进行二次搜索,一次搜索为搜索发布消息中是否存在某一类订阅的关键词,在搜索的过程中对主节点进行调用,当发现多个关键词符合的主节点,关键词符合越多的主节点作为满足条件的主节点,并将分类号分配给发布消息,满足条件的主节点所在的子网络胜出,将发布消息广播给其下的所有节点,所有节点按优先级进行匹配,与订阅的分类关键词进行匹配,匹配上的节点中存储的计数器加一,并在分类号的基础上再分配子分类号,计数器用于记录节点被匹配的次数,将发布消息连同分类号以及子分类号传送给发布/订阅模块;对满足条件的主节点所在的子网络中的节点进行实时地调整优先级,调整的依据为计数器中的数字大小,数字越大,节点的优先级越高,将匹配上的节点的优先级进行调整,如果为第一次调整,直接***到满足条件的主节点所在的子网络的第一个节点之前,其余情况下,与前后相邻的节点的计数器的数字进行比较,采取二分法逐渐缩小***位置的范围,将匹配上的节点***,使计数器中数字大的节点排列在子网络中前面的位置;
关键过程还包含如何建立***的数据模型;
***的数据模型包含消息的表示逻辑与存储格式,首先,将消息的类型分为发布消息与订阅消息两种,发布消息包含需要发布的标题以及发布的内容,订阅消息包含订阅客户需要订阅的内容;
发布消息与订阅消息本身都用同一种表示逻辑表示,表示逻辑由元事件的逻辑与复杂事件的逻辑组成,复杂事件的逻辑由元事件的逻辑组成,元事件W的逻辑如下:
W=(e,n,b,j,P,T,l)
其中,e为元事件的表示变量,n为元事件的声明,用于表示元事件发生的前提条件,前提条件用一阶逻辑表示,b为元事件的二进制编码,用于区别于其他元事件,j在元事件描述的为发布消息时,为节点的分类号以及子分类号,在元事件为订阅消息时,为订阅客户指定的过滤条件,P为时间着色Petri网的层次模型,由一个由多个时间着色Petri网组成,用于从逻辑上具体描述元事件,T为元事件的时间戳,用于表示元事件的起始时间与结束时间,l为元事件的持续时间区间;
复杂事件为在元事件的基础上进行操作组合而成,表示如下:
F=(o(W1,···,Wn),T1,l1)
其中,W1,···,Wn为元事件,o为操作符,T1为复杂事件的时间戳,用于表示复杂事件的起始时间与结束时间,复杂事件的起始时间为元事件W1,···,Wn的起始时间的最大值,复杂事件的结束时间为元事件W1,···,Wn的结束时间的最小值,l1为复杂事件的持续时间区间,为元事件W1,···,Wn的持续时间区间的最小值;操作符的逻辑为||t、-、=,W1||tW2表示元事件W1与元事件W2有且有一个发生,并且发生的时间限定在时间周期t内,如果不限定发生的时间,t=∞;表示元事件W1与元事件W2两者都发生,并且发生的时间限定在时间周期t1,如果不限定发生的时间,t1=∞,如果两个元事件同时发生,t1=0;-W1表示元事件W1不会发生;表示元事件W1发生后,经过时间t2后元事件W2再发生,如果元事件W1与元事件W2紧邻发生,t2=0;表示元事件W1发生的期间元事件W2发生,两者发生的时间差为t3;W1=W2表示元事件W1与元事件W2相等,此种情况下两者的二进制编码相等;
在消息存储器中,发布消息以存储格式的形式存储;
存储格式以索引结构的形式存储,索引结构包含一个哈希映射以及连接表,哈希映射包含指针以及一个指针格,指针格中为分类号以及子分类号,指针指向一个连接表,连接表中包含在分类号以及子分类号下的元事件与复杂事件,指针为函数映射,使用哈希函数计算分类号以及子分类号与元事件与复杂事件之间函数映射关系;存储格式的存储顺序为以时间戳的长短的顺序排序;
消息分段器对消息存储器中的索引结构进行处理,将索引结构中的元事件以及复杂事件提取,为每一个分类号以及子分类号下的元事件以及复杂事件按起始时间排列,以圆点表示,并且首尾以实心线连接,构成连续曲线图,如果圆点表示的为元事件,实心线上标注以元事件的二进制编码,如果圆点表示的为复杂事件,实心线上标注以构成复杂事件的元事件以及操作符,在连续曲线图上全部划分以一厘米的边长的正方形,作为曲线格,对于每个曲线格内,都存在一个非封闭不规则多边形,计算每个非封闭不规则多边形凸出的形状的中心点的坐标值,坐标值的计算规则为在曲线格内建立坐标,以正方形的左下角的边角点为坐标原点,连接坐标原点的曲线格的下边长以及左边长为竖坐标轴以及横坐标轴,以非封闭不规则多边形凸出的形状的中心点的坐标值作为计算对象,坐标值将横坐标与竖坐标分开计算,建立消息分段器的分组器,以作为分组的容器,第i个分组的容器的初始变量Ai=0,其中,i=1,···,n,以作为分组的容器的编号,n为任意制定的偶数,计算所有非封闭不规则多边形凸出的形状的中心点的坐标值的平均值E以及其与中心点的坐标值的平均值的绝对值差W,从i=1开始,依次将Ai加上所在曲线格上的非封闭不规则多边形凸出的形状的中心点的坐标值的平均值与中心点的坐标值的平均值的绝对值差,Ai的值一直增加,即Ai+1=Ai+Ai+1,计算连续曲线图的中位比较值,中位比较值取将所有中心点的坐标值的和减所有去中心点的坐标值的绝对值差的和的平均值,将Ai的值依次与中位比较值进行比较,找到与中位比较值最接近的Ai的值,以此为界限,将Ai分为两组,对两组的数据分别求二级中位比较值,二级中位比较值取分组内的所有中心点的坐标值的和减所有去中心点的坐标值的绝对值差的和的平均值,继续找到与二级中位比较值最接近的Ai的值,将两组的数据分为4组,循环执行上述过程,直到最终分为n组,n组按每组数据的数量大小排序,分别投入分组的容器,将每组分组的容器的数据分解,即将其分解为代表的曲线格中的元事件以及复杂事件,得到分为n组的元事件以及复杂事件;
订阅客户将订阅消息发送到发布/订阅模块,在发送的过程中,当出现冲突,即多个订阅消息同时发送,造成传输的堵塞,管理集群选举订阅客户的管理者,订阅客户的管理者的指定具有随意性,即每次订阅消息的发送时,制定的订阅客户的管理者不一定相同,订阅客户的管理者从发送订阅消息的订阅客户中选取,在管理集群中存放一个问题库,问题库中的问题以及答案从外部数据库提前导入,并根据分类号进行分类,根据订阅消息的分类号选定分类的问题库,随机选取一个问题发送给发送订阅消息的订阅客户,优先答中问题答案的订阅客户选取为订阅问题的管理者,选取的订阅问题的管理者作为此次订阅消息的发送的管理员,具有发送的最高优先级,当同时发送订阅消息的订阅客户少于3名时,订阅问题的管理者直接指定同时发送订阅消息的订阅客户的接收的顺序,当同时发送订阅消息的订阅客户多于3名时,具有指定优先被接收订阅消息的三名订阅客户的权利,在同时发送订阅消息的订阅客户中除去优先被接收订阅消息的三名订阅客户以及订阅问题的管理者后,继续订阅客户的管理者的指定,循环此过程,直到所有同时发送订阅消息的订阅客户都被指定优先级,从而根据其接收订阅消息;
用户订阅管理器将n组的元事件以及复杂事件进行提取,订阅消息经由网络传输层传输给用户订阅管理器,用户订阅管理器负责匹配订阅消息与发布消息,用户订阅管理器中包含调用单元、多个消息匹配单元,调用单元负责调用消息匹配单元进行具体匹配的过程,多个消息匹配单元中都装有封装好的匹配类,通过实例化匹配类进行具体匹配的过程的执行,在消息匹配单元与调用单元之间设置抽象匹配服务接口,不同的抽象匹配服务接口用于注入不同的实例化匹配类,注入的过程调用了可运行的脚本代码,可运行的脚本代码依赖于动态数据的输入,动态数据为分类号以及子分类号的参数化,在运行过程中,由发布客户和订阅客户订阅消息与发布消息分类号以及主题决定执行哪个抽象匹配服务接口,从而实现了发布客户和订阅客户之间的双向控制;
消息分发器负责将匹配好的订阅消息与发布消息,建立匹配对,将匹配对映射到一个圆形结点空间,圆形结点空间为一个圆环,圆环上均匀分布多个结点,按起始时间的顺序将订阅消息与发布消息分配给各个结点,结点包含黑色结点与白色结点,黑色结点代表订阅消息,白色结点代表发布消息,按匹配对将黑色结点与白色结点连接起来,即如果两者存在匹配关系,将两者连接,建立逻辑表达合取范式,黑色结点与白色结点有可能出现一对多的情况,对应的多个结点为合取的子式,合取的子式等于对应的单个结点,为了避免多个白色结点被多次分派同一个黑色结点,当订阅消息在用户订阅管理器中进行匹配后,作为黑色结点加入圆形结点空间,每个新加入的黑色结点被广播至其他个匹配的白色结点,匹配的白色结点的数量代表匹配的规模,黑色结点优先选择在同一分类号下的在时间戳范围内白色结点,选择的白色结点的时间戳与黑色结点的时间戳必然存在最大范围的重叠,选择的白色结点代表分配给黑色结点的发布消息,当一个黑色结点已经被分配过,则不需要再次分配,将黑色结点从合取范式以及圆形结点空间中剔除,定时检查范式,如果有结点的时间戳的范围已过,将该结点从圆形结点空间以及合取范式中剔除,如果此结点属于等号边的唯一子式,将整个合取范式都删除,被分配的白色结点代表的发布消息被通过网络传输层发送给用户订阅者;
网络传输层是由消息中转站组成的消息树,在消息中转站都保存着一个动态表,当消息中转站接收到一个发布消息或者订阅消息后,到动态表中查找是否有与该发布消息或者订阅消息匹配的消息订阅者,消息订阅者包含需要发送订阅消息的订阅客户以及接收发布消息的订阅客户,如果动态表中存在消息订阅者,消息中转站就把相应的发布消息或者订阅消息转发到对应的消息订阅者,在网上发布信息***的运行过程中,将消息中转站分为主消息中转站以及次消息中转站,主消息中转站为消息树的根,所有次消息中转站的中的发布消息或订阅消息都经过主消息中转站,主消息中转站不存放动态表,在***运行中自动建立起动态表,除了主消息中转站之外的其他消息中转站只能向消息树中连接的上层的次消息中转站发送消息,当消息树的叶子上的消息中转站接收到需要中转一个发布消息或者订阅消息时,将发送订阅消息的订阅客户或接收发布消息的订阅客户记录到动态表中,并且生成中转申请,以记录发布消息或者订阅消息的发送方以及接收方、组成该消息的元消息或复杂消息,将中转申请层层递交给上一层的次消息中转站,直到递交到主消息中转站截止,由主消息中转站负责消息的传送。
本发明的有益成果是:本发明为了解决计算机理解信息资源的问题,将语义技术与发布订阅***有机地结合,在语义层的角度上来理解发布客户与订阅客户的本意,使发布的事件能更准确地匹配订阅者的要求,从而提高订阅与发布匹配的质量,提高整个***的性能。
附图说明
图1为本发明的网上发布信息***的结构图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合实施例以及附图,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,能实现同样功能的产品属于等同替换和改进,均包含在本发明的保护范围之内。具体方法如下:
实施例1:网上发布信息***是基于网络技术上的一种信息交互***。目前,基于网络的应用架构基本上是使用客户端/服务器(C/S)的模式。而在这种架构中,采用了两个平等自治的机器,当一方需要另外一方的服务时,请求服务的一方作为客户端向提供服务的服务端发起一个请求,服务端响应这个请求并把处理结果返回给客户端。即使这个任务的执行并不需要以前一个请求的结果为前提,客户端在得到服务端的响应结果之前需要一直处于等待状态,无法继续往下执行其他的任务。这种C/S模型比较简单,并且可以满足大部分的应用要求,可以降低需要协同工作的不同***之间的耦合度,提高各个***之间的内聚度。但是这种模型已经解决不了现实的问题。由于网络计算环境的特殊性,具有规模大、分散控制、自治性、动态性、松散耦合等特征。前面几种技术通过各种手段得到了有效解决,但是没有解决使用松散耦合进行信息交互的问题。松散耦合要求从空间上、时间上、控制流上都达到规定的目标。而发布/订阅***解决了这个问题,因此,本发明采用发布/订阅***作为技术的根本。
发布/订阅***是一种使用者采用了“发布/订阅”的方式实现交互的中间件***,通常由用户(Client)和事件通知服务(Notification Service)组成。用户通常分为两种:信息的生产者通常称为发布者(Publisher),信息的消费者通常称为订阅者(Subscriber)。信息的发布者和信息的消费者之间交互的信息统称为事件(Event)。事件通知服务也称为事件代理。在发布/订阅***模型中,订阅者可以通过订阅表达对特定事件的兴趣,并注册到事件代理。发布者可以发布事件到事件代理。事件代理是发布者和订阅者联系的桥梁,管理订阅的注册与退订,对事件与订阅进行匹配,并以通知的形式发送满足订阅的事件到相应的订阅者。
信息的生产者和信息的消费者之间通过一个中间件来进行信息的交互。信息的生产者将信息发送给中间件,信息的消费者则向中间件定义一个“订阅条件”,表示对***中的哪些信息感兴趣,而中间件则保证将所发布的信息及时、可靠地传送给所有对之感兴趣的信息的消费者。由于它使得信息的生产者和信息的消费者在空间、时间和控制流三个方面都被完全解决,所以它能够很好地满足大规模、高度动态的网络计算环境的需要。
发布/订阅***最主要的优点是发布者和订阅者之间的松耦合。首先,发布者和订阅者无需关心对方是谁,以及所处的位置,实现了空间上的解耦。其次,发布者和订阅者无需同时处于运行状态,实现了时间上的解耦。此外,发布者无需阻塞来等待订阅者处理消息,订阅者也无需阻塞来等待消息,实现了控制流上的解耦。发布/订阅***还具有以下优点:
1)可扩展性:使用者加入或退出而无需修改***。
2)匿名性:发布者和订阅者无需公开自己的信息。
3)多点通信:一个事件可以同时被发送到多个订阅者。
发布订阅***中主要采用的关键技术包括数据模型、匹配算法和路由协议等。其中,数据模型规定了***所能支持的事件和订阅条件;匹配算法用于当一个事件被发布时,***如何能快速地找到所有对之感兴趣的订阅者;路由协议用于找到一种恰当的路径,将被发布的事件高效、可靠地传送给各订阅者。
本发明在发布端采用了代理网络,代理网络由节点组成;
对传输节点进行分层,传统代理节点划分为轻量级代理节点与节点。传输节点主要面向发布/传输端提供服务,能够管理数据信息、安全信息、信息传输和数据存储等,事件匹配、路由选择、存储分配管理等服务放到节点层,使得与逻辑区分开。增加代理节点可以减少终端的组件配置,实时地响应发布/传输端的需求;设置节点能进一步提高解親性,提高效率,降低路由开销,降低通讯流量,减少数据冗余等。
针对子网络式的发布订阅结构而设定的,在以子网络为单位进行事件交换时,必须要在族内保持数据的统一性和唯一性,而普通的代理节点用于缓存事件,相应终端的服务,难以实时掌握子网络内其它代理节点的信息。节点的设置是发布订阅内部探测信息的一个接口,每次完成信息交换时,必须子网络节点之间先进行事件匹配,然后再通知各自子网络内的节点进行通信。
子网络的内部类似传统的代理节点一样存储发布和订阅主题关键字列表,具体的事件内容则分散存入族内的代理节点中。节点上存储主题关键字有如下优占订阅要求先于发布事件到达子网络中的节点时,事件可以根据订阅请求的来源优先发送到所需的子网络,使代理节点最快地得到感兴趣的事件。
缓存结构的发布订阅发布事件先于订阅要求到达节点时,订阅请求能立刻定位到代理节点存储的实际内容,直接计算发布代理节点与订阅代理节点的数据链路,使订阅者快速得到数据。
节点的兴趣关键字存储在内存数据库中、在数据库索引的支持下,能对整个事件进行多种方式的匹配、检索,得出相关事件的模糊匹配。
本发明的数据模型分为发布消息与订阅消息两种,消息的表示逻辑与存储格式
实施例2:
在所述匹配类中根据分类号建立分类属性,所述分类属性为表示所述分类号的典型词语,典型词语为其中包含的关键谓词,将每一个分类号下的所述n组的所述元事件以及所述复杂事件,建立多个数据群组,每一个所述数据群组代表一个所述分类号,包含n个数据组,所述数据组中的每一个单元中都存放一个所述元事件或所述复杂事件,第一个所述数据组的第一个单元存放所述分类属性,对一个所述订阅消息,首先根据其包含的所述订阅客户指定的过滤条件,进行分类词的提取,为里面包含的关键词,来找到符合的所述数据群组,当所述数据群组中的所述元事件以及所述复杂事件与所述订阅消息表示成的元事件或复杂事件里的参数除了参数j一一都匹配,当匹配,计数器加一;
第一阶段测试订阅的各个谓词,即对比事件中的每个键值对与订阅中对应的谓词是否匹配,并使用计数器计数,第二阶段判断计数结果是否与订阅谓词数目相同,若相同则表示订阅与事件匹配。针对谓词合取形式的订阅提出匹配过程,算法的主要数据结构包括一个位向量和一个簇向量,其中位向量用于映射对应事件的谓词,而簇向量根据订阅的唯一关键词区分,簇向量的每个元素是一个根据订阅谓词数目分组的订阅簇列表,而每个簇列表中存储具体的订阅索引信息。当事件到达后,首先将其映射到谓词索引向量上,然后找到满足该谓词的簇。由于事件是合取表达式,只需在小于等于该事件谓词数目的分组上查询即可。算法采用订阅列存储和处理器预取技术以最大化处理器缓存的时空局部性。另外,算法采用多属性哈希索引以减少订阅谓词查询的比较次数,降低查询时间。
在元事件以及复杂事件中,对其的连接数据结构进行分解,包括PartA和PartB两部分。
PartA包含属性名和事件对标签,对应于三元组中“节点一弧一节点”的连接,其主要结构为:
令事件对链表(NPL):被属性连接的事件对(NP)链表。NP用两个事件标签连接而成的字符串来表示,主体事件标签在前,客体事件标签在后,中间用“一”隔开。
属性哈希表(HMProp):映射属性到节点对,key为属性的uRIRef,value为属性连接的节点对链表(NPL)。
PartB即标识资源节点的类型,对应于包含ulf:tyPe属性的三元组。其主要结构为:
令事件类型链表(NTL):表示事件类型的List。因为一个事件可能会有多个类型,所以使用一个List来保存事件类型信息。
节点类型哈希表(HMNT):映射事件到事件类型信息。key为事件标签名,value为事件类型链表(NTL)。
在网络传输层中由消息中转站组成的消息树,采用了动态表由于可以在***的运行中自动生成,因此动态表的维护就不需要由人工进行干预。在消息树中,如果指定一个消息中转站A1作为主消息中转站,把其他消息中转站到主消息中转站的距离定义为消息中转站到主消息中转站需要经过的消息中心的个数。例如一个消息中转站到主消息中转站不需要经过其他的消息中转站,因此,它到主消息中转站的距离是1,由于另一个消息中转站到达主消息中转站需要经过一个消息中转站,因此到主消息中心的距离就是为2。根据这个规则进行按广度优先生成树,树的根节点就是这个主消息中转站,与其的距离越大则深度也就越深。
这时如果向一个消息中转站发送一个订阅消息ID为50的申请,另一个消息中转站接收到这个申请后,把订阅消息ID为50的申请加入到本消息中转站的动态表中,然后向上层结点也就是父节点发送一个消息ID为50的订阅申请,消息中转站接收到订阅申请后,首先到动态表中查找,如果已经有这个订阅了,则中止以下的操作;否则把这个订阅申请加入到动态表中,然后向发送者发送一个订阅同样的消息的申请;消息中转站接收到申请后,同样的也是先查找动态表,看是否已经订阅了这个消息,否则就把这个订阅加入到动态表中;如果本消息中转站是根节点,因此就不再向其他的消息中转站订阅这个消息,至此整个网络又处于稳定状态。
以上所述仅为本发明之较佳实施例,并非用以限定本发明的权利要求保护范围。同时以上说明,对于相关技术领域的技术人员应可以理解及实施,因此其他基于本发明所揭示内容所完成的等同改变,均应包含在本权利要求书的涵盖范围内。
本发明的有益成果是:本发明为了解决计算机理解信息资源的问题,将语义技术与发布订阅***有机地结合,在语义层的角度上来理解发布客户与订阅客户的本意,使发布的事件能更准确地匹配订阅者的要求,从而提高订阅与发布匹配的质量,提高整个***的性能。
Claims (1)
1.一种网上发布信息***的方法,其特征在于,包含:
所述网上发布信息***包含多个发布客户、代理网络、发布/订阅模块、多个订阅客户以及管理集群;所述发布/订阅模块包含消息存储器、消息分段器、用户订阅管理器、消息分发器;所述方法包含***相关的关键过程;
所述代理网络由多个子网络组成,所述子网络是一个主节点与节点构成的网络,每个所述节点被分为二层,第一层存储所述节点的优先级,第二层为临时存储区,在所述临时存储区中存储订阅的分类关键词、子分类号以及一个计数器,按所述节点的优先级的先后将所述节点进行连接,优先级高的所述节点先连接,使用虚拟链路进行连接,所述虚拟链路能够随时断开并且随时在所述节点之间建立连接关系;每个所述子网络为表示的是订阅的一个类别,在所述主节点中存储订阅的一个类别的关键词以及分类号,而把每一个类别的订阅的关键词分配到每个所述节点中,所述节点的优先级为分配所述订阅的关键词时分配的顺序的依据;
所述关键过程包含所述发布客户发送发布消息给所述发布/订阅模块的过程,具体如下:
在多个所述发布客户将发布消息传输给所述发布/订阅模块之前,对所述发布消息进行二次搜索,一次搜索为搜索所述发布消息中是否存在某一类所述订阅的关键词,在搜索的过程中对所述主节点进行调用,当发现多个所述订阅的关键词符合的所述主节点,所述订阅的关键词符合越多的所述主节点作为满足条件的主节点,并将所述分类号分配给所述发布消息,所述满足条件的主节点所在的子网络胜出,将所述发布消息广播给所述所在的子网络下的所有节点,并且所有节点按其的优先级的从大到小制定匹配的顺序,与所述订阅的分类关键词进行匹配,匹配上的节点中存储的所述计数器加一,并在所述分类号的基础上再分配所述子分类号,所述计数器用于记录所述节点被匹配的次数,将所述发布消息连同所述分类号以及所述子分类号传送给所述发布/订阅模块;对所述满足条件的主节点所在的子网络中的节点进行实时地调整优先级,调整的依据为所述计数器中的数字大小,数字越大,所述节点的优先级越高,对所述匹配上的节点的优先级进行调整,如果为第一次调整,将所述匹配上的节点直接***到所述满足条件的主节点所在的子网络的第一个节点之前,其余情况下,将所述匹配上的节点的计数器的数字与其前后相邻的节点的计数器的数字进行比较,采取二分法逐渐缩小***位置的范围,将所述匹配上的节点***,使计数器中数字大的节点排列在所述所在的子网络中前面的位置;
所述关键过程还包含如何建立***的数据模型;
所述***的数据模型包含消息的表示逻辑与存储格式,首先,将消息的类型分为发布消息与订阅消息两种,所述发布消息包含需要发布的标题以及发布的内容,所述订阅消息包含所述订阅客户需要订阅的内容;
所述发布消息与所述订阅消息本身都用同一种所述表示逻辑表示,所述表示逻辑由元事件的逻辑与复杂事件的逻辑组成,所述复杂事件的逻辑由所述元事件的逻辑组成,所述元事件W的逻辑如下:
W=(e,n,b,j,P,T,l)
其中,e为所述元事件的表示变量,n为所述元事件的声明,用于表示所述元事件发生的前提条件,所述前提条件用一阶逻辑表示,b为所述元事件的二进制编码,用于区别于其他元事件,j在所述元事件描述的为所述发布消息时,为所述节点的分类号以及所述子分类号,在所述元事件为所述订阅消息时,为所述订阅客户指定的过滤条件,P为时间着色Petri网的层次模型,由一个由多个时间着色Petri网组成,用于从逻辑上具体描述所述元事件,T为所述元事件的时间戳,用于表示所述元事件的起始时间与结束时间,l为所述元事件的持续时间区间;
所述复杂事件为在所述元事件的基础上进行操作组合而成,表示如下:
F=(o(W1,···,Wn),T1,l1)
其中,W1,···,Wn为元事件,o为操作符,T1为所述复杂事件的时间戳,用于表示所述复杂事件的起始时间与结束时间,所述复杂事件的起始时间为元事件W1,···,Wn的起始时间的最大值,所述复杂事件的结束时间为元事件W1,···,Wn的结束时间的最小值,l1为所述复杂事件的持续时间区间,为元事件W1,···,Wn的持续时间区间的最小值;所述操作符的逻辑为表示元事件W1与元事件W2有且有一个发生,并且发生的时间限定在时间周期t内,如果不限定发生的时间,t=∞;表示元事件W1与元事件W2两者都发生,并且发生的时间限定在时间周期t1,如果不限定发生的时间,t1=∞,如果两个元事件同时发生,t1=0;表示元事件W1不会发生;表示元事件W1发生后,经过时间t2后元事件W2再发生,如果元事件W1与元事件W2紧邻发生,t2=0;表示元事件W1发生的期间元事件W2发生,两者发生的时间差为t3;W1=W2表示元事件W1与元事件W2相等,此种情况下两者的二进制编码相等;
在消息存储器中,所述发布消息以所述存储格式的形式存储;
所述存储格式以索引结构的形式存储,所述索引结构包含一个哈希映射以及连接表,所述哈希映射包含指针以及一个指针格,所述指针格中为所述分类号以及所述子分类号,所述指针指向一个所述连接表,所述连接表中包含在所述分类号以及所述子分类号下的所述元事件与所述复杂事件,所述指针为函数映射,使用哈希函数计算所述分类号以及所述子分类号与所述元事件与所述复杂事件之间函数映射关系;所述存储格式的存储顺序为以所述时间戳的长短的顺序排序;
所述消息分段器对所述消息存储器中的所述索引结构进行处理,将所述索引结构中的所述元事件以及所述复杂事件提取,为每一个所述分类号以及所述子分类号下的所述元事件以及所述复杂事件按所述起始时间排列,以圆点表示,并且首尾以实心线连接,构成连续曲线图,如果所述圆点表示的为元事件,实心线上标注以所述元事件的二进制编码,如果所述圆点表示的为所述复杂事件,实心线上标注以构成所述复杂事件的所述元事件以及所述操作符,在所述连续曲线图上全部划分以一厘米的边长的正方形,作为曲线格,对于每个所述曲线格内,都存在一个非封闭不规则多边形,计算每个所述非封闭不规则多边形凸出的形状的中心点的坐标值,坐标值的计算规则为在所述曲线格内建立坐标,以所述正方形的左下角的边角点为坐标原点,连接所述坐标原点的所述曲线格的下边长以及左边长为竖坐标轴以及横坐标轴,以所述非封闭不规则多边形凸出的形状的中心点的坐标值作为计算对象,所述坐标值将横坐标与竖坐标分开计算,建立所述消息分段器的分组器,以作为分组的容器,第i个分组的容器的初始变量Ai=0,其中,i=1,···,n,以作为分组的容器的编号,n为任意制定的偶数,计算所有所述非封闭不规则多边形凸出的形状的中心点的坐标值的平均值E以及其与所述中心点的坐标值的平均值的绝对值差W,从i=1开始,依次将Ai加上所在所述曲线格上的非封闭不规则多边形凸出的形状的中心点的坐标值的平均值与所述中心点的坐标值的平均值的绝对值差,Ai的值一直增加,即Ai+1=Ai+Ai+1,计算所述连续曲线图的中位比较值,所述中位比较值取将所有中心点的坐标值的和减所有去所述中心点的坐标值的绝对值差的和的平均值,将Ai的值依次与所述中位比较值进行比较,找到与所述中位比较值最接近的Ai的值,以此为界限,将Ai分为两组,对两组的数据分别求二级中位比较值,所述二级中位比较值取分组内的所有中心点的坐标值的和减所有去所述中心点的坐标值的绝对值差的和的平均值,继续找到与所述二级中位比较值最接近的Ai的值,将两组的数据分为4组,循环执行上述过程,直到最终分为n组,n组按每组数据的数量大小排序,分别投入所述分组的容器,将每组所述分组的容器的数据分解,即将其分解为代表的所述曲线格中的所述元事件以及所述复杂事件,得到分为n组的所述元事件以及所述复杂事件;
所述订阅客户将所述订阅消息发送到所述发布/订阅模块,在发送的过程中,当出现冲突,即多个所述订阅消息同时发送,造成传输的堵塞,所述管理集群选举所述订阅客户的管理者,所述订阅客户的管理者的指定具有随意性,即每次所述订阅消息的发送时,制定的所述订阅客户的管理者不一定相同,所述订阅客户的管理者从发送所述订阅消息的所述订阅客户中选取,在所述管理集群中存放一个问题库,所述问题库中的问题以及答案从外部数据库提前导入,并根据所述分类号进行分类,根据所述订阅消息的所述分类号选定分类的所述问题库,随机选取一个问题发送给所述发送所述订阅消息的所述订阅客户,优先答中问题答案的所述订阅客户被选取为所述订阅客户的管理者,选取的所述订阅客户的管理者作为此次所述订阅消息的发送的管理员,具有发送的最高优先级,当同时发送所述订阅消息的所述订阅客户少于3名时,所述订阅客户的管理者直接指定所述同时发送所述订阅消息的所述订阅客户的接收的顺序,当同时发送所述订阅消息的所述订阅客户多于3名时,具有指定优先被接收订阅消息的三名订阅客户的权利,在同时发送所述订阅消息的所述订阅客户中除去所述优先被接收订阅消息的三名订阅客户以及所述订阅客户的管理者后,继续所述订阅客户的管理者的指定,循环此过程,直到所有同时发送所述订阅消息的所述订阅客户都被指定优先级,从而根据其接收所述订阅消息;
所述用户订阅管理器将所述n组的所述元事件以及所述复杂事件进行提取,所述订阅消息经由所述网络传输层传输给所述用户订阅管理器,所述用户订阅管理器负责匹配所述订阅消息与所述发布消息,所述用户订阅管理器中包含调用单元、多个消息匹配单元,所述调用单元负责调用所述消息匹配单元进行具体匹配的过程,多个所述消息匹配单元中都装有封装好的匹配类,通过实例化所述匹配类进行具体匹配的过程的执行,在所述消息匹配单元与所述调用单元之间设置抽象匹配服务接口,不同的所述抽象匹配服务接口用于注入不同的实例化所述匹配类,注入的过程调用了可运行的脚本代码,所述可运行的脚本代码依赖于动态数据的输入,所述动态数据为所述分类号以及所述子分类号的参数化,在运行过程中,由所述发布客户和所述订阅客户根据所述分类号以及所述发布的标题决定执行哪个所述抽象匹配服务接口,从而实现了所述发布客户和所述订阅客户之间的双向控制;
所述消息分发器负责将匹配好的所述订阅消息与所述发布消息,之间建立匹配对,将匹配对映射到一个圆形结点空间,所述圆形结点空间为一个圆环,圆环上均匀分布多个结点,按起始时间的顺序将所述订阅消息与所述发布消息分配给各个结点,即用结点代替所述订阅消息与所述发布消息,所述结点包含黑色结点与白色结点,所述黑色结点代表所述订阅消息,所述白色结点代表所述发布消息,按所述匹配对将所述黑色结点与所述白色结点连接起来,即如果两者存在匹配关系,将两者连接,根据其建立逻辑表达合取范式,所述黑色结点与所述白色结点有可能出现一对多的情况,对应的多个结点为合取范式的子式,所述合取范式的子式等于对应的单个所述结点,为了避免多个所述白色结点被多次分派同一个所述黑色结点,当所述订阅消息在所述用户订阅管理器中进行匹配后,作为所述黑色结点加入所述圆形结点空间,每个新加入的所述黑色结点被广播至其他个匹配的所述白色结点,匹配的所述白色结点的数量代表匹配的规模,所述黑色结点优先选择在同一分类号下的在所述时间戳范围内所述白色结点,选择的所述白色结点的所述时间戳与所述黑色结点的时间戳必然存在最大范围的重叠,所述选择的所述白色结点代表分配给所述黑色结点的发布消息,当一个所述黑色结点已经被分配过,则不需要再次分配,将所述黑色结点从所述合取范式以及所述圆形结点空间中剔除,定时检查所述合取范式,如果有结点的时间戳的范围已过,将该结点从所述圆形结点空间以及所述合取范式中剔除,如果此结点属于等号边的唯一合取范式的子式,将整个所述合取范式都删除,被分配的所述白色结点代表的所述发布消息被通过所述网络传输层发送给所述订阅客户;
所述网络传输层是由消息中转站组成的消息树,在所述消息中转站都保存着一个动态表,当所述消息中转站接收到一个发布消息或者订阅消息后,到所述动态表中查找是否有与该发布消息或者订阅消息匹配的消息订阅者,所述消息订阅者包含需要发送所述订阅消息的所述订阅客户以及接收所述发布消息的所述订阅客户,如果所述动态表中存在所述消息订阅者,所述消息中转站就把相应的所述发布消息或者所述订阅消息转发到对应的所述消息订阅者,在所述网上发布信息***的运行过程中,将所述消息中转站分为主消息中转站以及次消息中转站,所述主消息中转站为所述消息树的根,所有次消息中转站的中的发布消息或订阅消息都经过所述主消息中转站,所述主消息中转站不存放所述动态表,在所述***运行中自动建立起所述动态表,除了所述主消息中转站之外的其他消息中转站只能向所述消息树中连接的上层的次消息中转站发送消息,当所述消息树的叶子上的消息中转站接收到需要中转一个发布消息或者订阅消息时,将发送此订阅消息的订阅客户或接收此发布消息的订阅客户记录到所述动态表中,并且生成中转申请,以记录此发布消息或者此订阅消息的发送方以及接收方、组成该消息的元事件或复杂事件,将所述中转申请层层递交给上一层的次消息中转站,直到递交到主消息中转站截止,由所述主消息中转站负责消息的传送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710094319.9A CN106933989B (zh) | 2017-02-22 | 2017-02-22 | 一种网上发布信息***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710094319.9A CN106933989B (zh) | 2017-02-22 | 2017-02-22 | 一种网上发布信息***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106933989A true CN106933989A (zh) | 2017-07-07 |
CN106933989B CN106933989B (zh) | 2021-01-05 |
Family
ID=59423604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710094319.9A Expired - Fee Related CN106933989B (zh) | 2017-02-22 | 2017-02-22 | 一种网上发布信息***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106933989B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107590231A (zh) * | 2017-09-06 | 2018-01-16 | 北京大有中城科技有限公司 | 一种通过平台事物链解决实际需要的实现方法 |
CN108197138A (zh) * | 2017-11-21 | 2018-06-22 | 北京邮电大学 | 在发布/订阅***中发布信息匹配订阅信息的方法及*** |
CN108491535A (zh) * | 2018-03-29 | 2018-09-04 | 北京小米移动软件有限公司 | 信息的分类存储方法及装置 |
WO2019075674A1 (zh) * | 2017-10-18 | 2019-04-25 | 华为技术有限公司 | 传输组播报文的方法、网络设备和*** |
CN109739667A (zh) * | 2019-01-10 | 2019-05-10 | 广州华多网络科技有限公司 | 一种消息的消费方法、装置及设备 |
CN109787858A (zh) * | 2018-12-29 | 2019-05-21 | 福建天泉教育科技有限公司 | 一种批量发布服务的方法及终端 |
CN111444451A (zh) * | 2019-01-17 | 2020-07-24 | 珠海金山办公软件有限公司 | 一种文档获取方法、装置、电子设备及可读存储介质 |
CN111669427A (zh) * | 2020-04-20 | 2020-09-15 | 北京邮电大学 | 一种软件定义网络发布订阅***和方法 |
CN112307318A (zh) * | 2019-08-02 | 2021-02-02 | ***通信有限公司政企客户分公司 | 一种内容发布方法、***及装置 |
CN113641139A (zh) * | 2021-08-05 | 2021-11-12 | 珠海格力电器股份有限公司 | 可实现异步编程的***、控制器、控制***、存储介质 |
CN114844948A (zh) * | 2021-12-14 | 2022-08-02 | 合肥哈工轩辕智能科技有限公司 | 一种实时分发***的客户端缓存优化方法及装置 |
CN118233365A (zh) * | 2024-05-23 | 2024-06-21 | 中国电子科技集团公司第十五研究所 | 多点实时数据分发方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060031076A1 (en) * | 2004-08-03 | 2006-02-09 | Hui Lei | Apparatus and method of semantic-based publish-subscribe system |
CN101090337A (zh) * | 2006-06-12 | 2007-12-19 | 国际商业机器公司 | 用于语义网更新的可伸缩分发的***和方法 |
CN101193077A (zh) * | 2006-11-30 | 2008-06-04 | 国际商业机器公司 | 用于订阅匹配的方法和*** |
-
2017
- 2017-02-22 CN CN201710094319.9A patent/CN106933989B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060031076A1 (en) * | 2004-08-03 | 2006-02-09 | Hui Lei | Apparatus and method of semantic-based publish-subscribe system |
CN101090337A (zh) * | 2006-06-12 | 2007-12-19 | 国际商业机器公司 | 用于语义网更新的可伸缩分发的***和方法 |
CN101193077A (zh) * | 2006-11-30 | 2008-06-04 | 国际商业机器公司 | 用于订阅匹配的方法和*** |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107590231A (zh) * | 2017-09-06 | 2018-01-16 | 北京大有中城科技有限公司 | 一种通过平台事物链解决实际需要的实现方法 |
WO2019075674A1 (zh) * | 2017-10-18 | 2019-04-25 | 华为技术有限公司 | 传输组播报文的方法、网络设备和*** |
CN108197138A (zh) * | 2017-11-21 | 2018-06-22 | 北京邮电大学 | 在发布/订阅***中发布信息匹配订阅信息的方法及*** |
CN108491535B (zh) * | 2018-03-29 | 2023-04-07 | 北京小米移动软件有限公司 | 信息的分类存储方法及装置 |
CN108491535A (zh) * | 2018-03-29 | 2018-09-04 | 北京小米移动软件有限公司 | 信息的分类存储方法及装置 |
CN109787858A (zh) * | 2018-12-29 | 2019-05-21 | 福建天泉教育科技有限公司 | 一种批量发布服务的方法及终端 |
CN109739667A (zh) * | 2019-01-10 | 2019-05-10 | 广州华多网络科技有限公司 | 一种消息的消费方法、装置及设备 |
CN111444451B (zh) * | 2019-01-17 | 2024-01-30 | 珠海金山办公软件有限公司 | 一种文档获取方法、装置、电子设备及可读存储介质 |
CN111444451A (zh) * | 2019-01-17 | 2020-07-24 | 珠海金山办公软件有限公司 | 一种文档获取方法、装置、电子设备及可读存储介质 |
CN112307318A (zh) * | 2019-08-02 | 2021-02-02 | ***通信有限公司政企客户分公司 | 一种内容发布方法、***及装置 |
CN112307318B (zh) * | 2019-08-02 | 2024-03-08 | 中移(成都)信息通信科技有限公司 | 一种内容发布方法、***及装置 |
CN111669427A (zh) * | 2020-04-20 | 2020-09-15 | 北京邮电大学 | 一种软件定义网络发布订阅***和方法 |
CN113641139A (zh) * | 2021-08-05 | 2021-11-12 | 珠海格力电器股份有限公司 | 可实现异步编程的***、控制器、控制***、存储介质 |
CN114844948A (zh) * | 2021-12-14 | 2022-08-02 | 合肥哈工轩辕智能科技有限公司 | 一种实时分发***的客户端缓存优化方法及装置 |
CN114844948B (zh) * | 2021-12-14 | 2024-05-31 | 合肥哈工轩辕智能科技有限公司 | 一种实时分发***的客户端缓存优化方法及装置 |
CN118233365A (zh) * | 2024-05-23 | 2024-06-21 | 中国电子科技集团公司第十五研究所 | 多点实时数据分发方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106933989B (zh) | 2021-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106933989A (zh) | 一种网上发布信息***的方法 | |
CN105897946B (zh) | 一种访问地址的获取方法及*** | |
US8849754B2 (en) | Managing topical overlap during publication and subscription | |
CN104796326B (zh) | 一种企业im的群组创建方法及装置 | |
CN101119321B (zh) | 网络流量分类处理方法及网络流量分类处理装置 | |
CN109783229A (zh) | 线程资源分配的方法及装置 | |
CN109286676B (zh) | 一种基于区块链的电力数据安全信息*** | |
CN106713018A (zh) | 消息队列业务数据调度及消息队列的实现方法 | |
US9723045B2 (en) | Communicating tuples in a message | |
CN100534056C (zh) | 一种在网络游戏中用户登录的方法及*** | |
CN109656688B (zh) | 一种实现分布式业务规则的方法、***和服务器 | |
CN109923847A (zh) | 调用链路的发现方法、装置、设备及存储介质 | |
DE102017125649A1 (de) | Verfahren zur Datenkommunikation unter Verwendung von Random-Netzwerkadressen und eine entsprechende Vorrichtung | |
CN110351111A (zh) | 一种订阅处理方法、网络节点及用户数据库 | |
CN108920111A (zh) | 数据共享方法及分布式数据共享*** | |
CN111464493B (zh) | 一种视联网用户权限的管理方法及装置 | |
CN106612335B (zh) | 采用Docker容器实现IoT的信息交换和通信的方法 | |
CN110138652A (zh) | 一种会话更新方法、装置及客户端设备 | |
CN103412883B (zh) | 基于p2p技术的语义智能信息发布订阅方法 | |
CN101902347B (zh) | 匿名会议终端入会方法及设备 | |
CN113094614A (zh) | 一种数据分发方法、***及装置 | |
CN1852145A (zh) | 一种利用关联查询进行鉴权的***及其方法 | |
CN110119396A (zh) | 数据管理方法及相关产品 | |
CN107562858A (zh) | 一种名单管理的方法和装置 | |
CN106326296A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210105 Termination date: 20210222 |
|
CF01 | Termination of patent right due to non-payment of annual fee |