CN106778033B - 一种基于Spark平台的Spark Streaming异常温度数据报警方法 - Google Patents

一种基于Spark平台的Spark Streaming异常温度数据报警方法 Download PDF

Info

Publication number
CN106778033B
CN106778033B CN201710016673.XA CN201710016673A CN106778033B CN 106778033 B CN106778033 B CN 106778033B CN 201710016673 A CN201710016673 A CN 201710016673A CN 106778033 B CN106778033 B CN 106778033B
Authority
CN
China
Prior art keywords
data
spark
batch processing
temperature data
streaming
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
Application number
CN201710016673.XA
Other languages
English (en)
Other versions
CN106778033A (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.)
Nanjing Post and Telecommunication University
Original Assignee
Nanjing Post and Telecommunication University
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 Nanjing Post and Telecommunication University filed Critical Nanjing Post and Telecommunication University
Priority to CN201710016673.XA priority Critical patent/CN106778033B/zh
Publication of CN106778033A publication Critical patent/CN106778033A/zh
Application granted granted Critical
Publication of CN106778033B publication Critical patent/CN106778033B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16ZINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS, NOT OTHERWISE PROVIDED FOR
    • G16Z99/00Subject matter not provided for in other main groups of this subclass

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明一种基于Spark平台的Spark Streaming异常温度数据报警方法,结合kafka中间件作为服务器存储队列构建了一个异常温度检测系统及方法。本方法利用传感器收集物联网传来的温度数据,并上传到服务器,在这里数据全部进入kafka队列。Spark Streaming会实时消费kafka队列的数据,将数据读出来并进行实时的分析,并对异常数据发出报警信号。经过Spark Streaming实时计算程序分析,将结果写入Orancle数据库,可以实时获取温度数据,并可以导出来进行离线综合统计分析。

Description

