CN112559146B - 一种客户端与数据终端服务端的通讯方法 - Google Patents
一种客户端与数据终端服务端的通讯方法 Download PDFInfo
- Publication number
- CN112559146B CN112559146B CN202011438275.5A CN202011438275A CN112559146B CN 112559146 B CN112559146 B CN 112559146B CN 202011438275 A CN202011438275 A CN 202011438275A CN 112559146 B CN112559146 B CN 112559146B
- Authority
- CN
- China
- Prior art keywords
- data
- data terminal
- processor
- connection
- channel
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/14—Session management
- H04L67/141—Setup of application sessions
-
- 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/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- 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
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种客户端与数据终端服务端的通讯方法,基于Netty的事件驱动的通讯方式,创建类型为同步非阻塞事件线程池;获取数据终端服务端的配置信息,并将所有数据终端服务端信息注册到客户端启动类上。对于连接失败的数据终端服务端,开启一个定时器,重新连接,直到连接成功为止当数据终端服务端向本***发送数据时,依次触发掉线重连处理器、空闲状态处理器、空闲处理器、解码处理器和IO读取处理器,使数据流形成json格式的数据包,对于连接失败的数据终端服务端,重新连接直到连接成功为止。本发明能提高数据通讯效率,减少了客户端在通信过程中开启的线程数目,缓解通讯数据的运行压力。
Description
技术领域
本发明涉及数据通讯技术领域,尤其涉及一种客户端与数据终端服务端的通讯方法。
背景技术
在当前物联网技术已经广泛的应用到多个领域中,物联网技术在这些领域的应用中,数据终端的数据传输技术起到了至关重要的作用。通常由数据终端向服务器端发起请求的这种方式要求为每一个数据终端提前配置服务器的相关信息,才能建立连接。此方式存在维护困难,且若与一台服务器建立连接后难以再改变服务器的缺陷。
针对此缺陷,当前数据终端厂家大多数采取数据终端作为服务端的方式。目前,针对数据终端作为服务端有两种采集方式,第一种是采用轮询的方式,其实质是客户端与数据终端服务端建立短连接进行信息交互,在信息交互完成后与下一个数据终端服务端建立短连接并进行信息交互。这种方式适用于数据终端较少,且对数据的实时性要求不敏感的应用场景。其缺点是在面临海量数据终端服务端时通讯效率低下。基于第一种方式存在的缺陷,相关研究人员提出了采用池技术的通讯方式。其内容为:为每个数据终端服务端建立一个socket连接,并将socket连接放入连接池中,通过心跳校验的方式,使客户端与服务端保持长连接。这种方式最大限度地解决了通过轮询的方式向服务器请求数据的通讯效率,使得客户端与服务端数据的时效性得到保证;但是在面临海量数据终端服务端时,依赖于传统多线程服务的发送、接收、处理模式,线程数量过多时,***任务调度压力大,负载过高,容易发生服务阻塞,中断,数据漏采等情况。
发明内容
本发明提供一种客户端与数据终端服务端的通讯方法,解决现有客户端与服务器的通讯易发生服务阻塞的问题,能提高数据通讯效率,减少了客户端在通信过程中开启的线程数目,缓解通讯数据的运行压力。
为实现以上目的,本发明提供以下技术方案:
一种客户端与数据终端服务端的通讯方法,包括:
在客户端与数据终端服务端之间建立基于Netty的事件驱动的通讯方式;
创建类型为同步非阻塞事件的线程池,用于处理IO通信的读写操作,并确保至少保持2倍CPU核心数量的线程驻留在线程池中;
获取数据终端的配置信息,并保存到数据终端的集合中,以使所述配置信息注册到客户端的启动类上,所述配置信息包括:服务端IP、端口号和数据终端标识;
设置通道处理器并初始化,使数据流经过各个处理器的处理,最终将数据流加工成可识别的、通用的json格式的数据包,所述通道处理器包括:掉线重连处理器、空闲状态处理器、空闲处理器、解码处理器和IO读取处理器;
循环遍历所得到的数据终端的集合,并对数据终端的集合进行预连接操作,若连接失败,则客户端对连接失败的数据终端开启调度线程,按设定时间周期向数据终端服务端发起预连接请求;
若连接成功,则将连接成功的对象放入一个同类型的集合中;
判断数据终端的集合是否遍历完成,若完成则继续,否则返回循环遍历步骤。
优选的,还包括:
将当前线程同步连接通道的关闭事件,通过调用异步连接通道集合的对象对异步连接通道进行阻塞,直到所有的通道被服务端关闭;
在检测到异步连接通道的集合阻塞失败后,放弃线程CPU执行权,直到该线程在此获取到CPU执行权后,再重新阻塞异步连接通道,以防止退出当前线程;
若阻塞成功,则开启一个定时任务线程,周期性地从通道集合中获取通道对象,并通过通道向多个数据终端服务端发送其请求数据的起始地址、请求数据长度及校验码。
优选的,还包括:
在收到数据采集客户端通过通道发送的请求数据后,数据终端服务端响应数据采集客户端请求的数据;
数据采集客户端在获取到数据终端服务端的交互数据后,进行完整性判断并对接收完整的数据做CRC校验,然后将数据和数据对应的终端设备IP地址及采集时间封装成json格式发送到数据库服务器。
优选的,所述设置通道处理器并初始化,包括:
在掉线重连处理器中获取掉线的数据终端的ip、端口信息,重新向数据终端发起连接;
在所述空闲状态处理器中指定写空闲、读空闲的时间;当超出这个时间范围没有收到数据终端的数据、没有向数据终端写入数据,将触发空闲处理器;
在所述空闲处理器中将长时间未收到数据终端服务端的响应数据断开连接,并记录断开连接的数据终端的ip、断开连接的原因和断开时间信息,并触发掉线重连处理器;
通过所述解码处理器对入站数据进行缓冲和数据校验,并将校验通过的数据,根据不同的功能码将数据封装成不同的消息信息;
通过所述读取处理器按设定协议将数据终端发送过来的数据解析为json格式的数据信息。
优选的,所述设置通道处理器并初始化,还包括:
依序对掉线重连处理器、空闲状态处理器、空闲处理器、解码处理器和IO读取处理器进行初始化,并使数据流处理按一层处理完了交给下一层的规则进行,以进入IO读取处理器或者中断整个流程。
优选的,所述对数据终端的集合进行预连接操作,包括:
数据采集客户端向数据终端服务端发起预连接请求,并对发起预连接请求返回的对象添加一个事件监听。
优选的,所述客户端对连接失败的数据终端开启调度线程,定时周期向数据终端服务端发起预连接请求,包括:
对于连接失败的数据终端服务端,开启一个定时器,进行断线重连,直到连接成功为止;
所述断线重连包括:开启一个延时任务线程,传入初始延时时长和待连接的网络地址,尝试重连一次,如果连接成功则终止调用自身,否则开启一个延时任务线程,递归调用该方法本身,并将延时时长所对应的位向右移一位,并且延时最长不超过数据终端服务端等待连接超时时间的8倍。
优选的,所述将连接成功的对象放入一个同类型的集合中,包括:
将连接成功的对象Channel保存到类型为ChannelGroup的集合中,其中Channel为连接通道,ChannelGroup为用于存放采集器的通道集合,并对在线采集器进行广播消息与心跳检测,踢出失去连接的通道。
优选的,所述通过调用异步连接通道集合的对象对异步连接通道进行阻塞,包括:
通过channelGroup获取类型为ChannelGroupFuture的对象,调用该对象将channelFutures阻塞,直到所有的Channel被服务端关闭,以防止所有的数据终端服务端集体掉线,其中,ChannelFuture为异步连接通道类型,ChannelGroupFuture为异步连接通道的集合。
本发明提供一种客户端与数据终端服务端的通讯方法,建立Netty的事件驱动的通讯方式,当数据终端服务端向客户端发送数据时,依次触发通道处理器,使数据流形成json格式的数据包,对于连接失败的数据终端服务端,重新连接直到连接成功为止。解决现有客户端与服务器的通讯易发生服务阻塞的问题,能提高数据通讯效率,减少了客户端在通信过程中开启的线程数目,缓解通讯数据的运行压力。
附图说明
为了更清楚地说明本发明的具体实施例,下面将对实施例中所需要使用的附图作简单地介绍。
图1是本发明提供的一种客户端与数据终端服务端的通讯方法示意图。
图2是本发明提供的一种客户端与数据终端服务端的通讯流程图。
图3是本发明提供的一种客户端与数据终端服务端的通讯的框架。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
针对当前客户端与数据终端服务端易发生服务阻塞的问题,本发明提供一种客户端与数据终端服务端的通讯方法,建立Netty的事件驱动的通讯方式,当数据终端服务端向客户端发送数据时,依次触发通道处理器,使数据流形成json格式的数据包,对于连接失败的数据终端服务端,重新连接直到连接成功为止。解决现有客户端与服务器的通讯易发生服务阻塞的问题,能提高数据通讯效率,减少了客户端在通信过程中开启的线程数目,缓解通讯数据的运行压力。
如图1所示,一种客户端与数据终端服务端的通讯方法,包括以下步骤:
S1:在客户端与数据终端服务端之间建立基于Netty的事件驱动的通讯方式;
S2:创建类型为同步非阻塞事件的线程池,用于处理IO通信的读写操作,并确保至少保持2倍CPU核心数量的线程驻留在线程池中;
S3:获取数据终端的配置信息,并保存到数据终端的集合中,以使所述配置信息注册到客户端的启动类上,所述配置信息包括:服务端IP、端口号和数据终端标识;
S4:设置通道处理器并初始化,使数据流经过各个处理器的处理,最终将数据流加工成可识别的、通用的json格式的数据包,所述通道处理器包括:掉线重连处理器、空闲状态处理器、空闲处理器、解码处理器和IO读取处理器;
S5:循环遍历所得到的数据终端的集合,并对数据终端的集合进行预连接操作,若连接失败,则客户端对连接失败的数据终端开启调度线程,按设定时间周期向数据终端服务端发起预连接请求;
S6:若连接成功,则将连接成功的对象放入一个同类型的集合中;
S7:判断数据终端的集合是否遍历完成,若完成则继续,否则返回循环遍历步骤。
在实际应用中,如图2和图3所示,初始化***环境,***环境的设置包括Netty程序包和Springboot程序包的加载,始化Springboot组件,将ChannelInitializer实现类、ChannelGroup、Bootstrap、NioEventLoopGroup等Netty组件相关注入到spring IoC容器中。创建类型为NioEventLoopGroup的线程池group,用于处理网络读写操作。为进一步充分利用Netty的读写能力,创建线程池策略考虑负载均衡实现方式。初始化线程数量为***CPU的两倍,当检测到线程池可用线程数量小于CPU核心数时,将自动创建两倍CPU核心数量个线程加入到该线程池中,当空闲线程数量与线程池所有线程数量的比值大于0.8时,将销毁一部分线程,同时保证最少保持2倍cup核心数量的线程驻留在线程池中。获取数据终端服务端ip、端口号等配置信息,并将所有数据终端服务端信息注册到Bootstrap客户端启动类上。对于连接失败的数据终端服务端,开启一个定时器,重新连接,直到连接成功为止。开启定时作业任务,向数据终端请求数据,数据采集客户端获取到相关数据后,对获取到的数据进行完整性判断并对接收完整的数据做CRC校验,然后将数据和数据对应的终端设备IP地址及采集时间封装成json格式发送到数据库服务器。其中,CRC校验,循环冗余校验码,是一种常用的、具有检错、纠错能力的校验码。本方法能能提高数据通讯效率,减少了客户端在通信过程中开启的线程数目,缓解通讯数据的运行压力。
该方法还包括:
S8:将当前线程同步连接通道的关闭事件,通过调用异步连接通道集合的对象对异步连接通道进行阻塞,直到所有的通道被服务端关闭;
S9:在检测到异步连接通道的集合阻塞失败后,放弃线程CPU执行权,直到该线程在此获取到CPU执行权后,再重新阻塞异步连接通道,以防止退出当前线程;
S10:若阻塞成功,则开启一个定时任务线程,周期性地从通道集合中获取通道对象,并通过通道向多个数据终端服务端发送其请求数据的起始地址、请求数据长度及校验码。
在实际应用中,获取数据终端服务端ip、端口号等配置信息,并将所有数据终端服务端信息注册到Bootstrap客户端启动类上。对于连接失败的数据终端服务端,开启一个定时器,重新连接,直到连接成功为止。将连接成功的channelFuture对象放到channelGroup集合中。断线重连采用的重连策略为第n次重连间隔时长是第(n-1)次重连的两倍,最长延时时长为数据终端服务端等待连接超时时间SO_TIMEOUT的8倍。关于断线重连机制采用的方法是开启一个延时任务线程,传入初始延时时长和待连接的网络地址,尝试重连一次,如果连接成功则终止调用自身,否则开启一个延时任务线程,递归调用该方法本身,并将延时时长右移移一位,并且延时最长不超过SOCKET的连接超时SO_TIMEOUT的八倍。
该方法还包括:
S11:在收到数据采集客户端通过通道发送的请求数据后,数据终端服务端响应数据采集客户端请求的数据;
S12:数据采集客户端在获取到数据终端服务端的交互数据后,进行完整性判断并对接收完整的数据做CRC校验,然后将数据和数据对应的终端设备IP地址及采集时间封装成json格式发送到数据库服务器。
所述设置通道处理器并初始化,包括:在掉线重连处理器中获取掉线的数据终端的ip、端口信息,重新向数据终端发起连接。在所述空闲状态处理器中指定写空闲、读空闲的时间;当超出这个时间范围没有收到数据终端的数据、没有向数据终端写入数据,将触发空闲处理器。在所述空闲处理器中将长时间未收到数据终端服务端的响应数据断开连接,并记录断开连接的数据终端的ip、断开连接的原因和断开时间信息,并触发掉线重连处理器。通过所述解码处理器对入站数据进行缓冲和数据校验,并将校验通过的数据,根据不同的功能码将数据封装成不同的消息信息。通过所述读取处理器是自定义协议将数据终端发送过来的数据解析为json格式的数据信息。
所述设置通道处理器并初始化,还包括:依序对掉线重连处理器、空闲状态处理器、空闲处理器、解码处理器和IO读取处理器进行初始化,并使数据流处理按一层处理完了交给下一层的规则进行,以进入IO读取处理器或者中断整个流程。
具体地,采用初始化通道初始化器ChannelInitializer,注册掉线重连处理器、空闲状态处理器、空闲处理器、解码处理器和IO读取处理器。掉线重连处理器中获取掉线的数据终端的ip、端口信息,重新向数据终端发起连接。在空闲状态处理器中指定写空闲、读空闲的时间,当超出这个时间范没有收到数据终端的数据、没有向数据终端写入数据,将触发空闲处理器。在空闲处理器中断开与数据终端的连接,触发掉线重连处理器。解码处理器用于通讯可能出现的粘包拆包问题,对入站数据进行缓冲,直到它准备好被处理。IO读取处理器是自定义协议将数据终端发送过来的数据解析为json格式的数据信息。当数据终端服务端向客户端发送数据时,依次触发空闲状态处理器、解码处理器、IO读取处理器。在空闲处理器中将长时间未收到数据终端服务端的响应数据断开连接,并记录断开连接的数据终端的ip、断开连接的原因和断开时间等信息。在解码处理器继承ByteToMessageDecoder,并根据自定义协议实现decode方法,将接收到ByteBuf类型数据进行数据校验,数据校验包括对数据帧头、帧长度、功能码、有效数据位信息的crc校验以及帧尾的校验,将校验通过的数据,根据不同的功能码将数据封装成不同的消息信息;在IO读取处理器中完成对消息解析与存储。
所述对数据终端的集合进行预连接操作,包括:数据采集客户端向数据终端服务端发起预连接请求,并对发起预连接请求返回的对象添加一个事件监听。
进一步,所述客户端对连接失败的数据终端开启调度线程,定时周期向数据终端服务端发起预连接请求,包括:对于连接失败的数据终端服务端,开启一个定时器,进行断线重连,直到连接成功为止。所述断线重连包括:开启一个延时任务线程,传入初始延时时长和待连接的网络地址,尝试重连一次,如果连接成功则终止调用自身,否则开启一个延时任务线程,递归调用该方法本身,并将延时时长所对应的位向右移一位,并且延时最长不超过数据终端服务端等待连接超时时间的8倍。
所述将连接成功的对象放入一个同类型的集合中,包括:将连接成功的对象Channel保存到类型为ChannelGroup的集合中,其中Channel为连接通道,ChannelGroup为用于存放采集器的通道集合,并对在线采集器进行广播消息与心跳检测,踢出失去连接的通道。
所述通过调用异步连接通道集合的对象对异步连接通道进行阻塞,包括:通过channelGroup获取类型为ChannelGroupFuture的对象,调用该对象将channelFutures阻塞,直到所有的Channel被服务端关闭,以防止所有的数据终端服务端集体掉线,其中,ChannelFuture为异步连接通道类型,ChannelGroupFuture为异步连接通道的集合。
具体地,采用sync()方法,将channelFutures阻塞,直到所有的Channel被服务端关闭。为了防止所有的数据终端服务端集体掉线,从而导致channelFutures阻塞失败,使步骤四处于当前线程无限循环状态,在监测到channelFutures阻塞失败后,记录日志,并放弃线程CPU执行权,直到该线程在此获取到CPU执行权后,再重新阻塞channelFutures。
本方法充分利用Netty的读写能力,在数据传输过程中实现线程池的负载均衡,管理数以万计的服务端连接。实现了底层协议与上层传输消息的解耦,将底层消息以json的形式进行分析、展示、存储。考虑了网络抖动、干扰、阻塞、失去连接、现场原因复杂等造成网络的时断时续,实现断线重连,待网络恢复之后服务器尝试将用户连接到上次断开时的状态和数据,最大限度的保证网络通讯的可靠性。
可见,本发明提供一种客户端与数据终端服务端的通讯方法,基于Netty的事件驱动的通讯方式,当数据终端服务端向客户端发送数据时,依次触发通道处理器,使数据流形成json格式的数据包,对于连接失败的数据终端服务端,重新连接直到连接成功为止。解决现有客户端与服务器的通讯易发生服务阻塞的问题,能提高数据通讯效率,减少了客户端在通信过程中开启的线程数目,缓解通讯数据的运行压力。
以上依据图示所示的实施例详细说明了本发明的构造、特征及作用效果,以上所述仅为本发明的较佳实施例,但本发明不以图面所示限定实施范围,凡是依照本发明的构想所作的改变,或修改为等同变化的等效实施例,仍未超出说明书与图示所涵盖的精神时,均应在本发明的保护范围内。
Claims (9)
1.一种客户端与数据终端服务端的通讯方法,其特征在于,包括:
在客户端与数据终端服务端之间建立基于Netty的事件驱动的通讯方式;
创建类型为同步非阻塞事件的线程池,用于处理IO通信的读写操作,并确保至少保持2倍CPU核心数量的线程驻留在线程池中;
获取数据终端的配置信息,并保存到数据终端的集合中,以使所述配置信息注册到客户端的启动类上,所述配置信息包括:服务端IP、端口号和数据终端标识;
设置通道处理器并初始化,使数据流经过各个处理器的处理,最终将数据流加工成可识别的、通用的json格式的数据包,所述通道处理器包括:掉线重连处理器、空闲状态处理器、空闲处理器、解码处理器和IO读取处理器;
循环遍历所得到的数据终端的集合,并对数据终端的集合进行预连接操作,若连接失败,则客户端对连接失败的数据终端开启调度线程,按设定时间周期向数据终端服务端发起预连接请求;
若连接成功,则将连接成功的对象放入一个同类型的集合中;
判断数据终端的集合是否遍历完成,若完成则继续,否则返回循环遍历步骤。
2.根据权利要求1所述的客户端与数据终端服务端的通讯方法,其特征在于,还包括:
将当前线程同步连接通道的关闭事件,通过调用异步连接通道集合的对象对异步连接通道进行阻塞,直到所有的通道被服务端关闭;
在检测到异步连接通道的集合阻塞失败后,放弃线程CPU执行权,直到该线程在此获取到CPU执行权后,再重新阻塞异步连接通道,以防止退出当前线程;
若阻塞成功,则开启一个定时任务线程,周期性地从通道集合中获取通道对象,并通过通道向多个数据终端服务端发送其请求数据的起始地址、请求数据长度及校验码。
3.根据权利要求2所述的客户端与数据终端服务端的通讯方法,其特征在于,还包括:
在收到数据采集客户端通过通道发送的请求数据后,数据终端服务端响应数据采集客户端请求的数据;
数据采集客户端在获取到数据终端服务端的交互数据后,进行完整性判断并对接收完整的数据做CRC校验,然后将数据和数据对应的终端设备IP地址及采集时间封装成json格式发送到数据库服务器。
4.根据权利要求1所述的客户端与数据终端服务端的通讯方法,其特征在于,所述设置通道处理器并初始化,包括:
在掉线重连处理器中获取掉线的数据终端的ip、端口信息,重新向数据终端发起连接;
在所述空闲状态处理器中指定写空闲、读空闲的时间;当超出这个时间范围没有收到数据终端的数据、没有向数据终端写入数据,将触发空闲处理器;
在所述空闲处理器中将长时间未收到数据终端服务端的响应数据断开连接,并记录断开连接的数据终端的ip、断开连接的原因和断开时间信息,并触发掉线重连处理器;
通过所述解码处理器对入站数据进行缓冲和数据校验,并将校验通过的数据,根据不同的功能码将数据封装成不同的消息信息;
通过所述读取处理器按设定协议将数据终端发送过来的数据解析为json格式的数据信息。
5.根据权利要求1所述的客户端与数据终端服务端的通讯方法,其特征在于,所述设置通道处理器并初始化,还包括:
依序对掉线重连处理器、空闲状态处理器、空闲处理器、解码处理器和IO读取处理器进行初始化,并使数据流处理按一层处理完了交给下一层的规则进行,以进入IO读取处理器或者中断整个流程。
6.根据权利要求1所述的客户端与数据终端服务端的通讯方法,其特征在于,所述对数据终端的集合进行预连接操作,包括:
数据采集客户端向数据终端服务端发起预连接请求,并对发起预连接请求返回的对象添加一个事件监听。
7.根据权利要求6所述的客户端与数据终端服务端的通讯方法,其特征在于,所述客户端对连接失败的数据终端开启调度线程,定时周期向数据终端服务端发起预连接请求,包括:
对于连接失败的数据终端服务端,开启一个定时器,进行断线重连,直到连接成功为止;
所述断线重连包括:开启一个延时任务线程,传入初始延时时长和待连接的网络地址,尝试重连一次,如果连接成功则终止调用自身,否则开启一个延时任务线程,递归调用该方法本身,并将延时时长所对应的位向右移一位,并且延时最长不超过数据终端服务端等待连接超时时间的8倍。
8.根据权利要求2所述的客户端与数据终端服务端的通讯方法,其特征在于,所述将连接成功的对象放入一个同类型的集合中,包括:
将连接成功的对象Channel保存到类型为ChannelGroup的集合中,其中Channel为连接通道,ChannelGroup为用于存放采集器的通道集合,并对在线采集器进行广播消息与心跳检测,踢出失去连接的通道。
9.根据权利要求8所述的客户端与数据终端服务端的通讯方法,其特征在于,所述通过调用异步连接通道集合的对象对异步连接通道进行阻塞,包括:
通过channelGroup获取类型为ChannelGroupFuture的对象,调用该对象将channelFutures阻塞,直到所有的Channel被服务端关闭,以防止所有的数据终端服务端集体掉线,其中,ChannelFuture为异步连接通道类型,ChannelGroupFuture为异步连接通道的集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011438275.5A CN112559146B (zh) | 2020-12-07 | 2020-12-07 | 一种客户端与数据终端服务端的通讯方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011438275.5A CN112559146B (zh) | 2020-12-07 | 2020-12-07 | 一种客户端与数据终端服务端的通讯方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559146A CN112559146A (zh) | 2021-03-26 |
CN112559146B true CN112559146B (zh) | 2023-04-18 |
Family
ID=75060481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011438275.5A Active CN112559146B (zh) | 2020-12-07 | 2020-12-07 | 一种客户端与数据终端服务端的通讯方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559146B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114143396B (zh) * | 2021-11-05 | 2023-02-28 | 惠州市德赛西威智能交通技术研究院有限公司 | 一种基于nfc实现车机与手机无线互联方法及*** |
CN115072502B (zh) * | 2022-07-01 | 2023-11-07 | 猫岐智能科技(上海)有限公司 | 电梯终端服务器***及控制方法 |
CN117076257B (zh) * | 2023-09-14 | 2024-03-05 | 研华科技(中国)有限公司 | 一种基于服务器集群的管理方法、管理服务器及管理*** |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102694775A (zh) * | 2011-03-23 | 2012-09-26 | 南京信通科技有限责任公司 | 一种基于异步通讯方式的校园信息机终端验证方法 |
CN103391289A (zh) * | 2013-07-16 | 2013-11-13 | 中船重工(武汉)凌久高科有限公司 | 一种基于完成端口模型的多链路安全通信方法 |
CN106850829A (zh) * | 2017-02-28 | 2017-06-13 | 苏州星熙数据科技有限公司 | 一种基于非阻塞通信的微服务***设计方法 |
CN109408240A (zh) * | 2018-10-31 | 2019-03-01 | 四川长虹电器股份有限公司 | 基于Netty框架的终端设备数据采集*** |
CN111444449A (zh) * | 2018-12-27 | 2020-07-24 | 北京奇虎科技有限公司 | 一种Http请求处理方法及装置 |
CN111683069A (zh) * | 2020-05-28 | 2020-09-18 | 杭州绿度信息技术有限公司 | 一种基于netty框架的自定义通信协议及服务方法 |
CN111722944A (zh) * | 2020-06-15 | 2020-09-29 | 哈工大机器人(合肥)国际创新研究院 | 一种基于nio的airt-ros通信方法及*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10873567B2 (en) * | 2017-06-26 | 2020-12-22 | Open Text Corporation | Systems and methods for providing communications between on-premises servers and remote devices |
-
2020
- 2020-12-07 CN CN202011438275.5A patent/CN112559146B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102694775A (zh) * | 2011-03-23 | 2012-09-26 | 南京信通科技有限责任公司 | 一种基于异步通讯方式的校园信息机终端验证方法 |
CN103391289A (zh) * | 2013-07-16 | 2013-11-13 | 中船重工(武汉)凌久高科有限公司 | 一种基于完成端口模型的多链路安全通信方法 |
CN106850829A (zh) * | 2017-02-28 | 2017-06-13 | 苏州星熙数据科技有限公司 | 一种基于非阻塞通信的微服务***设计方法 |
CN109408240A (zh) * | 2018-10-31 | 2019-03-01 | 四川长虹电器股份有限公司 | 基于Netty框架的终端设备数据采集*** |
CN111444449A (zh) * | 2018-12-27 | 2020-07-24 | 北京奇虎科技有限公司 | 一种Http请求处理方法及装置 |
CN111683069A (zh) * | 2020-05-28 | 2020-09-18 | 杭州绿度信息技术有限公司 | 一种基于netty框架的自定义通信协议及服务方法 |
CN111722944A (zh) * | 2020-06-15 | 2020-09-29 | 哈工大机器人(合肥)国际创新研究院 | 一种基于nio的airt-ros通信方法及*** |
Non-Patent Citations (3)
Title |
---|
一种基于Netty的环保物联网实时双向通信模型研究;庄国强;《郑州师范教育》;20171125;第6卷(第06期);全文 * |
基于Netty和Kafka的IOT终端服务***设计方案;张娜等;《浙江理工大学学报(自然科学版)》;20200102;第43卷(第02期);全文 * |
基于Netty框架实现呼叫中心实时统计***;潘馨;《中国优秀硕士学位论文全文数据库-信息科技辑》;20160415;第2016年卷(第4期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112559146A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112559146B (zh) | 一种客户端与数据终端服务端的通讯方法 | |
US8429288B2 (en) | Massive terminals access of a streaming media server including setting maximum count of file handles allowed to be opened | |
US9015822B2 (en) | Automatic invocation of DTN bundle protocol | |
CN113835902B (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
CN112035276B (zh) | 一种基于java的跨平台可扩展的RPC框架设计方法 | |
JP7344315B2 (ja) | ネットワークベースのサービスのためのfire-and-forgetオフロードメカニズム | |
CN114124929A (zh) | 跨网络的数据处理方法和装置 | |
CN114143387B (zh) | 基于quic的应用层通讯方法、装置、存储介质 | |
CN116471342A (zh) | 一种多物联网设备多协议接入***及方法 | |
US20030154288A1 (en) | Server-client system and data transfer method used in the same system | |
CN114866827B (zh) | 音视频同步的检测方法和装置、存储介质及电子设备 | |
CN114244758B (zh) | 安卓平台的网络诊断方法、存储介质、电子设备及*** | |
CN113422760B (zh) | 数据传输方法、装置、电子装置和存储介质 | |
CN112667359B (zh) | 数据透传方法、电子设备及存储介质 | |
CN111711996B (zh) | 一种tcp通信稳定传输的方法及装置 | |
CN114679435B (zh) | 会话管理***、方法、计算机设备及存储介质 | |
CN116506666A (zh) | 音视频播放方法、装置、设备及可读存储介质 | |
CN115118398B (zh) | 基于以太网的ppp客户端的协议容错性测试方法及*** | |
CN113556268B (zh) | 一种tcping的实现方法 | |
CN113608892A (zh) | 一种异步网络环境下的高并发无锁代理转发实现方法 | |
CN117336213B (zh) | 一种子***监控方法、***及设备 | |
US12052452B2 (en) | Method and apparatus for displaying video image, electronic device and storage medium | |
CN116962512B (zh) | 报文处理方法、设备、存储介质和装置 | |
CN116489536B (zh) | 基于modbusRTU协议通信的高效点位采集方法及装置 | |
CN114679574B (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 |