CN114095537A - 一种物联网应用中基于Netty的海量数据接入方法及系统 - Google Patents

一种物联网应用中基于Netty的海量数据接入方法及系统 Download PDF

Info

Publication number
CN114095537A
CN114095537A CN202111369026.XA CN202111369026A CN114095537A CN 114095537 A CN114095537 A CN 114095537A CN 202111369026 A CN202111369026 A CN 202111369026A CN 114095537 A CN114095537 A CN 114095537A
Authority
CN
China
Prior art keywords
data
message
layer
netty
thread
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
CN202111369026.XA
Other languages
English (en)
Other versions
CN114095537B (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.)
Chongqing University of Post and Telecommunications
Original Assignee
Chongqing University of Post and Telecommunications
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 Chongqing University of Post and Telecommunications filed Critical Chongqing University of Post and Telecommunications
Priority to CN202111369026.XA priority Critical patent/CN114095537B/zh
Publication of CN114095537A publication Critical patent/CN114095537A/zh
Application granted granted Critical
Publication of CN114095537B publication Critical patent/CN114095537B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16YINFORMATION AND COMMUNICATION TECHNOLOGY SPECIALLY ADAPTED FOR THE INTERNET OF THINGS [IoT]
    • G16Y10/00Economic sectors
    • G16Y10/75Information technology; Communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2212/00Encapsulation of packets

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明属于物联网数据接入技术领域,特别涉及一种物联网应用中基于Netty的海量数据接入方法及系统,方法包括当接入层节点的Netty服务端接收到终端报文后,对报文类型进行识别并以线程无锁化调度存入本地阻塞队列中;阻塞队列专属消费线程从队列拉取报文数据,若报文为核心数据,线程调用负载均衡模块选报文数据进行转发;否则线程通过本地Kafka客户端将报文数据发送到kafka转发专属Topic分区;数据解析层节点的Netty服务端接收到或者从Kafka中拉取到报文数据后,将其转换成结构化数据后发送到Kafka业务专属Topic分区;本发明充分发挥Netty可承接数十万终端通信的优势,实现业务解耦。

Description