一种基于Spark平台的Spark Streaming异常温度数据报警 方法
技术领域
本发明提出了一种基于Spark Streaming的温度异常报警方法,主要针对物联网传来的海量温度数据进行处理,提高处理效率。本方法领域属于基于云计算平台下的大数据处理领域。
背景技术
随着数据源产生的数据越来越多,处理数据的实时性需求越来越大,如实时分析和实时处理传感器生产的数据或者网络系统产生的日志数据。再比如,早期的在网上产生的股市震荡数据或者地震预测消息是有价值,时间长消息的价值就降低了。通常,数据分析是存在依赖关系的,这些依赖关系指明原始数据是来自同一组数据流。常用的数据流并行处理系统有Comet,Spark Streaming,SEEP,Storm和Naiad,这些处理系统都可以用于接收和处理实时传来的数据流。
Hadoop两大核心组件分别为HDFS(Hadoop Distributed Filesystem)和MapReduce。
Hadoop把数据存放在集群节点上,是根据数据节点空间利用率而不是节点的CPU处理能力来进行存取数据。
一个大的hadoop集群可以跨越多个机架甚至数据中心。与传统的并行处理数据流一样,Hadoop的MapReduce组件是非内存和离线分析的数据处理引擎,无法满足大规模数据实时分析和统计的要求。
Apache Storm是一个免费开源的实时分布式计算系统,但是Storm只适用于处理小规模、低速的数据流。
发明内容
本发明的目的是提供一种能够实时处理来自物联网的温度信息的方法,该方法主要利用Spark Streaming的高并发特性,从kafka服务器队列中并行读取数据,并对数据进行整合,筛选出异常温度信息,从而完成对异常温度数据报警的功能。
为了实现上述技术目的:本发明采用如下的具体技术方案:
一种基于Spark平台的Spark Streaming异常温度数据报警方法,利用kafka作为消息队列服务器,不断地接受物联网传感器传递来的数据流,SparkStreaming把接收的数据流分成数据块存放在Spark Streaming的数据块队列中,并且在一定的批处理时间间隔对数据块队列中的数据进行批处理,Spark通过任务调度器对批处理的数据块进行计算,筛选出异常温度数据,并把计算结果存入数据库中;
其处理数据具体流程如下:
步骤1:初始化——创建一个StreamingContext对象,该对象中的参数包括:SparkContext和批处理时间两个,对批处理时间这个参数进行设置,具体包括:
1)StreamingContext中的批处理时间设置为8s;
2)如果提交的数据流未被快速处理,数据滞留,减少批处理时间;
3)如果提交的数据流很快被处理,当前又没有数据流进入,处理时间过快,增加批处理时间;
4)重复步骤2)和步骤3)操作,直到数据流进入Spark中,Spark刚好处理结束上一个作业,从而找出合理的批处理时间;
步骤2:加载温度数据;
创建createStream,Receiver被调起执行;
连接ZooKeeper,读取相应的Consumer、Topic配置信息,通过consumerConnector连接到kafka集群,收取kafka队列中相应topic的数据;
创建KafkaMessageHandler线程池来对温度数据进行处理,通过ReceiverInputDStream中的方法,将数据转换成BlockRDD,供后续计算;
步骤3:异常温度数据检测:
Spark Streaming把从kafka队列中的topic数据的每行字符串解析出的温度数据,转换为Double型,分而治之,将同一个topic中的温度放入一个组中,设定一个温度阈值,统计每组出现的大于和小于温度阈值的异常温度数据的次数,如果出现异常数据,就向外发出异常警报;
步骤4:数据存储:
使用创建的SparkContext对象中的saveAstextFile()函数将获取的异常温度数据和次数存入到Orancle数据库中,以方便web端的查询和访问。
所述温度阈值设置为25~40摄氏度。
本发明的有益效果是:
本发明提出了一种基于Spark平台的Spark Streaming异常温度数据报警方法,能够实时地处理来自物联网的大批数据,具有高强度的容错性和可扩展性,能够准确的实时地进行温度异常报警。下面进行具体说明。
高容错性:在Strom中,每个单独的记录当它通过系统时必须被跟踪,所以Storm能够至少保证每个记录将被处理一次,但是在从错误中恢复过来时候允许出现重复记录。这意味着可变状态可能不正确地被更新两次。然而在Spark Streaming只需要在批级别进行跟踪处理,因此可以有效地保证每个mini-batch将完全被处理一次,即便一个节点发生故障。
因为Spark Streaming中RDD的容错机制是每个RDD都是一个不可变的分布式可重复的数据集,它记录着确定性的操作继承关系,只要源数据丢失或者失真,或者任意一个RDD分区出错或不可用,都是可以利用原始输入数据通过转换操作而重新算出的。
实时性:Spark Streaming将流式计算分解成多个Spark Job,对于每一段数据的处理都会经过Spark DAG图分解,以及Spark的任务集的调度过程。对于目前版本的SparkStreaming而言,其最小的Batch Size的选取在0.5~2秒钟之间,所以能够高实时的对温度数据进行处理。
高扩展性和高吞吐量:Spark目前在EC2上已能够线性扩展到100个节点(每个节点4Core),可以以数秒的延迟处理6GB/s的数据量(60M records/s),其吞吐量比一般的流速度高2~5倍。
附图说明
图1是集群系统架构图;
图2是Spark Streaming中RDD的lineage关系图;
图3是系统的工作流程图;
图4是kafka生产者/消费者模型;
图5是数据处理流程图。
具体实施方式
本发明采用Spark Streaming是因为该数据处理引擎具有高可靠、数据分析延迟低、处理数据能力强等优点,避免了数据堆积。
Apache Spark Streaming,Apache Storm和Yahoo S4是三大典型的支持在线实时流式计算的平台模型。
数据处理引擎Spark Streaming,它把数据流分成数据块存放在数据块队列中,然后在一定的批处理间隔对数据队列中的数据块进行统一处理,并可以通过调整批处理间隔从而达到对高速数据流和低速数据流的实时处理,因此在这里选取Spark平台作为分布式计算框架。
kafka是一个分布式的、高吞吐量、易于扩展的基于主题发布/订阅的消息系统,最早是由Linkedin开发,并于2011年开源并贡献给Apache软件基金会。作为消息队列, kafka由于拥有高吞吐量,并且内置消息主题分区、备份、容错等特性,更适合使用在大规模,高强度的消息数据处理的系统中。
数据处理引擎Spark Streaming提供了一个叫做DStream(Discretized Stream)的高级抽象,DStream表示一个持续不断输入的数据流,可以基于Kafka、TCP Socket、Flume等输入数据流创建。在内部,一个DStream实际上是由一个RDD序列组成的。数据处理引擎Sparking Streaming是基于Spark平台的,也就继承了Spark平台的各种特性,如容错(Fault-tolerant)、可扩展(Scalable)、高吞吐(High-throughput)等。
本发明提出了一种基于Spark Streaming的温度报警方法,其特色主要体现在对海量数据处理和实时分析两个方面。本方法基于如下三点:
(1)传感器收集物联网传来的温度数据,并上传到服务器,在这里数据全部进入kafka队列。
(2)Spark Streaming会实时消费kafka队列的数据,将数据读出来并进行实时的分析,并对异常数据发出报警信号。
(3)经过Spark Streaming实时计算程序分析,将结果写入Oracle数据库,可以实时获取温度数据,并可以导出来进行离线综合统计分析。
本发明处理图如图1所示,利用kafka作为消息队列服务器,不断地接受物联网传感器传递来的数据流,SparkStreaming把接收的数据流分成数据块存放在SparkStreaming的数据块队列中,并且在一定的批处理间隔对数据块队列中的数据进行批处理,Spark通过任务调度器对批处理数据块进行计算,筛选出异常温度数据,并把计算结果存入数据库中,
一.体系结构
分布流式(数据处理框架)分为Storm和Spark Streaming,Apache Storm是一个免费开源的实时分布式计算系统。但是Storm只适用于处理小规模低速的数据流。与Strom不一样的Spark Streaming,它把数据流分成数据块存放在数据块队列中,然后在一定的批处理间隔对数据队列中的数据块进行统一处理。可以通过调整批处理间隔从而达到对高速数据流和低速数据流的实时处理。
本发明提出的方法选择Spark Streaming进行温度异常检测,Spark Streaming将物联网传来的温度数据流按批处理间隔切分为一段段批处理作业来处理。
Spark针对持续性数据流的抽象称为DStream,一个DStream是一个微批处理的RDD(弹性分布式数据集Resilient Distributed Datasets),其弹性分布式数据集的传承关系如图2所示,图中的长方形表示一个弹性分布式数据集,长方形中的圆形表示一个弹性分布式数据集中的一个块(Partition),图中的每一列的多个弹性分布式数据集表示一个DStream(图中有三个DStream),而每行最后一个弹性分布式数据集则表示每一个BatchSize所产生的中间结果弹性分布式数据集。
图中的每一个弹性分布式数据集都是通过lineage相连接的,由于SparkStreaming输入数据来自kafka队列能够保证容错性,所以弹性分布式数据集中任意的块出错,都可以并行地在其他机器上将缺失的块计算出来。
该方法具体实现步骤如下:
1)启动Hadoop集群,Zookeeper集群,Spark集群和kafka集群(接受来自物联网传来的数据),初始化调度器。
2)将输入流的接收器转化为RDD(Resilient Distributed Datasets)在集群打散,然后启动接收器集合中的每个接收器,初始化SocketInputDStream,触发StreamingContext中的Start()方法,启动调度器,启动集群分布式接收器。
3)Receiver的receive()函数从kafka接受的流数据源源不断地放入BlockGenerator的currentBuffer(缓冲区),将缓冲区中的温度数据流以一定的时间间隔转化为数据块放入BlockGenerator的blockForPush队列中。
4)将blockForPush中的数据块转化为Spark中的数据块,通过BlockGenerator中的BlockPushingThread线程,不断地将blocksForPush队列中的块传给BlockManger(负责Spark中的块管理),让BlockManger将数据存储为块。
5)pushArrayBuffer()方法将已经由BlockManger存储的元数据信息(如BlockId)传递给ReceiverTracker,并将存储的BlockId放到对应的StreamId的队列中。
6)Spark Streaming根据时间段,将数据切分为RDD,然后触发RDD的Action提交Job到JobManager中的Job Queue中,调度器JobScheduler将Job提交到Spark的Job调度器,然后将Job转换为大量的任务分发给Spark集群执行(每个数据段都在执行温度异常检测Job),从而找出所有数据段的异常温度数据,并进行汇总报警。
本发明提出了一种基于Spark平台的Spark Streaming异常温度数据报警方法,能够实时地处理来自物联网的大批数据,具有高强度的容错性和可扩展性,能够准确的实时地进行温度异常报警。下面进行具体说明。
高容错性:在Strom中,每个单独的记录当它通过系统时必须被跟踪,所以Storm能够至少保证每个记录将被处理一次,但是在从错误中恢复过来时候允许出现重复记录。这意味着可变状态可能不正确地被更新两次。然而在Spark Streaming只需要在批级别进行跟踪处理,因此可以有效地保证每个mini-batch将完全被处理一次,即便一个节点发生故障。
因为Spark Streaming中RDD的容错机制是每个RDD都是一个不可变的分布式可重复的数据集,它记录着确定性的操作继承关系,操作继承关系如图2所示,所以只要源数据丢失或者失真,或者任意一个RDD分区出错或不可用,都是可以利用原始输入数据通过转换操作而重新算出的。
实时性:Spark Streaming将流式计算分解成多个Spark Job,对于每一段数据的处理都会经过Spark DAG图分解,以及Spark的任务集的调度过程。对于目前版本的SparkStreaming而言,其最小的Batch Size的选取在0.5~2秒钟之间,所以能够高实时的对温度数据进行处理。
高扩展性和高吞吐量:Spark目前在EC2上已能够线性扩展到100个节点(每个节点4Core),可以以数秒的延迟处理6GB/s的数据量(60M records/s),其吞吐量比一般的流速度高2~5倍。

