CN101651698A - 基于nio和io的面向发布订阅系统的传输方法 - Google Patents

基于nio和io的面向发布订阅系统的传输方法 Download PDF

Info

Publication number
CN101651698A
CN101651698A CN200710164757A CN200710164757A CN101651698A CN 101651698 A CN101651698 A CN 101651698A CN 200710164757 A CN200710164757 A CN 200710164757A CN 200710164757 A CN200710164757 A CN 200710164757A CN 101651698 A CN101651698 A CN 101651698A
Authority
CN
China
Prior art keywords
thread
client
datagram
socket
read
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
Application number
CN200710164757A
Other languages
English (en)
Other versions
CN101651698B (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.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
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 Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN2007101647574A priority Critical patent/CN101651698B/zh
Publication of CN101651698A publication Critical patent/CN101651698A/zh
Application granted granted Critical
Publication of CN101651698B publication Critical patent/CN101651698B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明涉及一种基于NIO和IO的面向发布订阅系统的传输方法,在服务端采用NIO,启用唯一的接收socket连接的线程,这个接收线程包含有Selector对象、读线程组和写线程组,Selector对象从客户端捕捉到各种事件,读线程组和写线程组用来接收来自客户端的socket连接以及向客户端写入数据;每个读线程或写线程分别对应一个socket连接,并将每次接收到的socket都封装起来成为一个可读写数据的对象,将其再注册到唯一的Selector对象上,当客户端连接关闭的时,将连接从读写线程中注销,注销后,读写线程则可以绑定新的连接。本发明优点是:基于java的IO和NIO的混合使用,将NIO用在服务端减少线程数量,从而减少资源的消耗,在客户端利用IO与服务端连接,进而大大提高了消息发送的速度。

Description

基于NIO和IO的面向发布订阅系统的传输方法
技术领域
本发明涉及数据传输领域,主要是一种基于NIO和IO的面向发布订阅系统的传输方法。
背景技术
发布/订阅(publish/subscribe,简称pub/sub)系统是一种分布式中间件系统,是随着复杂大规模的网络计算而出现的一种技术,用于为分布式系统中的各参与者提供一种松耦合的通信方式。在大规模、高度动态的分布式系统中,参与者在时间以及空间位置上通常都是动态变化的,比如在出差途中使用掌上电脑等移动设备,频繁的加入和退出网络,因此需要一种松耦合的方式参与消息交互和协同工作。而发布/订阅系统的松耦合的特性,恰能解决这个问题。
如图1所示,一个发布/订阅系统中一般由消息生产者(publisher)、消息消费者(subscriber)和事件通知服务组成。在发布/订阅系统中,消息通常被称为“事件”,消息生产者将“事件”发送给事件通知服务;消息消费者则向事件通知服务发出一个“订阅条件”,表示对系统的哪些事件感兴趣;而事件通知服务则保证将发布的事件及时、可靠地送给所有感兴趣的消息消费者。而发布者和消费者在进行消息交互时,都不需要知道对方的存在,使得它们在时间和空间被完全解耦,从而能够满足大规模、动态的分布式系统的需要。
而在传统的发布/订阅系统中,事件的生产者和消费者之间的传输多采用基于java的老式IO(输入/输出)方式。在这种方式中,服务端将在开始时建立一个监听socket(套接字),socket是主要用来进行客户端和服务器端通讯的工具,当简历一个监听socket后,就等待客户端请求,客户连接后,产生会话,会话完成后,关闭连接;而客户端通过socket对服务端发出连接请求,一旦连接成功,打开会话,会话完成,关闭socket。
在这种传输系统中,系统的瓶颈通常在IO读写方面,在打开一个IO通道后,read()方法将一直等待在端口一边读取字节内容,如果没有内容进来,read()也是一直等待,这会影响我们程序继续做其他事情,那么改进做法就是开设线程,让线程去等待,但是这样做也是相当耗费资源的,尤其是在大规模分布式系统中,如果我们要接受大量的客户端的连接,必须要开设大量的线程,而这将是对资源的严重浪费。
而基于java的NIO(new IO)的出现,则改变了这种现状,使网络传输的协议不再集中在IO读写上。NIO最大的特点有两个:一个是块状读写;另外一个是多路复用技术(multiplex)。第一个特点改变了老式IO中,每次读写只有一个字节(stream)或两个字节(reader)的方式,提高了读写的速度;第二个特点改变了原来读写socket时候阻塞的同步状况,使socket的读写具有异步的功能。
Java NIO非阻塞技术实际是采取Reactor模式,或者说是Observer模式为我们监察IO端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的IO读写,不堵塞了。NIO有一个主要的类Selector,这个类就好像一个观察者,只要我们把需要探知的socketchannel(套接字通道)告诉Selector,我们接着做别的事情,当有事件发生时,他会通知我们,传回一组SelectionKey,我们读取这些Key,就会获得我们刚刚注册过的socketchannel,然后,我们从这个Channel中读取数据,放心,包准能够读到,接着我们可以处理这些数据。
在我们使用NIO的时候,cpu时间多会消耗在Selector的select操作上(NIO的多路复用),而select操作主要调用的是poll函数,这个操作是一个轮询socket的同步操作,它的主要功能就是不断地去查询向该选择器注册的socket,看看有没有可做的操作,如有,则返回,没有,继续不断地轮询。也就说,分配的cpu的时间基本上被消耗在poll上了。
之所以如此,是因为没有东西可以写入或从socket中读取;那么,就应该给“提供读写数据的线程”更多的cpu时间,使得每一次的poll都有可作的操作,使时间耗费在读写socket之上,而不是poll之上。然而,从实际情况中看来,poll线程显然比“提供读写数据的线程(wr线程)”占用了更多的cpu时间,假设他们的优先级相同,也假设操作系统是公平的分配cpu时间,那么它们得到的cpu时间应该是一样的,此时,造成它们占用cpu时间不同的原因就很可能是这样:在相同的时间内,wr线程提供的数据量根本不够poll线程处理,poll线程处理在相同的时间内处理这些数据绰绰有余,那么,poll线程更多的时间就耗费在轮询上了。到这里,我们假设的是这两个线程分配到了相同的时间,所以,即使poll线程大部分时间是在做poll轮询操作,那么所占用的时间最大值也是有限的,不会超过线程分配得到的时间。但是,如果此时尽管wr线程得到了cpu时间,但是它在处理过程中主动放弃cpu(比如执行wait操作),那么,在cpu时间总量相等的情况下,由于poll线程没有执行wait操作,因此,就会得到更多的cpu时间,这样,大部分的cpu时间都给poll的轮询操作了。
如果我们可以如果使wr线程不断的运行,而使poll线程在没有数据的时候放弃cpu时间,就应该可以减少poll线程的轮询操作,而使wr线程得到更多的cpu时间,提供更多的可供读写的数据,提高读写的效率。然而,由于poll轮询操作是一个不间断的过程,是sun公司提供的底层的api,是无法修改的。所以,就要放弃poll操作,也就是要放弃选择器。
发明内容
本发明要解决上述技术所存在的缺陷,提供一种基于NIO和IO的面向发布订阅系统的传输方法。
本发明解决其技术问题所采用的技术方案:这种基于NIO和IO的面向发布订阅系统的传输方法,我们的传输协议在服务端摒弃老式的基于流的IO,而采用了JDK1.4中的NIO,而在客户端仍采用老式的I/O。
在服务端我们启用唯一的接收socket连接的线程,这个接收线程包含有一个Selector对象和一个读线程组和写线程组,Selector对象主要从客户端捕捉到各种事件(比如向服务器端写入数据),读线程组和写线程组用来接收来自客户端的socket连接以及向客户端写入数据,这个Selector对象注册了一个ServerSocketChannel(服务器套接字通道)对象,这个ServerSocketChannel对象用来接收来自客户端的socket连接。每个读线程或写线程分别对应一个socket连接,并将每次接收到的socket都封装起来成为一个可读写数据的SelectableChannel对象,调用java的regist()函数将其再注册到唯一的Selector对象上,当客户端连接关闭的时候,将连接从读写线程中注销,注销后,读写线程则可以绑定新的连接,这样就可以使用固定数目的线程处理任意多的客户端连接。对于选中的用来读写数据的Channel(通道),包括ReadableByteChannel(读通道,用来从客户端读取数据)和WritableByteChannel(写通道,用来向客户端写入数据)进行的操作是非阻塞的,因而所有的线程都可以真正用来发送、接收消息。在客户端连接数量很大的情况下,NIO可以保证线程上下文切换时较小的开销。
而在客户端,因为我们每个客户端一般只有一个到服务端的连接,所以摒弃NIO,采用老式IO操作。
主要过程包括如下步骤:
1)启动服务器端接收SocketChannel连接的接收线程,并启动读、写线程组;
2)客户端进行操作时,打开一个Socket连接到服务器端,服务器端的接收线程开始接收连接,并把接收到的SocketChannel向服务器端的读写线程注册,即将连接的SocketChannel绑定到读写线程上;
3)客户端将要发送的消息作为数据报的一部分,每个数据报格式为数据报头、消息体,其中数据报头包含一个特殊的标志符和表示消息大小的一个整数,而后将数据报加码为二进制流,然后通过Socket调用write()函数将数据报发送到服务器端;
4)服务器端读线程从Socket中读取标志数据报的二进制流,如读取数据为数据报头,则新建一个数据报,并将此流解码为数据报;然后服务器处理此数据报,并生成返回客户端的数据报,利用NIO的WriteableByteChannel,将处理后得到的数据报加码后变为二进制流,发送到客户端;
5)客户端从Socket读取此二进制流,同上解码为数据报,并根据数据报格式判断数据报是否需要客户端处理器进行处理,如果需要处理,则将此数据报进行处理,否则,什么也不做。
按照以上步骤,就完成了一个消息从消息生产者发送到事件通知服务,再从事件通知服务发送到消息订阅者的过程。
本发明有益的效果是:基于java的IO和NIO的混合使用,将NIO用在服务端可以以非阻塞的形式处理连入socket,减少线程数量,从而减少资源的消耗,在客户端利用老式IO与服务端连接,进而大大提高了消息发送的速度,改进了整个系统的性能。对于大规模分布式系统有着重要的意义。
附图说明
图1为发布/订阅系统的概念结构示意图。
图2为本发明的传输协议的整体流程图。
附图标记:⑤在第五步之前,我们应该确定用户名,并且检查连接;接受线程;服务端发报机;
Figure A20071016475700063
客户端发报机;读写线程;
Figure A20071016475700065
客户端处理器;△连接代理;
Figure A20071016475700066
解码器;
Figure A20071016475700067
服务端处理器;
Figure A20071016475700068
数据报对列;□客户端连接代理;
Figure A20071016475700069
客户端读线程;
Figure A200710164757000610
服务端发报服务;
Figure A200710164757000611
客户端发报服务。
具体实施方式
下面结合附图和实施例对本发明作进一步介绍:
图1中,Client2和Client3为消息订阅者,两个客户端向事件通知服务订阅消息,而Client1为消息发布者,负责向事件通知服务发送消息,当事件通知服务接收到消息时,就会向消息订阅者发送其订阅的消息。此时的消息订阅者和消息发布者统称为客户端,而事件通知服务即为服务端。
如图2所示,整个系统由客户端和服务端组成,并启动客户端和服务端各自的操作来完成对消息的整个传输过程。上述各部分具体功能如下:
接收线程:服务器端监视线程,接收客户端连接,并把其注册到相应的读写线程上
服务端发报机:调用连接向服务器端发送数据报。
客户端发报机:向客户端发送数据报。
读写线程:服务端线程,调用连接代理读取客户端数据并将数据写回客户端。
客户端处理器:处理服务器端返回数据报。
连接代理:负责向客户端写入数据报,并读取数据报。
解码器:将二进制流转换为数据报,以及将数据报转换为二进制流。
服务端处理器:在服务器端处理从客户端接收到的数据报。
数据报队列:存储数据报。
客户端连接代理:负责向客户端写入数据报,并读取数据报。
客户端读线程:读取服务端发送的数据报。
服务端发报服务:启动服务端服务,等待客户端连接。
客户端发报服务:启动客户端服务,与服务端建立连接,开始通讯。
整个过程可描述如下:
首先启动服务端服务,这个过程分为2个主要的步骤:
1、启动接收SocketChannel连接的接收线程(图中接收线程);
2、启动处理“读”“写”任务的读写线程(图中读写线程);
在步骤1中,服务器的启动可以根据设定参数来确定同时启动读写线程数目,并只启动一个接收线程来接收客户端的连接。其中读写线程里维持一个链表,用来存放接收到的客户端连接。
当服务端启动以后,服务端就会有一个接收线程监听来自客户端的socket连接,一旦有来自客户端的socket连接,则读、写线程就会开始工作,即通过channel读取socket中数据并将数据写入socket。
然后就开始创建客户端到服务端的连接,这个过程分为5个主要的步骤:
1、用户使用通过JNDI查找到的连接工厂来创建连接;
2、根据查找到的连接类型从服务端发报机工厂中获得相应的服务端发报机(如图);
3、调用服务端发报机的方法,从客户端打开一个Socket连接到服务器端;
4、服务器端的接收线程接收连接,并把接收到的SocketChannel向服务器端的读写线程注册;
5、启动客户端的通讯层服务,并客户端读线程(如图)。
在步骤1中,连接工程主要的功能为建立与服务器端的连接,当连接建立好后,才可以发送、接收消息,其中连接可根据配置文件从连接工厂中创建。
在步骤2中,连接类型可从配置文件中得到,而服务端发报机工厂为一创建发报机的对象,发报机则用来向服务端发送消息。
在步骤3中,我们给服务端发报机定义了发送数据报的方法,利用socket定义的接口write()来发送各种数据报。在发送之前,这些数据报都经过了加码处理,变为二进制流发送到服务器端。
在步骤4中,服务器端的接收线程不停查询看是否有新的连接,如果有新的连接,则将此连接加入读写线程的链表中,并唤醒读写线程来处理链表的连接。
步骤5中的通讯层服务启动后才可以读取从服务器端发回的消息,读线程主要用来读取从服务端发回的数据,并交给解码器(如图)处理。
当客户端与服务端建立连接后,就开始消息的收发过程,此过程分为5个主要的步骤:
1、客户端产生消息,把消息封装成数据报中后,调用客户端连接代理(如图)来输出数据报;
2、连接代理把数据报发往服务器端;
3、服务器端的读写线程从Socket中读到数据,把数据提交给解码器解码;
4、解码器解码得到数据报之后,判断这个数据报是否需要提交给服务器端的处理器处理,如果不需要,什么都不做。如果需要,则服务端的处理器会调用相应的方法来处理这个数据报。
5、处理完这个数据报之后,通过连接代理把数据报的回执发往客户端。
步骤1中产生消息主要是根据SUN公司制定的JMS规范中提供的的API(标准用户接口)生产的,根据JMS规范,在生成消息的时候,可以给消息设置属性。生成消息后,根据前面提到的加码方法,将本消息封装为一个数据报。
步骤2中的发送方式主要为调用socket中的标准write()函数。
步骤3中的读写线程读取二进制数据,并将此二进制数据交给解码器解码,将二进制文件还原为一个标准的数据报。
步骤4中,数据报可分为多种类型,有的数据报中封装消息,有的数据报中封装请求。而服务器端的根据不同的数据报类型会有不同的处理方式,比如有的数据报需要需要提取出消息后将消息存储到数据库中。
步骤5中,连接代理会调用解码器将数据报回执解码为二进制数据,通过前面提到的SelectableChannel的write()方法发往客户端。
当服务端发送数据报后,客户端会接收服务端发来的数据,并进行处理:
1、客户端端的读线程从Socket中读到数据,把数据提交给解码器解码;
2、解码器解码得到数据报之后,判断这个数据报是否需要提交给客户端的处理器处理,如果不需要,则什么也不做。如果需要,则客户端的处理器会调用相应的方法来处理这个数据报。
步骤1中,客户端通过socket读取一段二进制数据,并根据解码器将此二进制数据解为相应的数据报。
步骤2中,根据数据报类型进行处理的时候,根据数据报类型的不同采取不同的处理方式。例如:如果数据报中包含有消息,则将此消息提取出来。
这样,就完成了一个消息从消息发布者发送到事件通知服务,再从事件通知服务发送到消息订阅者的过程。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。

