KR102167005B1 - 다중 kafka를 이용한 실시간 데이터 전송 시스템 및 방법 - Google Patents

다중 kafka를 이용한 실시간 데이터 전송 시스템 및 방법 Download PDF

Info

Publication number
KR102167005B1
KR102167005B1 KR1020180136731A KR20180136731A KR102167005B1 KR 102167005 B1 KR102167005 B1 KR 102167005B1 KR 1020180136731 A KR1020180136731 A KR 1020180136731A KR 20180136731 A KR20180136731 A KR 20180136731A KR 102167005 B1 KR102167005 B1 KR 102167005B1
Authority
KR
South Korea
Prior art keywords
kafka
message
data
server
producer
Prior art date
Application number
KR1020180136731A
Other languages
English (en)
Other versions
KR20200053286A (ko
Inventor
븐롱 리잉
류가애
류관희
Original Assignee
충북대학교 산학협력단
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 충북대학교 산학협력단 filed Critical 충북대학교 산학협력단
Priority to KR1020180136731A priority Critical patent/KR102167005B1/ko
Publication of KR20200053286A publication Critical patent/KR20200053286A/ko
Application granted granted Critical
Publication of KR102167005B1 publication Critical patent/KR102167005B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/054Input/output
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/052Linking several PLC's
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC

Abstract

본 발명의 다중 KAFKA를 이용한 실시간 데이터 전송 시스템에서, PLC로부터 센싱 데이터를 수집하고, 수집된 데이터를 사람이 읽을 수 있는 구조의 데이터로 정리하여 메시지를 생성하고, KAFKA 프로듀서(Producer)가 메시지를 공개 키로 암호화하여 KAFKA 서버로 전송하는 계층인 센싱 데이터 레이어, 상기 KAFKA 서버가 상기 KAFKA 프로듀서로부터 메시지를 수신하면 KAFKA 컨슈머(Consumer)가 새로 도착한 메시지를 구독하도록 통보하고, 수신한 메시지를 저장하는 브로커(Broker) 계층인 카프카 서버 레이어 및 KAFKA 컨슈머가 새로운 메시지를 구독하고, 개인 키를 이용하여 상기 KAFKA 서버로부터 수신한 메시지를 복호화하고, 스파크 엔진(Spark Engine)으로 메시지를 분석하는 데이터 소비 및 처리 레이어를 포함한다. 본 발명에 의하면, 다중 KAFKA를 이용하여 다수의 PLC들로부터 수집한 센싱 데이터를 실시간으로 전송함으로써, 매우 효율적으로 데이터를 스트리밍할 수 있다는 효과가 있다.

Description

다중 KAFKA를 이용한 실시간 데이터 전송 시스템 및 방법 {System and method for transmission of data in real time using multiple KAFKA}
본 발명은 다수의 PLC로부터 실시간으로 센싱(sensing) 데이터를 수집하여 전송하는 기술에 관한 것으로서, 더욱 상세하게는 다중 KAFKA를 이용하여 실시간으로 데이터를 전송하는 기술에 관한 것이다.
최근, 각종 전자, 통신 및 기계기술의 발달로 인하여 산업현장에서는 적은 인력으로 많은 생산량을 얻기 위한 자동화 시스템이 이용되고 있으며, 이를 위한 기술로 PLC(Programmable Logic Controller)가 많은 분야에 도입되고 있다.
PLC는 종래에 사용하던 시스템의 제어반 내에 구비된 릴레이 타이머, 카운터 등의 기능을 IC, 트랜스터 등의 반도체 소자로 대체시켜, 기본적인 시퀀스 제어 기능에 수치 연산 기능을 추가하여 프로그램 제어가 가능하도록한 자율성이 높은 제어 장치로써, 미국 전기 공업회 규격(NEMA: National Electrical Manufacturers Association)에서는 디지털 또는 아날로그 입출력 모듈을 통하여 로직, 시퀀싱, 타이밍, 카운팅, 연산과 같은 특수한 기능을 수행하기 위하여 프로그램 가능한 메모리를 사용하고 여러 종류의 기계나 프로세서를 제어하는 디지털 동작의 전자 장치로 정의하고 있다.
제조 산업에서 A 공장에서 B 공장으로 데이터를 전송하거나, 공장에서 대학으로 데이터를 전송하는 등, 다른 지역으로 데이터를 전송하는 것은 매우 중요하다.
PLC 용어는 공장 환경에서 기계의 공정을 제어하고 기계에서 데이터를 유지 보수하는 데 사용된다. 그리고, PLC에 의해 생성된 데이터는 HMI 및 SCADA와 같은 시각화 도구로 기계 상태를 모니터하는데 사용된다. 이러한 대부분의 도구는 모니터링 및 시각화 도구이며, 데이터 분석 및 예측에 있어서는 적당하지 않다.
도 1은 공장 데이터를 시각화하고 모니터링하는 툴을 도시한 것이다.
도 1을 참조하면, 이러한 툴(tool)은 공장 환경이나 센서 장비에서 기계를 모니터링하고 제어하는 데 사용된다.
도 2는 데이터 수집 프로그램을 일반화한 것이다.
도 2를 참조하면, 최근 특정 PLC로부터 센싱 데이터를 수집하여 특정 데이터 저장소에 저장하는 프로그램을 개발하려는 많은 시도가 있는데, PLC에서 데이터를 쿼리 한 후, 이 데이터를 사용하여 분석 및 시각화를 수행할 수 있다.
종래 데이터 수집 시스템은 특정 PLC로부터 데이터를 수집하고, 수집된 데이터는 암호화없이 인터넷을 통해 전송된다. 그리고, 데이터는 특정 데이터베이스(MySQL, PostgreSQL, ... 등)에 저장된다. 이러한 시스템에서는 하나의 데이터베이스에서 다른 데이터베이스(특히, 분산 데이터베이스 또는 NoSQL 데이터베이스)로 데이터를 이주시키는 것이 어렵다.
보통 다른 PLC로부터 데이터를 쿼리하고자 할 때, 다른 PLC 모델 때문에 다시 프로그램 해야하는 불편함이 있다. 그리고, PLC에서 데이터를 검색 할 때마다 PLC가 동일한 패턴 또는 처리를 수행하고 있음을 알지만 장치의 모든 주소와 의미를 PLC에 지정해야 하며, 방대한 양의 데이터가 있는 경우 RDBMS에서이 문제를 처리 할 수 없다.
또한, 네트워크를 통한 데이터 전송은 매우 위험한데, 매번 공격 받을 수 있는 위험성이 있다.
아파치 카프카(Apache KAFKA)는 대용량 실시간 로그 처리 시스템으로서, 발행/구독(Publish/Subscribe) 패러다임을 사용하여 처리하는 메시지 큐잉(Queueing) 시스템이다.
아파치 카프카는 LinkedIn에서 개발된 분산 메시징 시스템으로써 2011년에 오픈소스로 공개되었으며, 대용량의 실시간 로그처리에 특화된 아키텍처 설계를 통하여 기존 메시징 시스템보다 우수한 TPS를 보여주고 있다.
카프카(KAFKA)는 발행-구독(publish-subscribe) 모델을 기반으로 동작하며. 크게 프로듀서(producer), 컨슈머(consumer), 브로커(broker)로 구성된다.
카프카의 브로커는 토픽(topic)을 기준으로 메시지를 관리한다. 프로듀서는 특정 토픽의 메시지를 생성한 뒤, 해당 메시지를 브로커에 전달한다. 그리고, 브로커가 전달받은 메시지를 토픽 별로 분류하여 쌓아놓으면, 해당 토픽을 구독하는 컨슈머(consumer)들이 메시지를 가져가서 처리하게 된다.
카프카는 확장성(scale-out)과 고가용성(high availability)을 위하여 브로커(broker)들이 클러스터로 구성되어 동작하도록 설계되어 있으며, 심지어 브로커(broker)가 1개 밖에 없을 때에도 클러스터로써 동작한다.
아파치 카프카(Apache Kafka)는 플랫폼 간에 데이터를 송수신하는 데 유용한 소프트웨어로서, 현재 많은 회사가 사용하고 있다. 그런데 많은 사람들이 결과를 즉시 보고 싶어하므로, 실시간 처리 및 분석이 필수적이며, 그래서 아파치 스파크(Apache Spark)는 아파치 카프카(Apache Kafka)와 통합되는 적절한 소프트웨어이다.
데이터 프라이버시는 공공 부문을 포함한 모든 회사에서 가장 중요한 문제이므로 공개 키 암호화는 메시지를 송신 및 수신 시 정해진 방법으로 메시지를 암호화하고 복호화한다.
실제로 서수(ordinal) 아파치 카프카(Apache Kafka)를 사용하면 한 플랫폼에서 다른 플랫폼으로 데이터를 스트리밍하는 것이 더 좋지는 않게 되는데, 몇 가지 문제로 구성되어 데이터가 손실 될 수 있다. 또한, 카프카 서버에 보낼 메시지가 엄청나게 많으면 카프카 클라이언트는 정시에 메시지를 읽을 수 없다(비실시간).
그래서, 실시간으로 데이터를 분석하는 간단한 프로그램을 사용하여 처리하고 분석하는 데 많은 시간이 소요되며, 이것은 큰 데이터 기술에서 비효율적 인 방법이다.
그리고, 공공 및 민간 부문의 데이터를 공격하려는 많은 공격자가 있기 때문에, 인터넷을 통해 데이터를 전송하는 것은 중대한 문제이며 위험한 문제이다.
대한민국 등록특허 제10-0302565호
본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로서, 큰 작업이나 프로세스를 처리하기 위해 몇 가지 추가 속성과 멀티쓰레딩(multithreading)을 사용하여 아파치 카프카를 확장하고, 아파치(Apache Spark)를 사용하여 스파크로 인한 데이터 처리 및 분석을 처리하고, 공개 키 암호화를 사용하여 메시지를 암호화하고 복호화하는, 다중 KAFKA를 이용한 실시간 데이터 전송 시스템 및 방법을 제공하는데 그 목적이 있다.
본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
이와 같은 목적을 달성하기 위한 본 발명의 다중 KAFKA를 이용한 실시간 데이터 전송 시스템에서, PLC로부터 센싱 데이터를 수집하고, 수집된 데이터를 사람이 읽을 수 있는 구조의 데이터로 정리하여 메시지를 생성하고, KAFKA 프로듀서(Producer)가 메시지를 공개 키로 암호화하여 KAFKA 서버로 전송하는 계층인 센싱 데이터 레이어, 상기 KAFKA 서버가 상기 KAFKA 프로듀서로부터 메시지를 수신하면 KAFKA 컨슈머(Consumer)가 새로 도착한 메시지를 구독하도록 통보하고, 수신한 메시지를 저장하는 브로커(Broker) 계층인 카프카 서버 레이어 및 KAFKA 컨슈머가 새로운 메시지를 구독하고, 개인 키를 이용하여 상기 KAFKA 서버로부터 수신한 메시지를 복호화하고, 스파크 엔진(Spark Engine)으로 메시지를 분석하는 데이터 소비 및 처리 레이어를 포함한다.
본 발명의 일 실시예에서 상기 KAFKA 컨슈머는 상기 KAFKA 프로듀서에게 공개 키를 제공할 수 있다.
상기 KAFKA 프로듀서는 다수의 PLC로부터 센싱 데이터를 수집하기 위하여 다수의 프로듀서로 구성되고, 상기 KAFKA 서버는 하나 이상의 브로커로 구성되고, 각 브로커에는 다수의 파티션이 할당되고, 상기 KAFKA 컨슈머는 다수의 컨슈머로 구성되고, 상기 스파크 엔진은 다수의 스파크 엔진으로 구성될 수 있다.
이때, 상기 프로듀서와 상기 컨슈머의 수가 동일하도록 구현하고, 상기 프로듀서 및 상기 컨슈머의 수와 동일하도록 상기 파티션을 할당하는 것이 바람직하다.
본 발명의 다중 KAFKA를 이용한 실시간 데이터 전송 시스템에서의 실시간 데이터 전송 방법에서, PLC로부터 센싱 데이터를 수집하고, 수집된 데이터를 사람이 읽을 수 있는 구조의 데이터로 정리하여 메시지를 생성하고, KAFKA 프로듀서(Producer)가 메시지를 공개 키로 암호화하여 KAFKA 서버로 전송하는 단계, 상기 KAFKA 서버가 상기 KAFKA 프로듀서로부터 메시지를 수신하면 KAFKA 컨슈머(Consumer)가 새로 도착한 메시지를 구독하도록 통보하고, 수신한 메시지를 저장하는 단계 및 상기 KAFKA 컨슈머가 새로운 메시지를 구독하고, 개인 키를 이용하여 상기 KAFKA 서버로부터 수신한 메시지를 복호화하고, 스파크 엔진(Spark Engine)으로 메시지를 분석하는 단계를 포함한다.
본 발명의 일 실시예에서 상기 KAFKA 컨슈머는 상기 KAFKA 프로듀서에게 공개 키를 제공할 수 있다.
상기 KAFKA 프로듀서는 다수의 PLC로부터 센싱 데이터를 수집하기 위하여 다수의 프로듀서로 구성되고, 상기 KAFKA 서버는 하나 이상의 브로커로 구성되고, 각 브로커에는 다수의 파티션이 할당되고, 상기 KAFKA 컨슈머는 다수의 컨슈머로 구성되고, 상기 스파크 엔진은 다수의 스파크 엔진으로 구성될 수 있다.
이때, 상기 프로듀서와 상기 컨슈머의 수가 동일하도록 구현하고, 상기 프로듀서 및 상기 컨슈머의 수와 동일하도록 상기 파티션을 할당하는 것이 바람직하다.
본 발명에 의하면, 다중 KAFKA를 이용하여 다수의 PLC들로부터 수집한 센싱 데이터를 실시간으로 전송함으로써, 매우 효율적으로 데이터를 스트리밍할 수 있다는 효과가 있다. 특히, 공장에서 방대한 양의 데이터를 처리하는데 유용할 것으로 기대된다.
또한, 본 발명에 의하면, 공개 키 암호화 방식으로 카프카 메시지를 암호화하여 전송함으로써, 해커의 공격을 방지하여 데이터 전송 시 보안을 강화할 수 있는 효과가 있다.
도 1은 공장 데이터를 시각화하고 모니터링하는 툴을 도시한 것이다.
도 2는 데이터 수집 프로그램을 일반화한 것이다.
도 3은 이기종 PLC로부터 데이터를 실시간으로 수집하기 위한 데이터 수집 시스템을 개략적으로 도시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 실시간 데이터 전송 시스템을 개략적으로 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따른 다중 KAFKA를 이용한 실시간 데이터 전송 시스템을 개략적으로 도시한 도면이다.
도 6은 KAFKA의 구성을 나타낸 블록도이다.
도 7은 KAFKA 스트리밍을 나타낸 도면이다.
도 8은 KAFKA 오프셋 구성을 도시한 것이다.
도 9는 다중 파티션과 다중 컨슈머를 도시한 것이다.
도 10은 멀티쓰레딩을 보여주는 도면이다.
도 11은 본 발명의 일 실시예에서 처리/분석 엔진으로 스파크 엔진을 사용한 것을 나타낸 블록도이다.
도 12는 본 발명의 일 실시예에서 공개 키 암호화 기술을 이용하여 메시지를 암호화/복호화하는 것을 보여주는 도면이다.
도 13은 본 발명의 실험에서 20개의 PLC에 대한 성능 테스트 결과를 보여주는 그래프이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 갖는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 3은 이기종 PLC로부터 데이터를 실시간으로 수집하기 위한 데이터 수집 시스템을 개략적으로 도시한 도면이다.
도 3을 참조하면, 데이터 수집 시스템은 네 개의 레이어(layer)로 구분된다.
즉, PLC 연결을 제어하기 위한 이기종 PLC 관리 계층, PLC의 센싱 데이터를 탐색하기 위해 PLC로부터 센싱 데이터 추출 계층, 인터넷을 통해 데이터를 암호화하고 복호화하기 위한 보안 데이터 전송 계층 및 데이터베이스 연결을 제어하기 위한 이기종 데이터베이스 관리 계층으로 구분되어 있다.
도 4는 본 발명의 일 실시예에 따른 실시간 데이터 전송 시스템을 개략적으로 도시한 도면이다.
도 4를 참조하면, 본 발명의 다중 KAFKA를 이용한 실시간 데이터 전송 시스템은 센싱 데이터 레이어(Sensing Data Layer)(100), 카프카 서버 레이어(KAFKA Server Layer)(200), 데이터 소비 및 처리 레이어(Data Consumption and Processing Layer)(300)를 포함한다.
센싱 데이터 레이어(100)는 PLC(110)로부터 센싱 데이터를 수집하고, 수집된 데이터를 사람이 읽을 수 있는 구조의 데이터로 정리하여 메시지를 생성하고, KAFKA 프로듀서(Producer)(120)가 메시지를 공개 키(Public key)로 암호화(Encrypt)하여 인터넷을 통해 KAFKA 서버(210)로 전송하는 계층이다.
카프카 서버 레이어(200)는 KAFKA 서버(210)가 KAFKA 프로듀서(120)로부터 메시지를 수신하면 KAFKA 컨슈머(Consumer)(310)가 새로 도착한 메시지를 구독(subscribe)하도록 통보하고, 수신한 메시지를 저장하는 브로커(Broker) 계층이다.
데이터 소비 및 처리 레이어(300)는 KAFKA 컨슈머(310)가 새로운 메시지를 구독하고, 개인 키(Private key)를 이용하여 KAFKA 서버(210)로부터 수신한 메시지를 복호화(Decrypt)하고, 스파크 엔진(Spark Engine)으로 메시지를 분석하는 계층이다. 데이터 소비 및 처리 레이어(300)에서는 스파크 엔진을 통해 분석된 메시지를 DB 서버(320)로 전송하여 저장한다.
본 발명의 다중 KAFKA를 이용한 실시간 데이터 전송 시스템에서의 실시간 데이터 전송 방법에서, PLC(110)로부터 센싱 데이터를 수집하고, 수집된 데이터를 사람이 읽을 수 있는 구조의 데이터로 정리하여 메시지를 생성하고, KAFKA 프로듀서(Producer)(120)가 메시지를 공개 키로 암호화하여 KAFKA 서버로 전송하는 단계와, KAFKA 서버(210)가 KAFKA 프로듀서(120)로부터 메시지를 수신하면 KAFKA 컨슈머(Consumer)(310)가 새로 도착한 메시지를 구독하도록 통보하고, 수신한 메시지를 저장하는 단계와, KAFKA 컨슈머(310)가 새로운 메시지를 구독하고, 개인 키를 이용하여 KAFKA 서버(210)로부터 수신한 메시지를 복호화하고, 스파크 엔진(Spark Engine)으로 메시지를 분석하는 단계를 포함한다.
본 발명에서 KAFKA 컨슈머(310)는 KAFKA 프로듀서(120)에게 공개 키를 제공할 수 있다.
본 발명은 다중 KAFKA를 이용한 실시간 데이터 전송 기술에 관한 것이다.
도 5는 본 발명의 일 실시예에 따른 다중 KAFKA를 이용한 실시간 데이터 전송 시스템을 개략적으로 도시한 도면이다.
도 5에서 보는 바와 같이, 본 발명의 일 실시예에서 KAFKA 프로듀서(120)는 다수의 PLC로부터 센싱 데이터를 수집하기 위하여 다수의 프로듀서로 구성되고, KAFKA 서버(210)는 하나 이상의 브로커(Broker)로 구성되고, 각 브로커에는 다수의 파티션(partition)이 할당되고, KAFKA 컨슈머(310)는 다수의 컨슈머로 구성되고, 스파크 엔진은 다수의 스파크 엔진으로 구성될 수 있다.
이때, 프로듀서와 컨슈머의 수가 동일하도록 구현하고, 프로듀서 및 컨슈머의 수와 동일하도록 파티션을 할당하는 것이 바람직하다.
PLC에서 서버측으로 데이터를 전송하는 동안 파티션을 이용하여 시간을 절약할 수 있다.
도 5의 실시예에서는 6개의 PLC에서의 센싱 데이터를 처리하기 위해 세 개의 프로듀서와 세 개의 컨슈머를 포함하는 것이고, 3개의 센싱 데이터를 동시에 전송할 수 있다.
그리고, 카프카 서버(210)는 브로커 A, 브로커 B, 브로커 C를 포함하고, 각 브로커에는 세 개의 파티션이 할당되어 있다.
이처럼, 본 발명에서는 프로듀서, 컨슈머의 수와 일치하도록 파티션의 수를 할당하는 것이 바람직하다.
도 6은 KAFKA의 구성을 나타낸 블록도이고, 도 7은 KAFKA 스트리밍을 나타낸 도면이다.
도 6 및 도 7을 참조하면, KAFKA는 하나의 프로듀서, 브로커, 컨슈머로 구성되는 경우, 데이터 스트리밍 시에 메시지를 실시간으로 구독하는 것이 어렵다는 것을 알 수 있다.
도 8은 KAFKA 오프셋 구성을 도시한 것이다.
도 8을 참조하면, 컨슈머의 동작을 시작할 때, 컨슈머의 오프셋(offset)의 시작에 대해 고려하면, 컨슈머가 예기치 않게 종료될 때, 모든 메시지가 여전히 구독될 수 있도록 하기 위하여, 메시지를 소비하는데 “Earlies”를 사용하여 지정한다.
그리고, 주제에 대한 파티션을 정의하면, 모든 토픽은 6개의 파티션으로 구성된다고 정의한다.
KAFKA에서 파티셔닝은 KAFKA에서의 스케일링 방법이며, 메시지가 클수록 주제(topic)에서 파티션의 수를 증가시킨다.
KAFKA로부터 메시지를 구독하기 위해서는 KAFKA에서 “그룹”을 알아야 하며, 한 그룹에는 많은 컨슈머가 포함될 수 있다.
컨슈머는 자동으로 파티션이 할당되지만, 컨슈머의 숫자가 파티션의 숫자보다 많으면, 어떤 컨슈머는 파티션이 할당되지 않는다.
도 9는 다중 파티션과 다중 컨슈머를 도시한 것이다.
도 9에서 (a)는 하나의 프로듀서와 세 개의 파티션과 하나의 컨슈머가 구비된 실시예이고, (b)는 세 개의 프로듀서와 세 개의 파티션과 세 개의 컨슈머가 구비된 실시예이고, (c)는 세 개의 프로듀서와 세 개의 파티션과 두 개의 컨슈머가 구비된 실시예이고, (d)는 세 개의 프로듀서와 세 개의 파티션과 다섯 개의 컨슈머가 구비된 실시예가 도시되어 있다.
도 9에서 (d)의 실시예에서 컨슈머의 숫자가 파티션의 숫자보다 많은 경우를 보여주고 있으며, 이때 컨슈머4, 컨슈머5는 파티션이 할당되지 않은 상태인 것을 확인할 수 있다.
도 10은 멀티쓰레딩을 보여주는 도면이다.
도 10에서 보는 바와 같이, 본 발명에서는 RAM과 프로세스를 줄이기 위하여 멀티쓰레딩(multithreading)을 적용한다. 멀티쓰레딩은 시분할에 적합하며, 동시에 많은 작업을 처리할 수 있다.
도 11은 본 발명의 일 실시예에서 처리/분석 엔진으로 스파크 엔진을 사용한 것을 나타낸 블록도이다.
도 11에서 보는 바와 같이, 본 발명에서는 스파크(Spark)를 실시간 프로세싱 및 분석 엔진으로 사용하고 있으며, 스파크는 컨슈머와 긴밀하게 협업한다.
그리고, 보내는 데이터 형식은 JSON 파일이므로 공작물, 기계 상태 및 경보와 같은 모든 그룹으로 추출하고 필터링해야 한다. 일반적으로 메시지를 추출하고 데이터베이스에 저장한 후에 통계 요약을 적용해야 한다.
스파크는 RAM을 계산 엔진(RDD)으로 사용하기 때문에, 스파크를 사용하면 카프카의 큰 메시지를 처리하는 데 매우 유용하다.
도 12는 본 발명의 일 실시예에서 공개 키 암호화 기술을 이용하여 메시지를 암호화/복호화하는 것을 보여주는 도면이다.
도 12를 참조하면, 본 발명에서 메시지를 암호화하고 복호화하는데 공개 키 암호화 기법을 사용한다. 이는 메시지 크기를 줄이고, 보안을 강화할 수 있다.
공개 키 암호화 기법에서 프로듀서는 메시지를 암호화하기 위한 공개 키를 포함한다. 그리고, 컨슈머는 메시지를 복호화하기 위하여 개인 키를 포함한다. 여기서 메시지를 복호화하는 유일한 방법은 컨슈머가 생성한 개인 키를 사용하는 것이다.
도 13은 본 발명의 실험에서 20개의 PLC에 대한 성능 테스트 결과를 보여주는 그래프이다.
도 13에서는 E7 패밀리 듀얼 인텔 제온 프로세서 CPU, 32GB RAM, 500GB SSD의 리눅스 서버를 사용하여 실험을 진행하였다.
도 13에서 보는 바와 같이, 파티션의 수가 증가할수록 처리 시간이 빨라지는 것을 확인할 수 있다. 즉, 파티션이 증가할수록 성능이 좋아진다고 할 수 있다.
PLC에서는 엄청난 감지 데이터가 생성되며, 이 데이터는 스트리밍되고 처리되어야 한다. 또한 그 처리 결과를 구조 데이터로 변환해야 하고, 사람이 읽을 수 있는 형식으로 변환해야 한다. 제조 업계에서 이러한 원시 감지 데이터의 전송은 매우 위험하며 중요한 문제이다. 본 발명에서는 Apache Kafka, Spark 및 공개 키 암호화를 사용하여 데이터를 스트리밍하고 처리하는 방법을 제안함으로써, PLC와 데이터베이스 서버간에 실시간 스트리밍 및 처리를 수행하도록 한다. 또한, 카프카에서 프로듀서로부터 컨슈머에게 방송되는 모든 메시지는 강력한 보안 접근 방식으로 암호화되어야 한다.
이상에서 설명한 바와 같이, 본 발명에서 제안하는 실시간 데이터 전송 방식은 제조 업계에서 데이터를 스트리밍하는 데 유용한 방법이다. 본 발명에서 제안하는 방법으로 공장에서 방대한 양의 데이터를 감지하여 처리할 수 있다. 그리고, 사용자는 데이터가 데이터베이스에 제 시간에 전송되고, 처리되고, 분석되는지 확인할 수 있다. 그리고, 인터넷을 통해 전송되는 메시지는 송신하거나 수신할 때 보안이 수행되어, 해커의 공격으로부터 안전하다.
이상 본 발명을 몇 가지 바람직한 실시예를 사용하여 설명하였으나, 이들 실시예는 예시적인 것이며 한정적인 것이 아니다. 본 발명이 속하는 기술분야에서 통상의 지식을 지닌 자라면 본 발명의 사상과 첨부된 특허청구범위에 제시된 권리범위에서 벗어나지 않으면서 다양한 변화와 수정을 가할 수 있음을 이해할 것이다.
100 센싱 데이터 레이어 200 카프카 서버 레이어
300 데이터 소비 및 처리 레이어 110 PLC
120 프로듀서 210 카프카 서버
310 컨슈머 320 DB 서버

Claims (8)

  1. 다중 KAFKA를 이용한 실시간 데이터 전송 시스템에서,
    PLC로부터 센싱 데이터를 수집하고, 수집된 데이터를 사람이 읽을 수 있는 구조의 데이터로 정리하여 메시지를 생성하고, KAFKA 프로듀서(Producer)가 메시지를 공개 키로 암호화하여 KAFKA 서버로 전송하는 계층인 센싱 데이터 레이어;
    상기 KAFKA 서버가 상기 KAFKA 프로듀서로부터 메시지를 수신하면 KAFKA 컨슈머(Consumer)가 새로 도착한 메시지를 구독하도록 통보하고, 수신한 메시지를 저장하는 브로커(Broker) 계층인 카프카 서버 레이어; 및
    KAFKA 컨슈머가 새로운 메시지를 구독하고, 개인 키를 이용하여 상기 KAFKA 서버로부터 수신한 메시지를 복호화하고, 스파크 엔진(Spark Engine)으로 메시지를 분석하는 데이터 소비 및 처리 레이어를 포함하는 실시간 데이터 전송 시스템.
  2. 청구항 1에 있어서,
    상기 KAFKA 컨슈머는 상기 KAFKA 프로듀서에게 공개 키를 제공하는 것을 특징으로 하는 실시간 데이터 전송 시스템.
  3. 청구항 1에 있어서,
    상기 KAFKA 프로듀서는 다수의 PLC로부터 센싱 데이터를 수집하기 위하여 다수의 프로듀서로 구성되고,
    상기 KAFKA 서버는 하나 이상의 브로커로 구성되고, 각 브로커에는 다수의 파티션이 할당되고,
    상기 KAFKA 컨슈머는 다수의 컨슈머로 구성되고,
    상기 스파크 엔진은 다수의 스파크 엔진으로 구성되는 것임을 특징으로 하는 실시간 데이터 전송 시스템.
  4. 청구항 3에 있어서,
    상기 프로듀서와 상기 컨슈머의 수가 동일하도록 구현하고,
    상기 프로듀서 및 상기 컨슈머의 수와 동일하도록 상기 파티션을 할당하는 것을 특징으로 하는 실시간 데이터 전송 시스템.
  5. 다중 KAFKA를 이용한 실시간 데이터 전송 시스템에서의 실시간 데이터 전송 방법에서,
    PLC로부터 센싱 데이터를 수집하고, 수집된 데이터를 사람이 읽을 수 있는 구조의 데이터로 정리하여 메시지를 생성하고, KAFKA 프로듀서(Producer)가 메시지를 공개 키로 암호화하여 KAFKA 서버로 전송하는 단계;
    상기 KAFKA 서버가 상기 KAFKA 프로듀서로부터 메시지를 수신하면 KAFKA 컨슈머(Consumer)가 새로 도착한 메시지를 구독하도록 통보하고, 수신한 메시지를 저장하는 단계; 및
    상기 KAFKA 컨슈머가 새로운 메시지를 구독하고, 개인 키를 이용하여 상기 KAFKA 서버로부터 수신한 메시지를 복호화하고, 스파크 엔진(Spark Engine)으로 메시지를 분석하는 단계를 포함하는 실시간 데이터 전송 방법.
  6. 청구항 5에 있어서,
    상기 KAFKA 컨슈머는 상기 KAFKA 프로듀서에게 공개 키를 제공하는 것을 특징으로 하는 실시간 데이터 전송 방법.
  7. 청구항 5에 있어서,
    상기 KAFKA 프로듀서는 다수의 PLC로부터 센싱 데이터를 수집하기 위하여 다수의 프로듀서로 구성되고,
    상기 KAFKA 서버는 하나 이상의 브로커로 구성되고, 각 브로커에는 다수의 파티션이 할당되고,
    상기 KAFKA 컨슈머는 다수의 컨슈머로 구성되고,
    상기 스파크 엔진은 다수의 스파크 엔진으로 구성되는 것임을 특징으로 하는 실시간 데이터 전송 방법.
  8. 청구항 7에 있어서,
    상기 프로듀서와 상기 컨슈머의 수가 동일하도록 구현하고,
    상기 프로듀서 및 상기 컨슈머의 수와 동일하도록 상기 파티션을 할당하는 것을 특징으로 하는 실시간 데이터 전송 방법.
KR1020180136731A 2018-11-08 2018-11-08 다중 kafka를 이용한 실시간 데이터 전송 시스템 및 방법 KR102167005B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180136731A KR102167005B1 (ko) 2018-11-08 2018-11-08 다중 kafka를 이용한 실시간 데이터 전송 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180136731A KR102167005B1 (ko) 2018-11-08 2018-11-08 다중 kafka를 이용한 실시간 데이터 전송 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20200053286A KR20200053286A (ko) 2020-05-18
KR102167005B1 true KR102167005B1 (ko) 2020-10-16

Family

ID=70912831

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180136731A KR102167005B1 (ko) 2018-11-08 2018-11-08 다중 kafka를 이용한 실시간 데이터 전송 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR102167005B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220121643A (ko) * 2021-02-25 2022-09-01 김상욱 가스 배관 모니터링 방법 및 시스템

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112003905A (zh) * 2020-07-31 2020-11-27 智慧航海(青岛)科技有限公司 船岸多终端数据共享方法和系统、智能船舶应用管理系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100302565B1 (ko) 1999-08-18 2001-11-01 홍상복 이기종 피엘씨간의 데이터 전송 및 공유 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Leang 등, Real-Time Transmission of Secured PLCs Sensing, 2018 IEEE Confs (2018.07.30.)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220121643A (ko) * 2021-02-25 2022-09-01 김상욱 가스 배관 모니터링 방법 및 시스템
KR102648709B1 (ko) * 2021-02-25 2024-03-15 김상욱 가스 배관 모니터링 방법 및 시스템

Also Published As

Publication number Publication date
KR20200053286A (ko) 2020-05-18

Similar Documents

Publication Publication Date Title
Yu et al. A survey on IIoT security
CN110430260B (zh) 一种基于大数据云计算支撑的机器人云平台及工作方法
US10317888B2 (en) Device and system including multiple devices for supervision and control of machines in industrial installation
US10135705B2 (en) Industrial internet of things data pipeline for a data lake
US20180063244A1 (en) On-premise data collection and ingestion using industrial cloud agents
CA3054637A1 (en) Device and system including multiple devices for supervision and control of machines in industrial installation
CN110460656A (zh) 一种工业环保物联网远程监测云平台
US11140137B2 (en) Method and industrial computing apparatus for performing a secure communication
JP2023504549A (ja) 集中型知識リポジトリおよびデータマイニングシステム
KR102167005B1 (ko) 다중 kafka를 이용한 실시간 데이터 전송 시스템 및 방법
EP3979557A1 (en) Systems and method for detecting anomalies in network communication
Ralph et al. Digitalization and digital transformation in metal forming: key technologies, challenges and current developments of industry 4.0 applications
Ferry et al. Towards a big data platform for managing machine generated data in the cloud
EP2677441A1 (en) Storing operational data of an industrial control system
CN115867913A (zh) 隐私保护的单向通信设备
Leang et al. Real-time transmission of secured plcs sensing data
CN115442029A (zh) 一种用于智能工厂的云平台
KR102142127B1 (ko) 이기종 plc로부터 실시간으로 데이터를 수집하는 방법 및 시스템
CN114968583A (zh) 一种数据计算方法及边缘组网
Park et al. A Study on Big Data Collecting and Utilizing Smart Factory Based Grid Networking Big Data Using Apache Kafka
Lehnberger Industrial internet of things for the sugar industry–initial results
US11044320B2 (en) Data distribution method for a process automation and internet of things system
CN112995111A (zh) 基于区块链的物联网安全检测方法、设备、系统和介质
Bhattacharya et al. Analysis of the Message Queueing Telemetry Transport Protocol for Data Labelling: An Orthopedic Manufacturing Process Case Study.
AU2021101788A4 (en) Development of big data analytics for intelligent industrial manufacturing based on iot

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
G170 Publication of correction