Claims (2)

1.一种基于Spark平台的Spark Streaming异常温度数据报警方法,其特征在于:利用kafka作为消息队列服务器,不断地接受物联网传感器传递来的数据流,SparkStreaming把接收的数据流分成数据块存放在Spark Streaming的数据块队列中,并且在一定的批处理时间间隔对数据块队列中的数据进行批处理,Spark通过任务调度器对批处理的数据块进行计算,筛选出异常温度数据,并把计算结果存入数据库中;
其处理数据具体流程如下:
步骤1:初始化——创建一个StreamingContext对象,该对象中的参数包括:SparkContext和批处理时间两个,对批处理时间这个参数进行设置,具体包括:
1)StreamingContext中的批处理时间设置为8s;
2)如果提交的数据流未被快速处理,数据滞留,减少批处理时间;
3)如果提交的数据流很快被处理,当前又没有数据流进入,处理时间过快,增加批处理时间;
4)重复步骤2)和步骤3)操作,直到数据流进入Spark中,Spark刚好处理结束上一个作业,从而找出合理的批处理时间;
步骤2:加载温度数据;
创建createStream,Receiver被调起执行;
连接ZooKeeper,读取相应的Consumer、Topic配置信息,通过consumerConnector连接到kafka集群,收取kafka队列中相应topic的数据;
创建KafkaMessageHandler线程池来对温度数据进行处理,通过ReceiverInputDStream中的方法,将数据转换成BlockRDD,供后续计算;
步骤3:异常温度数据检测:
Spark Streaming把从kafka队列中的topic数据的每行字符串解析出的温度数据,转换为Double型,分别处理,将同一个topic中的温度放入一个组中,设定一个温度阈值,统计每组出现的大于和小于温度阈值的异常温度数据的次数,如果出现异常数据,就向外发出异常警报;
步骤4:数据存储:
使用创建的SparkContext对象中的saveAstextFile()函数将获取的异常温度数据和次数存入到Orancle数据库中,以方便web端的查询和访问。
2.根据权利要求1所述的基于Spark平台的Spark Streaming异常温度数据报警方法,其特征在于,所述温度阈值设置为25~40摄氏度。
CN201710016673.XA 2017-01-10 2017-01-10 一种基于Spark平台的Spark Streaming异常温度数据报警方法 Active CN106778033B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710016673.XA CN106778033B (zh) 2017-01-10 2017-01-10 一种基于Spark平台的Spark Streaming异常温度数据报警方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710016673.XA CN106778033B (zh) 2017-01-10 2017-01-10 一种基于Spark平台的Spark Streaming异常温度数据报警方法

