CN114095537B - 一种物联网应用中基于Netty的海量数据接入方法及系统 - Google Patents
一种物联网应用中基于Netty的海量数据接入方法及系统 Download PDFInfo
- Publication number
- CN114095537B CN114095537B CN202111369026.XA CN202111369026A CN114095537B CN 114095537 B CN114095537 B CN 114095537B CN 202111369026 A CN202111369026 A CN 202111369026A CN 114095537 B CN114095537 B CN 114095537B
- Authority
- CN
- China
- Prior art keywords
- data
- message
- netty
- thread
- kafka
- 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
-
- 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/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16Y—INFORMATION AND COMMUNICATION TECHNOLOGY SPECIALLY ADAPTED FOR THE INTERNET OF THINGS [IoT]
- G16Y10/00—Economic sectors
- G16Y10/75—Information technology; Communication
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2212/00—Encapsulation 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的海量数据接入方法及系统。
背景技术
物联网作为信息产业浪潮中的重要一环,其技术不断进步持续推进物联网产业的飞升,物联网应用正逐步遍及日常生活中各个领域,如物流运输、健康医疗、智能家居、智慧工业、智慧农业等。因此物联网终端的数量正呈爆炸式增长,如何应对终端带来的海量数据接入处理已是物联网应用行业亟待解决的问题。
针对上述问题,现有研究通常使用基于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 (8)
1.一种物联网应用中基于Netty的海量数据接入方法,其特征在于,包括以下步骤:
S0、对物联网数据接入系统进行微服务分层划分,分为数据接入层、数据解析层、业务处理层,并对系统进行集群部署搭建;具体包括:
基础支撑层搭建Kafka集群用于消息队列,搭建Zookeeper集群用于服务注册中心;
业务处理层各节点均启动Kafka服务端与Kafka集群建立连接;
数据解析层各节点均启动Netty服务端用于接收接入层转发数据,并且将Netty端口等元数据使用Curator工具注册到Zookeeper集群中对应节点,同时利用Kafka客户端与Kafka集群建立连接;
数据接入层各节点首先使用Curator工具监听Zookeeper中解析层节点的注册信息变动,出现信息增删则对本地Netty客户端向解析层节点的Netty客户端发起连接与关闭连接,并将对应Channel通道缓存在本地内存;同时启动用于与终端通信的Netty服务端,并将相应节点信息注册到Zookeeper集群;
S1、当接入层节点的Netty服务端接收到终端报文后,对报文类型进行识别并以线程无锁化调度存入本地阻塞队列中,即报文数据在Netty中进行识别后,通过线程无锁化调度存入本地LinkedBlockingQueue阻塞队列,在每个阻塞队列都绑定一个专属拉取转发线程池;其中线程无锁化调度,即使用HashCode结合位与运算的算法将Work线程池中的每个NioEventLoop都绑定一个专属阻塞队列,每个阻塞队列在绑定专属线程的方式,实现线程间任务无锁化调度,获取NioEventLoop对应绑定的阻塞队列Z算法为:
Z=x&(y-1)
其中,x表示NioEventLoop线程名称经过hashCode运算后的值;y为NioEventLoopGroup线程总数;Z为NioEventLoop线程所绑定的专属阻塞队列;&表示按位与运算符;
S2、阻塞队列专属消费线程从队列拉取报文数据,若报文为核心数据,执行步骤S3;否则执行S4;
S3、线程调用负载均衡模块选中某一解析层节点将所持报文数据进行转发;
S4、线程通过本地Kafka客户端将报文数据发送到kafka转发专属Topic分区;
S5、数据解析层节点的Netty服务端接收到或者从Kafka中拉取到报文数据后,对其进行解析,转换成结构化数据后发送到Kafka业务专属Topic分区;
S6、业务处理层从Kafka业务Topic分区中拉取结构化数据进行具体业务处理,完成数据接入。
2.根据权利要求1所述的一种物联网应用中基于Netty的海量数据接入方法,其特征在于,接入端接收终端报文数据时,Netty作为服务端,使用主从Reactor线程模型,主线程池负责接收海量终端连接请求,从线程池负责海量终端报文读写与识别工作。
3.根据权利要求1所述的一种物联网应用中基于Netty的海量数据接入方法,其特征在于,数据接入层的节点与数据解析层的节点进行通信时,若转发线程拉取到的是核心数据则使用Netty进行数据传递,非核心数据使用消息中间件Kafka进行异步通信。
4.根据权利要求1所述的一种物联网应用中基于Netty的海量数据接入方法,其特征在于,核心数据和非核心数据根据终端数据的重要程度来区分,终端数据的重要程度由终端报文中设定等级标识字段来标识等级,一级、二级数据属于核心数据,三级、四级、五级属于非核心数据。
5.根据权利要求4所述的一种物联网应用中基于Netty的海量数据接入方法,其特征在于,核心数据在执行转发时会经过负载均衡模块,选取一个解析层节点的Channel通道进行转发,负载均衡模块采用随机权重算法,对于每一次调用其实现过程为:
计算本地已连接的所有解析层节点的权重和,并将各节点的权重按前缀和算法的方式存入权重数组;
在零到权重和之间生成一个随机数,作为随机权重;
遍历权重数组,找到第一个比随机权重大的权重的坐标;
获取此坐标代表的解析层节点,用作本次转发的节点。
6.根据权利要求1所述的一种物联网应用中基于Netty的海量数据接入方法,其特征在于,数据解析层节点在从Kafka中拉渠道数据或通过Netty服务端接收到数据后,使用专属解析线程池对报文数据进行解析,并解析结果转换成结构化数据,将结构化数据发送到Kafka业务Topic的分区中。
7.根据权利要求1所述的一种物联网应用中基于Netty的海量数据接入方法,其特征在于,业务处理层节点与解析层节点采用Kafka实现异步通信,业务处理层节点从对应Kafka的Topic分区中拉取数据。
8.一种物联网应用中基于Netty的海量数据接入系统,其特征在于,用于实现权利要求1所述的一种物联网应用中基于Netty的海量数据接入方法,对物联网数据接入系统进行微服务分层划分,分为数据接入层、数据解析层、业务处理层与基础支撑层,数据接入层包括终端连接模块、协议识别封装模块、会话保持模块、无锁线程调度以及负载均衡模块;数据解析层包括异构数据解析模块、数据整合封装模块、对外协议更新接口以及解析专用线程池;基础支撑层包括服务注册中心、消息队列、数据持久化、数据缓存;而业务处理层是数据接入系统的上层服务系统,非数据接入系统所属层次;其中:
终端连接模块,用于与终端建立连接并接收其上传报文数据;
协议识别封装模块,用于对报文类型进行验证,识别有效合规报文数据,将其存入本地阻塞队列;
无锁线程调度模块,用于实现Netty I/O线程与转发线程的无锁化调度;
会话保持模块,用于保存终端通信地址在本地内存,实现双向通信;
负载均衡模块,用于从解析层节点中选取某一对应的Channel通道,避免转发向单一解析层节点倾斜;
异构数据解析模块,用于对接收到的报文进行具体解析,将字节数据转化为结构化数据;
数据整合封装模块,用于根据结构化数据所示信息,对其进行进一步业务封装;
协议更新接口,用于第三方服务调用本地接口实现解析协议更新;
解析专用线程池,用于向解析封装模块提供专用线程,实现线程隔离,避免线程阻塞。
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 CN114095537A (zh) | 2022-02-25 |
CN114095537B true 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) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114827114A (zh) * | 2022-04-22 | 2022-07-29 | 雷沃工程机械集团有限公司 | 一种工程机械车联网平台的数据孪生的实现方法及系统 |
CN114900523A (zh) * | 2022-05-09 | 2022-08-12 | 重庆标能瑞源储能技术研究院有限公司 | 一种物联网架构下的定向式负载均衡数据流处理方法 |
CN118433114A (zh) * | 2023-02-02 | 2024-08-02 | 华为技术有限公司 | 数据传输方法、装置、设备及存储介质 |
Citations (6)
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框架实现网页服务通道的方法 |
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 | 广州市汇聚支付电子科技有限公司 | 一种分布式框架的聚合支付方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102082355B1 (ko) * | 2015-01-23 | 2020-02-27 | 이베이 인크. | 대용량 네트워크 데이터의 처리 기법 |
-
2021
- 2021-11-18 CN CN202111369026.XA patent/CN114095537B/zh active Active
Patent Citations (6)
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框架实现网页服务通道的方法 |
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)
Title |
---|
Design and Implementation of Internet of Things Message Subscription System Based on Kafka;Zhonghu Yuan;《IEEEXplore》;全文 * |
超大规模计量自动化系统高效集中采集技术研究;胡皓鹏;孙勇;阙华坤;;工业控制计算机(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114095537A (zh) | 2022-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114095537B (zh) | 一种物联网应用中基于Netty的海量数据接入方法及系统 | |
CN109492040B (zh) | 一种适用于数据中心海量短报文数据处理的系统 | |
CN104050029B (zh) | 一种任务调度系统 | |
CN106131213B (zh) | 一种服务管理方法和系统 | |
US20040068479A1 (en) | Exploiting asynchronous access to database operations | |
CN113422842B (zh) | 一种考虑网络负载的分布式电力用电信息数据采集系统 | |
CN106060176A (zh) | 一种基于混合云的云计算应用架构及云计算服务方法 | |
CN103207920A (zh) | 一种元数据并行采集系统 | |
CN110427270B (zh) | 一种面向rdma网络下分布式连接算子的动态负载均衡方法 | |
CN114666335B (zh) | 一种基于数据分发服务dds的分布式系统负载均衡装置 | |
CN113515363B (zh) | 面向异型任务高并发的多层次数据处理系统动态调度平台 | |
CN109951370B (zh) | 多大数据中心分层互联互通方法及装置 | |
CN106161520A (zh) | 大数据应用平台及基于其的交互方法 | |
CN102223385A (zh) | 一种基于多智能体的网格gis资源管理系统 | |
CN102055779A (zh) | 生成高可用性组的方法、设备及系统 | |
CN113190341A (zh) | 一种服务器资源调度方法及系统 | |
CN112711625A (zh) | 一种双向自适应的多源异构大数据动态处理方法 | |
CN116346823A (zh) | 一种基于消息队列的大数据异构任务调度方法及系统 | |
CN111625414A (zh) | 一种数据转换整合软件的自动调度监控系统实现方法 | |
CN100440802C (zh) | 服务网格系统及处理作业的方法 | |
CN215298210U (zh) | 电力物联网的多级边缘计算系统 | |
CN117742998B (zh) | 一种面向计费采集数据转发的高性能队列方法及系统 | |
CN101673361A (zh) | 订单分配系统的技术构架 | |
CN112217664A (zh) | 一种基于自治的分布式并行仿真方法、装置及系统 | |
Cao et al. | CLOSED: A cloud-edge dynamic collaborative strategy for complex event detection |
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 |