一种物联网应用中基于Netty的海量数据接入方法及系统
技术领域
本发明属于物联网数据接入技术领域,特别涉及一种物联网应用中基于Netty的海量数据接入方法及系统。
背景技术
物联网作为信息产业浪潮中的重要一环,其技术不断进步持续推进物联网产业的飞升,物联网应用正逐步遍及日常生活中各个领域,如物流运输、健康医疗、智能家居、智慧工业、智慧农业等。因此物联网终端的数量正呈爆炸式增长,如何应对终端带来的海量数据接入处理已是物联网应用行业亟待解决的问题。
针对上述问题,现有研究通常使用基于NIO多路复用技术的网络框架来解决大数据量的设备接入问题,其中Netty框架的使用尤为广泛。Netty的Reactor模型是一种基于事件驱动的线程模型,使一个线程就可以处理多个I/O事件,而主从Reactor模型中,主Reactor负责接收终端请求,从Reactor负责处理具体读写业务的设计模式,更是充分发挥多核CPU以及多线程的优势,极大提高并发网络I/O效率。加之Netty便捷的编解码开发等优势,非常适合解决物联网领域海量数据接入问题。
Netty框架的一大特点就是单机即可承接数十万终端连接,但在目前研究中通常在Netty所在的服务节点即处理终端报文上传也做复杂解析等业务处理,侵占了Netty可利用的服务器资源,无法充分发挥Netty优势。同时仅依赖Netty是无法完全应对海量数据接入问题,突发流量数据接入将会压垮下游业务处理节点。现有的一些设计思路是利用Netty做终端连接并将接收到的数据推送到Kafka中,下游业务节点以适当的速度从Kafka中拉取消息进行消费。Kafka是一款消息队列中间件,通常在大数据领域起到异步,削峰,解耦的作用,应用到物联网数据接入领域可以很好的承接上下游服务。同时通过集群化服务部署提高整体性能是一种趋势。
发明内容
为了充分发挥Netty的优势,提升数据接入并发量,本发明提出一种物联网应用中基于Netty的海量数据接入方法,所述方法包括以下步骤:
S0、对物联网数据接入系统进行微服务分层划分,分为数据接入层、数据解析层、业务处理层,并对系统进行集群部署搭建。
S1、当接入层节点的Netty服务端接收到终端报文后,对报文类型进行识别并以线程无锁化调度存入本地阻塞队列中。
S2、阻塞队列专属消费线程从队列拉取报文数据,若报文为核心数据,执行步骤S3;否则执行S4。
S3、线程调用负载均衡模块选中某一解析层节点将所持报文数据进行转发。
S4、线程通过本地Kafka客户端将报文数据发送到kafka转发专属Topic分区。
S5、解析层节点的Netty服务端接收到或者从Kafka中拉取到报文数据后,对其进行解析,转换成结构化数据后发送到Kafka业务专属Topic分区。
S6、业务处理层从Kafka业务Topic分区中拉取结构化数据进行具体业务处理。
进一步的,对物联网数据接入系统进行微服务分层划分,分为数据接入层、数据解析层、业务处理层与基础支撑层。数据接入层包括终端连接模块、协议识别封装模块、会话保持模块、无锁线程调度以及负载均衡模块;数据解析层包括异构数据解析模块、数据整合封装模块、对外协议更新接口以及解析专用线程池;基础支撑层包括服务注册中心、消息队列、数据持久化、数据缓存;而业务处理层是数据接入系统的上层服务系统,非数据接入系统所属层次,本发明中不涉及业务处理层具体构建,仅描述系统间数据通信方式。
其中接入与解析层各模块作用为:
终端连接模块,用于与终端建立连接并接收其上传报文数据;
协议识别封装模块,用于对报文类型进行验证,识别有效合规报文数据,将其存入本地阻塞队列;
无锁线程调度模块,用于实现Netty I/O线程与转发线程的无锁化调度;
会话保持模块,用于保存终端通信地址在本地内存,实现双向通信;
负载均衡模块,用于从解析层节点中选取某一对应的Channel通道,避免转发向单一解析层节点倾斜;
异构数据解析模块,用于对接收到的报文进行具体解析,将字节数据转化为结构化数据;
数据整合封装模块,用于根据结构化数据所示信息,对其进行进一步业务封装;
协议更新接口,用于第三方服务调用本地接口实现解析协议更新;
解析专用线程池,用于向解析封装模块提供专用线程,实现线程隔离,避免线程阻塞;
进一步的,在数据接入系统按微服务方式划分层次后,对各层节点进行集群搭建,步骤为:
基础支撑层搭建Kafka集群用于消息队列,搭建Zookeeper集群用于服务注册中心;
业务处理层各节点均启动Kafka服务端与Kafka集群建立连接;
数据解析层各节点均启动Netty服务端用于接收接入层转发数据,并且将Netty端口等元数据使用Curator工具注册到Zookeeper集群中对应节点,同时利用Kafka客户端与Kafka集群建立连接;
数据接入层各节点首先使用Curator工具监听Zookeeper中解析层节点的注册信息变动,出现信息增删则对本地Netty客户端向解析层节点的Netty客户端发起连接与关闭连接,并将对应Channel通道缓存在本地内存;同时启动用于与终端通信的Netty服务端,并将相应节点信息注册到Zookeeper集群。
进一步的,接入端接收终端报文数据时,Netty作为服务端,使用主从Reactor线程模型,主线程池主要负责接收海量终端连接请求,而海量终端报文读写与识别等工作交给从线程池。
进一步的,报文数据在Netty中进行识别后,通过线程无锁化调度存入本地LinkedBlockingQueue阻塞队列,在每个阻塞队列都绑定一个专属拉取转发线程池;其中线程无锁化调度,即使用HashCode结合位与运算的算法将Work线程池中的每个NioEventLoop都绑定一个专属阻塞队列,每个阻塞队列在绑定专属线程的方式,实现线程间任务无锁化调度,获取NioEventLoop对应绑定的阻塞队列Z算法为:
Z=x&(y-1)
其中,x表示NioEventLoop线程名称经过hashCode运算后的值;y为NioEventLoopGroup线程总数;Z为NioEventLoop线程所绑定的专属阻塞队列;&表示按位与运算符。
进一步的,数据接入层的节点与数据解析层的节点进行通信时,若转发线程拉取到的是核心数据则使用Netty进行数据传递,非核心数据使用消息中间件Kafka进行异步通信。
进一步的,核心数据和非核心数据根据终端数据的重要程度来区分,终端数据的重要程度由终端报文中设定等级标识字段来标识等级,一级、二级数据属于核心数据,三级、四级、五级属于非核心数据。
进一步的,核心数据在执行转发时会经过负载均衡模块,选取一个解析层节点的Channel通道进行转发,负载均衡模块采用随机权重算法,对于每一次调用其实现过程为:
计算本地已连接的所有解析层节点的权重和,并将各节点的权重按前缀和算法的方式存入权重数组;
在零到权重和之间生成一个随机数,作为随机权重;
遍历权重数组,找到第一个比随机权重大的权重的坐标;
获取此坐标代表的解析层节点,用作本次转发的节点。
进一步的,数据解析层节点在从Kafka中拉渠道数据或通过Netty服务端接收到数据后,使用专属解析线程池对报文数据进行解析,并解析结果转换成结构化数据,将结构化数据发送到Kafka业务Topic的分区中。
进一步的,业务处理层节点与解析层节点采用Kafka实现异步通信,业务处理层节点从对应Kafka的Topic分区中拉取数据,进行具体业务处理,如对接平台侧需求,对接大数据处理,持久化到数据库等。
本发明还提出一种物联网应用中基于Netty的海量数据接入系统,对物联网数据接入系统进行微服务分层划分,分为数据接入层、数据解析层、业务处理层与基础支撑层,数据接入层包括终端连接模块、协议识别封装模块、会话保持模块、无锁线程调度以及负载均衡模块;数据解析层包括异构数据解析模块、数据整合封装模块、对外协议更新接口以及解析专用线程池;基础支撑层包括服务注册中心、消息队列、数据持久化、数据缓存;而业务处理层是数据接入系统的上层服务系统,非数据接入系统所属层次,本发明中不涉及业务处理层具体构建,仅描述系统间数据通信方式;其中:
终端连接模块,用于与终端建立连接并接收其上传报文数据;
协议识别封装模块,用于对报文类型进行验证,识别有效合规报文数据,将其存入本地阻塞队列;
无锁线程调度模块,用于实现Netty I/O线程与转发线程的无锁化调度;
会话保持模块,用于保存终端通信地址在本地内存,实现双向通信;
负载均衡模块,用于从解析层节点中选取某一对应的Channel通道,避免转发向单一解析层节点倾斜;
异构数据解析模块,用于对接收到的报文进行具体解析,将字节数据转化为结构化数据;
数据整合封装模块,用于根据结构化数据所示信息,对其进行进一步业务封装;
协议更新接口,用于第三方服务调用本地接口实现解析协议更新;
解析专用线程池,用于向解析封装模块提供专用线程,实现线程隔离,避免线程阻塞。
本发明将数据接入系统拆分为数据接入层与数据解析层,接入层负责终端连接与数据接收,而解析层负责处理复杂数据解析工作。这种微服务划分架构具有的优势有:业务分层可避免复杂数据解析侵占Netty通信所需的系统资源,充分发挥Netty可承接数十万终端通信的优势;实现业务解耦,细粒度模块拆分易于对功能模块针对性横向扩容。同时本发明提出的数据接入方法中,对接收与转发链路做出大量优化,包括Netty I/O线程与业务线程无锁化调度,引入Kafka将数据按等级差异化调度等,进一步提升数据接入与转发速率。
附图说明
图1是本发明实施例的全局分层结构图;
图2是本发明实施例的集群部署示意图;
图3是本发明实施例各模块之间通信方式图;
图4是本发明实施例数据接入方法流程图;
图5是本发明实施例线程无锁化调度示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提出一种物联网应用中基于Netty的海量数据接入方法,包括以下步骤:
S0、对物联网数据接入系统进行微服务分层划分,分为数据接入层、数据解析层、业务处理层,并对系统进行集群部署搭建;
S1、当接入层节点的Netty服务端接收到终端报文后,对报文类型进行识别并以线程无锁化调度存入本地阻塞队列中;
S2、阻塞队列专属消费线程从队列拉取报文数据,若报文为核心数据,执行步骤S3;否则执行S4;
S3、线程调用负载均衡模块选中某一解析层节点将所持报文数据进行转发;
S4、线程通过本地Kafka客户端将报文数据发送到kafka转发专属Topic分区;
S5、数据解析层节点的Netty服务端接收到或者从Kafka中拉取到报文数据后,对其进行解析,转换成结构化数据后发送到Kafka业务专属Topic分区;
S6、业务处理层从Kafka业务Topic分区中拉取结构化数据进行具体业务处理,完成数据接入。
在本实施例中,首先对物联网数据接入系统进行微服务分层划分,划分后整体结构如图1所示,系统结构可分为四层,分别是数据接入层、数据解析层、业务处理层、基础支撑层。数据接入层包括终端连接模块、协议识别封装模块、会话保持模块、无锁线程调度以及负载均衡模块;数据解析层包括异构数据解析模块、数据整合封装模块、对外协议更新接口以及解析专用线程池;基础支撑层包括服务注册中心、消息队列、数据持久化、数据缓存;业务处理层主要是对终端数据的进一步处理,做具体业务处理或对接大数据模块,数据库存储模块等;
其中接入与解析层各模块作用为:
终端连接模块,用于与终端建立连接并接收其上传报文数据。
协议识别封装模块,用于对报文类型进行验证,识别有效合规报文数据,将其存入本地阻塞队列。
无锁线程调度模块,用于实现Netty I/O线程与转发线程的无锁化调度。
会话保持模块,用于保存终端通信地址在本地内存,实现双向通信。
负载均衡模块,用于从解析层节点中选取某一对应的Channel通道,避免转发向单一解析层节点倾斜。
异构数据解析模块,用于对接收到的报文进行具体解析,将字节数据转化为结构化数据。
数据整合封装模块,用于根据结构化数据所示信息,对其进行进一步业务封装。
协议更新接口,用于第三方服务调用本地接口实现解析协议更新。
解析专用线程池,用于向解析封装模块提供专用线程,实现线程隔离,避免线程阻塞。
在数据接入系统按微服务方式划分层次后,对各层节点进行集群搭建,集群结构示意图如图2,其中步骤为:
(1)基础支撑层搭建,包括Kafka集群、Zookeeper集群,分别用于消息队列与服务注册中心。
(2)业务处理层搭建,该层各节点均启动Kafka服务端与Kafka集群建立连接。
(3)数据解析层搭建,该层各节点均启动Netty服务端用于接收接入层转发数据,并且将Netty端口等元数据使用Curator注册到Zookeeper集群中对应节点。同时利用Kafka客户端与Kafka集群建立连接。
(4)数据接入层搭建,该层各节点首先使用Curator工具监听Zookeeper中解析层节点的注册信息变动,出现信息增删则对本地Netty客户端向解析层节点的Netty客户端发起连接与关闭连接,并将对应Channel通道缓存在本地内存。同时启动用于与终端通信的Netty服务端,并将相应节点信息注册到Zookeeper集群。
上述各层次集群搭建过程伴随着之间的通信连接,方式如图3所示。在海量终端与数据接入节点的通信中,通过Netty框架实现建立连接与数据上下行通道,Netty Server端使用主从Reactor线程模型搭建,主线程池主要负责接收海量终端连接请求,而海量终端数据的读写与编解码工作交给从线程池。
数据接入节点与数据解析节点的通信方式分为Netty直接连接与Kafka发布订阅式通信。核心数据使用Netty进行数据传递,非核心数据使用消息中间件Kafka进行异步通信。核心数据采用Netty同步通信是为了保障核心数据在链路中得到及时传递及时处理。而非核心数据则可以推送到Kafka中,由解析层节点按照合适的速率进行拉取消费。同时,数据解析层节点与业务处理层节点之间也采用Kafka进行通信。
本实施例中所述核心与非核心数据是根据终端数据的重要程度来定,分为5个梯度,一级二级数据属于核心数据,三四五级属于非核心数据,终端报文中设定等级标识字段来标识等级。
依托于上述过程所搭建的数据接入系统,一种物联网数据接入方法如图4
所示。过程为:
接入端Netty服务端接收到终端报文数据后,报文数据在Netty编解码器中进行识别,通过线程无锁化调度存入本地LinkedBlockingQueue阻塞队列。然后每个阻塞队列都绑定一个专属拉取转发线程池。
其中线程无锁化调度示意图如图5所示:Netty的Work线程池具有多个NioEventLoop线程,若是只分配一个转发线程池则只有一个阻塞队列,而像是LinkedBlockingQueue队列是一种有锁队列,多线程执行读写操作时首先进行抢锁,抢锁成功则可进行读写,抢不到锁的线程会被阻塞,在并发数据量大时频繁锁竞争会浪费CPU资源。所以本方法采用一种使用HashCode结合位与运算的算法将Work线程池中的每个NioEventLoop都绑定一个专属阻塞队列,每个阻塞队列在绑定专属线程的方式,实现线程间任务无锁化调度。NioEventLoop对应绑定的阻塞队列Z算法为:
Z=x&(y-1)
其中,x表示NioEventLoop线程名称经过HashCode运算后的值;y为NioEventLoopGroup线程总数;Z为NioEventLoop线程所绑定的专属阻塞队列;&表示按位与运算符。
进一步的,若转发线程拉取到的是核心数据则使用Netty进行数据转发,非核心数据使用消息中间件Kafka进行异步通信。其中核心数据在执行转发时会经过负载均衡模块,选取一个解析层节点的Channel通道进行转发,避免转发向单一解析层节点倾斜。本实施例负载均衡模块采用随机权重算法,对于每一次调用其实现过程为:
(1)计算本地已连接的所有解析层节点的权重和,并将各节点的权重按前缀和算法的方式存入权重数组。
(2)在零到权重和之间生成一个随机数,作为随机权重。
(3)遍历权重数组,找到第一个比随机权重大的权重的坐标。
(4)获取此坐标代表的解析层节点,用作本次转发。
进一步的,解析层节点在从Kafka中拉取到数据或通过Netty服务端接收到数据后,对数据进行识别确定其协议类型并交给解析模块,在解析模块中使用专属解析线程池对报文数据进行解析,并将解析结果转换成结构化数据,最后将数据发送到Kafka业务Topic的分区中。
进一步的,业务处理层节点与解析层节点采用Kafka实现异步通信,业务处理层节点从对应Kafka的Topic分区中拉取数据,进行具体业务处理,如对接平台侧需求,对接大数据处理,持久化到数据库等。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (10)