Publications (2)

Publication Number Publication Date
CN106778033A CN106778033A (zh) 2017-05-31
CN106778033B true CN106778033B (zh) 2019-03-26

Family

ID=58948800

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710016673.XA Active CN106778033B (zh) 2017-01-10 2017-01-10 一种基于Spark平台的Spark Streaming异常温度数据报警方法

Country Status (1)

Country Link
CN (1) CN106778033B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107391719A (zh) * 2017-07-31 2017-11-24 南京邮电大学 一种云环境中分布式流数据处理方法及系统
CN107704594B (zh) * 2017-10-13 2021-02-09 东南大学 基于SparkStreaming的电力系统日志数据实时处理方法
CN108804781B (zh) * 2018-05-25 2022-06-14 武汉大学 流计算与传感网集成的地理过程近实时模拟方法
CN110851316A (zh) * 2018-08-20 2020-02-28 北京京东尚科信息技术有限公司 异常预警方法及装置、系统、电子设备、存储介质
CN109327509B (zh) * 2018-09-11 2022-01-18 武汉魅瞳科技有限公司 一种主/从架构的低耦合的分布式流式计算系统
CN109344030A (zh) * 2018-09-21 2019-02-15 四川长虹电器股份有限公司 流式故障数据写入处理的方法
CN109413581A (zh) * 2018-10-19 2019-03-01 海南易乐物联科技有限公司 一种基于电子栅栏的车辆越界识别告警方法及系统
CN109285589A (zh) * 2018-10-31 2019-01-29 重庆邮电大学 一种基于Spark大数据平台的铝电解过热度预测方法
CN109815082B (zh) * 2018-12-15 2023-04-11 中国平安人寿保险股份有限公司 Kafka主题监控方法、装置、电子设备及存储介质
CN109618308A (zh) * 2018-12-28 2019-04-12 济南浪潮高新科技投资发展有限公司 一种基于Spark Streaming处理物联网数据的方法
CN110119421A (zh) * 2019-04-03 2019-08-13 昆明理工大学 一种基于Spark流式分类的电力窃电用户识别方法
CN110362713B (zh) * 2019-07-12 2023-06-06 四川长虹云数信息技术有限公司 基于Spark Streaming的视频监控预警方法及系统
CN111741043A (zh) * 2019-09-04 2020-10-02 吕梁市军民融合协同创新研究院 一种适用于云计算制造的数据快速处理方法
CN110851488A (zh) * 2019-09-26 2020-02-28 贵阳信息技术研究院(中科院软件所贵阳分部) 基于多源多模态数据融合分析处理方法及平台
CN110750366A (zh) * 2019-09-26 2020-02-04 浙江大搜车软件技术有限公司 消息处理方法、装置、计算机设备和存储介质
CN110888972A (zh) * 2019-10-27 2020-03-17 北京明朝万达科技股份有限公司 一种基于Spark Streaming的敏感内容识别方法及装置
CN111124630B (zh) * 2019-11-29 2024-03-12 中盈优创资讯科技有限公司 Spark Streaming程序的运行系统及方法
CN111241051B (zh) * 2020-01-07 2023-09-12 深圳迅策科技有限公司 批量数据处理方法、装置、终端设备及存储介质
CN111506672B (zh) * 2020-03-24 2024-05-07 平安国际智慧城市科技股份有限公司 实时分析环保监测数据的方法、装置、设备及存储介质
CN111277672B (zh) * 2020-03-31 2022-03-11 上海积成能源科技有限公司 一种基于非阻塞输入输出模型的能源物联网数据采集方法
CN113239081A (zh) * 2021-05-21 2021-08-10 瀚云科技有限公司 一种流式数据计算方法
CN113542041A (zh) * 2021-09-17 2021-10-22 飞狐信息技术(天津)有限公司 基于火花流的实时报警方法、相关装置及计算机存储介质
CN113944923A (zh) * 2021-10-18 2022-01-18 西安热工研究院有限公司 基于Spark Streaming实时检测锅炉壁温超限报警的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104579823A (zh) * 2014-12-12 2015-04-29 国家电网公司 一种基于大数据流的网络流量异常检测系统及方法
CN106126641A (zh) * 2016-06-24 2016-11-16 中国科学技术大学 一种基于Spark的实时推荐系统及方法
CN106230819A (zh) * 2016-07-31 2016-12-14 上海交通大学 一种基于流采样的DDoS检测方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104579823A (zh) * 2014-12-12 2015-04-29 国家电网公司 一种基于大数据流的网络流量异常检测系统及方法
CN106126641A (zh) * 2016-06-24 2016-11-16 中国科学技术大学 一种基于Spark的实时推荐系统及方法
CN106230819A (zh) * 2016-07-31 2016-12-14 上海交通大学 一种基于流采样的DDoS检测方法