Claims (2)

1、一种基于NIO和IO的面向发布订阅系统的传输方法,其特征在于:在服务端采用了JDK1.4中的NIO,启用唯一的接收socket连接的线程,这个接收线程包含有一个Selector对象和一个读线程组和写线程组,Selector对象主要从客户端捕捉到各种事件,读线程组和写线程组用来接收来自客户端的socket连接以及向客户端写入数据,这个Selector对象注册了一个ServerSocketChannel对象,这个ServerSocketChannel对象用来接收来自客户端的socket连接;每个读线程或写线程分别对应一个socket连接,并将每次接收到的socket都封装起来成为一个可读写数据的SelectableChannel对象,调用java的regist()函数将其再注册到唯一的Selector对象上,当客户端连接关闭的时候,将连接从读写线程中注销,注销后,读写线程则可以绑定新的连接;对于选中的用来读写数据的Channel,包括ReadableByteChannel和WritableByteChannel进行的操作是非阻塞的;在客户端采用基于流的IO操作,按照以上步骤,就完成了一个消息从消息生产者发送到事件通知服务,再从事件通知服务发送到消息订阅者的过程。
2、根据权利要求1所述的基于NIO和IO的面向发布订阅系统的传输方法,其特征在于:在客户端采用基于流的IO操作,主要过程包括如下步骤:
1)启动服务器端接收SocketChannel连接的接收线程,并启动读、写线程组;
2)客户端进行操作时,打开一个Socket连接到服务器端,服务器端的接收线程开始接收连接,并把接收到的SocketChannel向服务器端的读写线程注册,即将连接的SocketChannel绑定到读写线程上;
3)客户端将要发送的消息作为数据报的一部分,每个数据报格式为数据报头、消息体,其中数据报头包含一个特殊的标志符和表示消息大小的一个整数,而后将数据报加码为二进制流,然后通过Socket调用write()函数将数据报发送到服务器端;
4)服务器端读线程从Socket中读取标志数据报的二进制流,如读取数据为数据报头,则新建一个数据报,并将此流解码为数据报;然后服务器处理此数据报,并生成返回客户端的数据报,利用NIO的WriteableByteChannel,将处理后得到的数据报加码后变为二进制流,发送到客户端;
5)客户端从Socket读取此二进制流,同上解码为数据报,并根据数据报格式判断数据报是否需要客户端处理器进行处理,如果需要处理,则将此数据报进行处理,否则,什么也不做。
CN2007101647574A 2007-12-12 2007-12-12 基于nio和io的面向发布订阅系统的传输方法 Expired - Fee Related CN101651698B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007101647574A CN101651698B (zh) 2007-12-12 2007-12-12 基于nio和io的面向发布订阅系统的传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007101647574A CN101651698B (zh) 2007-12-12 2007-12-12 基于nio和io的面向发布订阅系统的传输方法