1.一种物联网应用中基于Netty的海量数据接入方法,其特征在于,包括以下步骤:
S0、对物联网数据接入系统进行微服务分层划分,分为数据接入层、数据解析层、业务处理层,并对系统进行集群部署搭建;
S1、当接入层节点的Netty服务端接收到终端报文后,对报文类型进行识别并以线程无锁化调度存入本地阻塞队列中;
S2、阻塞队列专属消费线程从队列拉取报文数据,若报文为核心数据,执行步骤S3;否则执行S4;
S3、线程调用负载均衡模块选中某一解析层节点将所持报文数据进行转发;
S4、线程通过本地Kafka客户端将报文数据发送到kafka转发专属Topic分区;
S5、数据解析层节点的Netty服务端接收到或者从Kafka中拉取到报文数据后,对其进行解析,转换成结构化数据后发送到Kafka业务专属Topic分区;
S6、业务处理层从Kafka业务Topic分区中拉取结构化数据进行具体业务处理,完成数据接入。
2.根据权利要求1所述的一种物联网应用中基于Netty的海量数据接入方法,其特征在于,在数据接入系统按微服务方式划分层次后,对各层节点进行集群搭建,步骤为:
基础支撑层搭建Kafka集群用于消息队列,搭建Zookeeper集群用于服务注册中心;
业务处理层各节点均启动Kafka服务端与Kafka集群建立连接;
数据解析层各节点均启动Netty服务端用于接收接入层转发数据,并且将Netty端口等元数据使用Curator工具注册到Zookeeper集群中对应节点,同时利用Kafka客户端与Kafka集群建立连接;
数据接入层各节点首先使用Curator工具监听Zookeeper中解析层节点的注册信息变动,出现信息增删则对本地Netty客户端向解析层节点的Netty客户端发起连接与关闭连接,并将对应Channel通道缓存在本地内存;同时启动用于与终端通信的Netty服务端,并将相应节点信息注册到Zookeeper集群。
3.根据权利要求1所述的一种物联网应用中基于Netty的海量数据接入方法,其特征在于,接入端接收终端报文数据时,Netty作为服务端,使用主从Reactor线程模型,主线程池负责接收海量终端连接请求,从线程池负责海量终端报文读写与识别工作。
4.根据权利要求1所述的一种物联网应用中基于Netty的海量数据接入方法,其特征在于,报文数据在Netty中进行识别后,通过线程无锁化调度存入本地LinkedBlockingQueue阻塞队列,在每个阻塞队列都绑定一个专属拉取转发线程池;其中线程无锁化调度,即使用HashCode结合位与运算的算法将Work线程池中的每个NioEventLoop都绑定一个专属阻塞队列,每个阻塞队列在绑定专属线程的方式,实现线程间任务无锁化调度,获取NioEventLoop对应绑定的阻塞队列Z算法为:
Z=x&(y-1)
其中,x表示NioEventLoop线程名称经过hashCode运算后的值;y为NioEventLoopGroup线程总数;Z为NioEventLoop线程所绑定的专属阻塞队列;&表示按位与运算符。
5.根据权利要求1所述的一种物联网应用中基于Netty的海量数据接入方法,其特征在于,数据接入层的节点与数据解析层的节点进行通信时,若转发线程拉取到的是核心数据则使用Netty进行数据传递,非核心数据使用消息中间件Kafka进行异步通信。
6.根据权利要求1所述的一种物联网应用中基于Netty的海量数据接入方法,其特征在于,核心数据和非核心数据根据终端数据的重要程度来区分,终端数据的重要程度由终端报文中设定等级标识字段来标识等级,一级、二级数据属于核心数据,三级、四级、五级属于非核心数据。
7.根据权利要求5所述的一种物联网应用中基于Netty的海量数据接入方法,其特征在于,核心数据在执行转发时会经过负载均衡模块,选取一个解析层节点的Channel通道进行转发,负载均衡模块采用随机权重算法,对于每一次调用其实现过程为:
计算本地已连接的所有解析层节点的权重和,并将各节点的权重按前缀和算法的方式存入权重数组;
在零到权重和之间生成一个随机数,作为随机权重;
遍历权重数组,找到第一个比随机权重大的权重的坐标;
获取此坐标代表的解析层节点,用作本次转发的节点。
8.根据权利要求1所述的一种物联网应用中基于Netty的海量数据接入方法,其特征在于,数据解析层节点在从Kafka中拉渠道数据或通过Netty服务端接收到数据后,使用专属解析线程池对报文数据进行解析,并解析结果转换成结构化数据,将结构化数据发送到Kafka业务Topic的分区中。
9.根据权利要求1所述的一种物联网应用中基于Netty的海量数据接入方法,其特征在于,业务处理层节点与解析层节点采用Kafka实现异步通信,业务处理层节点从对应Kafka的Topic分区中拉取数据。
10.一种物联网应用中基于Netty的海量数据接入系统,其特征在于,对物联网数据接入系统进行微服务分层划分,分为数据接入层、数据解析层、业务处理层与基础支撑层,数据接入层包括终端连接模块、协议识别封装模块、会话保持模块、无锁线程调度以及负载均衡模块;数据解析层包括异构数据解析模块、数据整合封装模块、对外协议更新接口以及解析专用线程池;基础支撑层包括服务注册中心、消息队列、数据持久化、数据缓存;而业务处理层是数据接入系统的上层服务系统,非数据接入系统所属层次,本发明中不涉及业务处理层具体构建,仅描述系统间数据通信方式;其中:
终端连接模块,用于与终端建立连接并接收其上传报文数据;
协议识别封装模块,用于对报文类型进行验证,识别有效合规报文数据,将其存入本地阻塞队列;
无锁线程调度模块,用于实现Netty I/O线程与转发线程的无锁化调度;
会话保持模块,用于保存终端通信地址在本地内存,实现双向通信;
负载均衡模块,用于从解析层节点中选取某一对应的Channel通道,避免转发向单一解析层节点倾斜;
异构数据解析模块,用于对接收到的报文进行具体解析,将字节数据转化为结构化数据;
数据整合封装模块,用于根据结构化数据所示信息,对其进行进一步业务封装;
协议更新接口,用于第三方服务调用本地接口实现解析协议更新;
解析专用线程池,用于向解析封装模块提供专用线程,实现线程隔离,避免线程阻塞。
CN202111369026.XA 2021-11-18 2021-11-18 一种物联网应用中基于Netty的海量数据接入方法及系统 Active CN114095537B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111369026.XA CN114095537B (zh) 2021-11-18 2021-11-18 一种物联网应用中基于Netty的海量数据接入方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111369026.XA CN114095537B (zh) 2021-11-18 2021-11-18 一种物联网应用中基于Netty的海量数据接入方法及系统

