【技术实现步骤摘要】
一种Socket链路受限的发布订阅系统及方法
[0001]本专利技术涉及一种Socket链路受限的发布订阅系统及方法,特别适用于资源受限条件下的嵌入式开发平台。
技术介绍
[0002]发布订阅是一种消息分发的控制机制,通常将发布消息的一端称为发布者,接收消息的一端称为订阅者。与传统的通信方式相比,发布订阅机制的特点在于功能解耦,发布者和订阅者不需要知道系统的拓扑结构就可以正常的收发消息。
[0003]传统的发布订阅系统由若干个节点组成网络,节点可自由选择感兴趣的消息类型,并担任该消息类型的发布者或者订阅者。另外每个节点都会拥有一个全局唯一的Socket链路编号,假如该节点是发布者1,这时同消息类型订阅者2上线时,发布者1便会和订阅者2进行三次握手,产生一个新的Socket链路编号来唯一表示发布者1和订阅者2间的通路。依次类推,每个发布者都会和同消息类型的所有订阅者建立链接。这种方式简化了消息的发送,当发布者发送消息时,只需要遍利自身存储的订阅者Socket链路表依次发送即可,同时能够保证任何节点的异常不会扩散到其他节 ...
【技术保护点】
【技术特征摘要】
1.一种Socket链路受限的发布订阅系统,其特征在于包括N个单机,单机内部建立多个节点,其中一个单机为系统管理器,系统管理器之外的单机以单机为注册单位进行入网申请,入网成功后,单机间通过Socket链路进行网络通信,单机内部节点利用共享内存分发和接收消息,实现消息的传输,N大于等于1。2.根据权利要求1所述的一种Socket链路受限的发布订阅系统,其特征在于系统管理器之外的单机以单机为注册单位进行入网申请的过程如下:S1.1、入网单机向系统管理器发送入网请求消息,之后,开启监听线程,所述入网请求消息包括入网单机信息,具体包括入网单机的IP地址和端口号,所述端口号为入网单机与系统管理器通信的端口号;S1.2、系统管理器收到入网请求消息之后,遍历入网消息链表中已有单机的IP地址和端口号,依次为已有单机生成与入网单机进行通信的端口号,将已有单机的IP地址和新生成的端口号组成入网反馈消息,将入网反馈消息同时发送给对应的已有单机和入网单机,系统管理器处理完成后,将入网单机的IP地址和端口号写入入网消息链表中;S1.3、网络内单机监听到入网反馈消息之后,对入网反馈消息进行解析,如果入网反馈消息中的IP地址与自身IP地址相同,则利用从入网反馈消息中解析出的端口号,开启服务端监听模式,等待其他单机的连接;如果入网反馈消息中的IP地址与自身IP地址不同,则开启客户端模式,将从入网反馈消息中解析出的端口号和IP地址作为服务端,建立对应的SOCKET链路号并进行连接;S1.4、步骤S1.3中两个单机连接成功后,作为客户端的单机将S1.3中产生的SOCKET链路号更新到自身路由表中,而作为服务端的单机将随机产生的SOCKET链路号更新到自身的路由表中,从此,两单机间直接通过SOCKET链路号进行传递。3.根据权利要求2所述的一种Socket链路受限的发布订阅系统,其特征在于新生成的端口号=入网消息链表中已有单机的端口号+该入网请求消息消息编号,消息编号为入网请求消息的唯一标号。4.根据权利要求1所述的一种Socket链路受限的发布订阅系统,其特征在于所述单机内部节点利用共享内存,通过单机执行器给相关订阅节点分发消息的步骤如下:S2.1、单机内部的节点以发布者的身份发布某消息类型的消息时,会将该消息的基本信息作为一条记录写入所属消息类型的待发布消息链表中;所述基本信息包括消息类型、消息首地址、消息长度、时间信息、默认引用次数;所述消息首地址为该消息占用共享内存的首地址;所述时间信息为写入该记录的时刻;所述默认引用次数为0xff;S2.2、单机执行器遍历待发布消息链表,如果待发布消息链表中有新的消息,记录该消息类型,执行步骤S2.3和S2.4;如果待发布消息链表中的消息无需处理,继续遍历;如果待发布消息链表中的消息已经处理完毕或者无效,则转步骤S2.5;S2.3、单机执行器根据步骤2.3中记录的消息类型,查看该消息类型下的订阅者链表,得到本地订阅节点,将消息首地址、消息长度依次抄送到本地订阅节点的接收消息链表中,并累计抄送次数,抄送完成后,将待发布消息链表的引用次数修改为抄送次数;S2.4、单机执行器遍历路由表,由已建立的SOCKET链路,将新消息的消息类型和消息内容通过网络发送给其他单机;S2.5、单机执行器清除该条消息的基本信息记录,释放该消息占有的空间,更新所属消
息类型的待发布消息链表。5.根据权利要求4所述的一种Socket链路受限的发布订阅系统,其特征在于如果引用次数为默认值则存在新的消息,如果待发布消息链表为空或者待发布消息链表中的消息引用次数介于0~默认值之间,则认为待发布消息链表中的消息无需处理;如果待发布消息链表中的消息的时间信息与当前时间超过预设门限则认为待发布消息链表中的消息无效;如果待发布消息链表中消息的引用次数为0,则认为该消息已经处理完毕。6.根据权利要求1所述的一种Socket链路受限的发布订阅系统,其特征在于单机内部节点利用共享内存,通过单机执行器给相...
【专利技术属性】
技术研发人员:刘晨璐,徐建,彭飞,杨建宇,谭彦亮,周育逵,许娜,
申请(专利权)人:北京控制工程研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。