Publications (2)

Publication Number Publication Date
CN101651698A true CN101651698A (zh) 2010-02-17
CN101651698B CN101651698B (zh) 2012-07-25

Family

ID=41673805

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101647574A Expired - Fee Related CN101651698B (zh) 2007-12-12 2007-12-12 基于nio和io的面向发布订阅系统的传输方法

Country Status (1)

Country Link
CN (1) CN101651698B (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102323894A (zh) * 2011-09-08 2012-01-18 上海普元信息技术股份有限公司 企业分布式应用间实现非阻塞方式相互调用的系统及方法
WO2012034431A1 (zh) * 2010-09-17 2012-03-22 深圳市融创天下科技股份有限公司 一种地图显示系统和方法
CN102546791A (zh) * 2011-12-30 2012-07-04 南京师范大学 基于状态机-交互事件模型的分布式服务系统及方法
CN103077246A (zh) * 2013-01-18 2013-05-01 国网电力科学研究院 一种基于Netty的大屏可视化平台数据推送系统
CN103513990A (zh) * 2013-10-11 2014-01-15 安徽科大讯飞信息科技股份有限公司 一种用于分布式处理的高性能通用网络框架的设计方法
CN103516788A (zh) * 2013-09-13 2014-01-15 杭州东方通信软件技术有限公司 一种数据推送方法及其Flash客户端和服务器
CN103699616A (zh) * 2013-12-17 2014-04-02 新浪网技术(中国)有限公司 数据结构创建方法、订阅消息数据发送方法及相关装置
CN103973694A (zh) * 2014-05-14 2014-08-06 北京太一星晨信息技术有限公司 安全套接层协议实体访问非连续内存的方法及接口装置
CN104079398A (zh) * 2013-03-28 2014-10-01 腾讯科技(深圳)有限公司 一种数据通信方法、装置及系统
CN104104663A (zh) * 2013-04-09 2014-10-15 深圳中兴网信科技有限公司 一种分布式调用框架、设备及其数据传输方法
CN104917817A (zh) * 2015-04-23 2015-09-16 四川师范大学 客户端以及数据通信方法
CN106775447A (zh) * 2016-11-14 2017-05-31 成都广达新网科技股份有限公司 一种基于异步非阻塞的磁盘文件读写速率控制方法
CN106850829A (zh) * 2017-02-28 2017-06-13 苏州星熙数据科技有限公司 一种基于非阻塞通信的微服务系统设计方法
CN106936927A (zh) * 2017-04-19 2017-07-07 武汉票据交易中心有限公司 一种基于PC客户端的socket通信方法
CN107147543A (zh) * 2017-04-19 2017-09-08 武汉票据交易中心有限公司 一种面向PC客户端的服务器的socket通信方法
CN108111578A (zh) * 2017-11-28 2018-06-01 国电南瑞科技股份有限公司 基于nio的配电终端数据采集平台接入终端设备的方法
CN108737397A (zh) * 2018-05-09 2018-11-02 烽火通信科技股份有限公司 一种实现路由器中业务与协议栈之间数据交互的方法
CN109302435A (zh) * 2017-07-25 2019-02-01 腾讯科技(深圳)有限公司 消息发布方法、装置、系统、服务器及计算机可读存储介质
CN111722944A (zh) * 2020-06-15 2020-09-29 哈工大机器人(合肥)国际创新研究院 一种基于nio的airt-ros通信方法及系统
CN115022749A (zh) * 2022-06-02 2022-09-06 上海欣诺通信技术股份有限公司 一种接入型光传送网设备的告警接收处理方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1908970A (zh) * 2005-08-03 2007-02-07 北京航空航天大学 分布式的信息发布/订阅系统
CN100525197C (zh) * 2007-04-06 2009-08-05 中国科学院计算技术研究所 一种存在信息的订阅、发布和更新方法

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012034431A1 (zh) * 2010-09-17 2012-03-22 深圳市融创天下科技股份有限公司 一种地图显示系统和方法
CN102323894B (zh) * 2011-09-08 2013-07-10 上海普元信息技术股份有限公司 企业分布式应用间实现非阻塞方式相互调用的系统及方法
CN102323894A (zh) * 2011-09-08 2012-01-18 上海普元信息技术股份有限公司 企业分布式应用间实现非阻塞方式相互调用的系统及方法
CN102546791A (zh) * 2011-12-30 2012-07-04 南京师范大学 基于状态机-交互事件模型的分布式服务系统及方法
CN103077246B (zh) * 2013-01-18 2015-07-29 国网电力科学研究院 一种基于Netty的大屏可视化平台数据推送系统
CN103077246A (zh) * 2013-01-18 2013-05-01 国网电力科学研究院 一种基于Netty的大屏可视化平台数据推送系统
CN104079398A (zh) * 2013-03-28 2014-10-01 腾讯科技(深圳)有限公司 一种数据通信方法、装置及系统
CN104104663B (zh) * 2013-04-09 2018-06-19 深圳中兴网信科技有限公司 一种分布式调用框架、设备及其数据传输方法
CN104104663A (zh) * 2013-04-09 2014-10-15 深圳中兴网信科技有限公司 一种分布式调用框架、设备及其数据传输方法
CN103516788A (zh) * 2013-09-13 2014-01-15 杭州东方通信软件技术有限公司 一种数据推送方法及其Flash客户端和服务器
CN103513990B (zh) * 2013-10-11 2017-01-25 科大讯飞股份有限公司 一种用于分布式处理的高性能通用网络框架的设计方法
CN103513990A (zh) * 2013-10-11 2014-01-15 安徽科大讯飞信息科技股份有限公司 一种用于分布式处理的高性能通用网络框架的设计方法
CN103699616A (zh) * 2013-12-17 2014-04-02 新浪网技术(中国)有限公司 数据结构创建方法、订阅消息数据发送方法及相关装置
CN103973694B (zh) * 2014-05-14 2017-05-10 北京太一星晨信息技术有限公司 安全套接层协议实体访问非连续内存的方法及接口装置
CN103973694A (zh) * 2014-05-14 2014-08-06 北京太一星晨信息技术有限公司 安全套接层协议实体访问非连续内存的方法及接口装置
CN104917817A (zh) * 2015-04-23 2015-09-16 四川师范大学 客户端以及数据通信方法
CN106775447A (zh) * 2016-11-14 2017-05-31 成都广达新网科技股份有限公司 一种基于异步非阻塞的磁盘文件读写速率控制方法
CN106775447B (zh) * 2016-11-14 2020-03-27 成都广达新网科技股份有限公司 一种基于异步非阻塞的磁盘文件读写速率控制方法
CN106850829B (zh) * 2017-02-28 2019-11-22 苏州星熙数据科技有限公司 一种基于非阻塞通信的微服务系统设计方法
CN106850829A (zh) * 2017-02-28 2017-06-13 苏州星熙数据科技有限公司 一种基于非阻塞通信的微服务系统设计方法
CN107147543A (zh) * 2017-04-19 2017-09-08 武汉票据交易中心有限公司 一种面向PC客户端的服务器的socket通信方法
CN106936927A (zh) * 2017-04-19 2017-07-07 武汉票据交易中心有限公司 一种基于PC客户端的socket通信方法
CN109302435A (zh) * 2017-07-25 2019-02-01 腾讯科技(深圳)有限公司 消息发布方法、装置、系统、服务器及计算机可读存储介质
CN108111578A (zh) * 2017-11-28 2018-06-01 国电南瑞科技股份有限公司 基于nio的配电终端数据采集平台接入终端设备的方法
CN108737397A (zh) * 2018-05-09 2018-11-02 烽火通信科技股份有限公司 一种实现路由器中业务与协议栈之间数据交互的方法
CN111722944A (zh) * 2020-06-15 2020-09-29 哈工大机器人(合肥)国际创新研究院 一种基于nio的airt-ros通信方法及系统
CN111722944B (zh) * 2020-06-15 2023-04-18 合肥哈工轩辕智能科技有限公司 一种基于nio的airt-ros通信方法及系统
CN115022749A (zh) * 2022-06-02 2022-09-06 上海欣诺通信技术股份有限公司 一种接入型光传送网设备的告警接收处理方法及系统
CN115022749B (zh) * 2022-06-02 2024-04-02 上海欣诺通信技术股份有限公司 一种接入型光传送网设备的告警接收处理方法及系统

Also Published As

Publication number Publication date
CN101651698B (zh) 2012-07-25

Similar Documents

Publication Publication Date Title
CN101651698B (zh) 基于nio和io的面向发布订阅系统的传输方法
CN105472042B (zh) Web端控制的消息中间件系统及其数据传送方法
CN107800621B (zh) 一种支持多种接入协议的新型智能家居网关
CN101277293B (zh) 一种实现数字家庭设备间多协议互联互通的适配器及其方法
US20040068479A1 (en) Exploiting asynchronous access to database operations
CN104156798B (zh) 企业权威源系统数据实时推送方法
CN110134534B (zh) 基于nio针对大数据分布式系统进行消息处理优化的系统及方法
EP1257909B1 (en) Method and apparatus for improving utilization of a resource on a shared client
CN101232505B (zh) 基于mvc架构的ria分层框架的接口系统
CN103338230B (zh) 一种业务数据的处理方法及系统
CN100450105C (zh) 一种基于java消息服务的同步消息接口实现方法
CN102111419B (zh) 一种基于消息中间件的客户端自动重连方法
US20160165011A1 (en) Request and response decoupling via pluggable transports in a service oriented pipeline architecture for a request response message exchange pattern
CN107231290A (zh) 一种即时通信方法和系统
Alkhawaja et al. Message oriented middleware with QoS support for smart grids
CN103581966A (zh) 一种智能手机实时监测优化配置方法
CN113163016B (zh) 网络长连接服务集群化部署系统及控制流程
CN101315609A (zh) 实现单进程中组件间进行通信的装置和方法
CN101888349A (zh) 一种msn与xmpp互通网关
CN101339520B (zh) 一种将ejb接入企业服务总线的方法
CN116800787A (zh) 一种基于以太网通讯协议的车载通信方法及系统
CN106488269A (zh) 基于第三方应用平台实现对电视设备控制的系统及方法
CN107819831B (zh) 一种基于metaq及mns的通用消息系统
Goel et al. Message-oriented-middleware in a distributed environment
CN109525443A (zh) 分布式前置采集通讯链路的处理方法、装置和计算机设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20100217

Assignee: Zhejiang core flush network Touchplus information Corp

Assignor: Zhejiang University

Contract record no.: 2013330000104

Denomination of invention: Transmission method for publish/subscribe system based on NIO and IO

Granted publication date: 20120725

License type: Common License

Record date: 20130425

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120725

Termination date: 20171212