Publications (2)

Publication Number Publication Date
CN114095537A true CN114095537A (zh) 2022-02-25
CN114095537B CN114095537B (zh) 2023-07-14

Family

ID=80302091

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111369026.XA Active CN114095537B (zh) 2021-11-18 2021-11-18 一种物联网应用中基于Netty的海量数据接入方法及系统

Country Status (1)

Country Link
CN (1) CN114095537B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114827114A (zh) * 2022-04-22 2022-07-29 雷沃工程机械集团有限公司 一种工程机械车联网平台的数据孪生的实现方法及系统
CN114900523A (zh) * 2022-05-09 2022-08-12 重庆标能瑞源储能技术研究院有限公司 一种物联网架构下的定向式负载均衡数据流处理方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105635298A (zh) * 2016-01-12 2016-06-01 安徽科力信息产业有限责任公司 一种基于业务隔离原理的数据采集设备统一接入系统
CN106230984A (zh) * 2016-09-12 2016-12-14 深圳市彬讯科技有限公司 一种采用Netty框架实现网页服务通道的方法
US20180159731A1 (en) * 2015-01-23 2018-06-07 Ebay Inc. Processing high volume network data
CN108234670A (zh) * 2018-01-31 2018-06-29 北京中安智达科技有限公司 一种基于zookeeper和netty的分布式远程调用方法
CN110971614A (zh) * 2019-12-17 2020-04-07 软通动力信息技术(集团)有限公司 物联网适配方法、系统、计算机设备及存储介质
CN112148500A (zh) * 2020-05-18 2020-12-29 南方电网数字电网研究院有限公司 一种基于Netty的远程数据传输方法
CN112288423A (zh) * 2020-10-30 2021-01-29 广州市汇聚支付电子科技有限公司 一种分布式框架的聚合支付方法和系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180159731A1 (en) * 2015-01-23 2018-06-07 Ebay Inc. Processing high volume network data
CN105635298A (zh) * 2016-01-12 2016-06-01 安徽科力信息产业有限责任公司 一种基于业务隔离原理的数据采集设备统一接入系统
CN106230984A (zh) * 2016-09-12 2016-12-14 深圳市彬讯科技有限公司 一种采用Netty框架实现网页服务通道的方法
CN108234670A (zh) * 2018-01-31 2018-06-29 北京中安智达科技有限公司 一种基于zookeeper和netty的分布式远程调用方法
CN110971614A (zh) * 2019-12-17 2020-04-07 软通动力信息技术(集团)有限公司 物联网适配方法、系统、计算机设备及存储介质
CN112148500A (zh) * 2020-05-18 2020-12-29 南方电网数字电网研究院有限公司 一种基于Netty的远程数据传输方法
CN112288423A (zh) * 2020-10-30 2021-01-29 广州市汇聚支付电子科技有限公司 一种分布式框架的聚合支付方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ZHONGHU YUAN: "Design and Implementation of Internet of Things Message Subscription System Based on Kafka", 《IEEEXPLORE》 *
胡皓鹏;孙勇;阙华坤;: "超大规模计量自动化系统高效集中采集技术研究", 工业控制计算机, no. 12 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114827114A (zh) * 2022-04-22 2022-07-29 雷沃工程机械集团有限公司 一种工程机械车联网平台的数据孪生的实现方法及系统
CN114900523A (zh) * 2022-05-09 2022-08-12 重庆标能瑞源储能技术研究院有限公司 一种物联网架构下的定向式负载均衡数据流处理方法