Also Published As

Publication number Publication date
CN106778033A (zh) 2017-05-31

Similar Documents

Publication Publication Date Title
CN106778033B (zh) 一种基于Spark平台的Spark Streaming异常温度数据报警方法
US10409650B2 (en) Efficient access scheduling for super scaled stream processing systems
US10262032B2 (en) Cache based efficient access scheduling for super scaled stream processing systems
CN109922315A (zh) 一种基于Spark与OpenCV的实时视频行为分析方法
Logothetis et al. In-situ {MapReduce} for Log Processing
Qian et al. Timestream: Reliable stream computation in the cloud
CN109710731A (zh) 一种基于Flink的数据流多向处理系统
CN108021809A (zh) 一种数据处理方法及系统
CN106873945A (zh) 基于批处理和流式处理的数据处理架构及数据处理方法
Liu et al. Real-time complex event processing and analytics for smart grid
CN107623639B (zh) 基于emd距离的数据流分布式相似性连接方法
CN110362600B (zh) 一种乱序数据流分布式聚合查询方法、系统及介质
Pal et al. Big data real time ingestion and machine learning
CN111046022A (zh) 一种基于大数据技术的数据库审计方法
Agrawal et al. Adaptive real‐time anomaly detection in cloud infrastructures
Sîrbu et al. Towards data-driven autonomics in data centers
Sîrbu et al. Towards operator-less data centers through data-driven, predictive, proactive autonomics
Dunne et al. A comparison of data streaming frameworks for anomaly detection in embedded systems
Debauche et al. Cloud platform using big data and hpc technologies for distributed and parallels treatments
Wang et al. Design and implementation of a high-performance stream-oriented big data processing system
Wang et al. A comprehensive study on fault tolerance in stream processing systems
CN107566341A (zh) 一种基于联邦分布式文件存储系统的数据持久化存储方法及系统
US20230297436A1 (en) Key-based aggregation service
Chen et al. Towards low-latency big data infrastructure at sangfor
Wang et al. Waterwheel: Realtime indexing and temporal range query processing over massive data streams

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 210000 new model road, Nanjing, Nanjing, Jiangsu

Applicant after: Nanjing Post & Telecommunication Univ.

Address before: 210023 No. 9 Wenyuan Road, Xianlin University City, Nanjing City, Jiangsu Province

Applicant before: Nanjing Post & Telecommunication Univ.

GR01 Patent grant
GR01 Patent grant