Also Published As

Publication number Publication date
CN114095537B (zh) 2023-07-14

Similar Documents

Publication Publication Date Title
CN109492040B (zh) 一种适用于数据中心海量短报文数据处理的系统
CN106131213B (zh) 一种服务管理方法和系统
CN104050029B (zh) 一种任务调度系统
CN106850829B (zh) 一种基于非阻塞通信的微服务系统设计方法
CN114095537A (zh) 一种物联网应用中基于Netty的海量数据接入方法及系统
US20040068479A1 (en) Exploiting asynchronous access to database operations
CN110134534B (zh) 基于nio针对大数据分布式系统进行消息处理优化的系统及方法
CN101146127B (zh) 一种分布式系统中客户端缓存更新的方法和装置
CN102739452A (zh) 资源监控方法和系统
CN113422842B (zh) 一种考虑网络负载的分布式电力用电信息数据采集系统
CN113468221A (zh) 一种基于kafka消息数据总线的系统集成方法
CN113703997A (zh) 集成多种消息代理的双向异步通信中间件系统及实现方法
CN113515363B (zh) 面向异型任务高并发的多层次数据处理系统动态调度平台
CN113297216B (zh) 航天测控数据实时入库方法
CN109951370B (zh) 多大数据中心分层互联互通方法及装置
US8255933B2 (en) Method and system for reading data, related network and computer program product therefor
CN101321178A (zh) 一种门户工作流引擎系统及其实现方法
CN116346823A (zh) 一种基于消息队列的大数据异构任务调度方法及系统
Nilsson et al. Performance evaluation of message-oriented middleware
CN114024976B (zh) 一种基于5g的大数据服务架构及构建大数据业务的方法
CN113190341A (zh) 一种服务器资源调度方法及系统
CN114168626A (zh) 一种数据库操作的处理方法、装置、设备及介质
CN113778700A (zh) 消息处理方法、系统、介质和计算机系统
CN104702663A (zh) 云处理装置和方法
CN117742998B (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