산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

메시징을 위해 Apache Kafka를 지원하는 Eclipse Hono

Eclipse Hono는 다수의 이기종 장치를 (클라우드) 백엔드에 연결하기 위한 오픈 소스 프로젝트입니다. Hono는 비즈니스 애플리케이션뿐만 아니라 광범위하게 다른 프로토콜을 사용할 수 있는 장치 간의 균일한 통신을 가능하게 하는 서비스 인터페이스를 정의합니다. 이 프로젝트는 얼마 동안 진행되었으며 몇 년 동안 Bosch IoT Device Management에서 성공적으로 사용되었습니다. 새로운 점은 이제 메시징을 위해 Apache Kafka를 지원한다는 것입니다. 이 기사에서 Hono 사용의 이점과 변경 사항을 소개합니다.

기기에서 오는 데이터는 프로토콜 어댑터에 의해 Hono에서 균일한 메시지 형식으로 변환됩니다. (예:MQTT, HTTP 및 CoAp용이 있음) 메시징 시스템으로 전달됩니다. 비즈니스 애플리케이션은 원격 분석 메시지인 이러한 메시지를 읽습니다. 또는 이벤트 , 메시징 시스템에서 직접(명령 및 제어를 사용할 수도 있습니다. 장치에 메시지를 보내고 응답을 받기 위해). Hono의 일부는 아니지만 외부에서 제공해야 하는 메시징의 경우 지금까지 AMQP 1.0 프로토콜이 사용되었습니다.

버전 1.7부터 Hono는 기술 미리보기로 메시징용 Apache Kafka를 지원합니다. . Hono의 주요 기능은 메시징 시스템과 메시지를 주고받기 위한 API의 정의 및 구현입니다. API 정의는 메시징을 기반으로 하고 해당 속성에 직접 의존하기 때문에 새로운 메시징 시스템을 지원하는 것은 Hono의 근본적인 혁신입니다. Hono의 모든 메시징 API(원격 분석 , 이벤트명령 및 제어 ), Kafka를 기반으로 하는 새로운 사양이 만들어졌으며, 둘 다 프로토콜 어댑터와 비즈니스 응용 프로그램에 대면했습니다. AMQP 기반 API와 최대한 비슷하게 작동하도록 주의를 기울였습니다.

혜택

Apache Kafka는 메시지 순서에 따라 특정 보장을 제공하면서 매우 높은 처리량을 위해 설계된 분산 이벤트 스트리밍 플랫폼입니다. 여러 가지 이유로 메시징과 관련된 Hono의 요구 사항에 매우 적합합니다. 주요 이점은 다음과 같습니다.

<울>
  • 확장 :여러 대의 Kafka 서버를 필요에 따라 확장할 수 있는 클러스터로 동시에 운영합니다. Kafka는 많은 프로세스가 동시에 데이터를 쓰고 읽을 수 있도록 최적화되어 있습니다. AMQP 1.0을 사용하면 여러 프로세스가 동일한 주소의 메시지를 병렬로 사용할 수도 있습니다. 그러나 이는 주문을 잃게 됨을 의미합니다.
  • 메시지 순서 :Kafka의 핵심 기능 중 하나는 파티션 키를 통한 데이터 분할입니다. 주문을 유지해야 하는 데이터와 병렬로 처리할 수 있는 데이터를 선택하는 데 사용할 수 있습니다. Hono에서는 이를 통해 장치의 모든 이벤트가 올바른 순서로 비즈니스 애플리케이션에 제공되는지 쉽게 확인할 수 있습니다. 장치의 원격 측정 데이터는 병렬로 처리할 수 있으며 순서도 보장됩니다. 다른 모든 장치의 메시지는 동시에 사용되는 비즈니스 애플리케이션의 여러 인스턴스에서도 완전히 독립적으로 병렬로 사용할 수 있습니다.
  • 광범위한 채택 :Kafka는 많은 회사에서 사용하고 있으며 다른 많은 기술에서 지원합니다. 여러 회사에서 Kafka를 다양한 클라우드 플랫폼에서 예약할 수 있는 서비스로 제공합니다. 이를 통해 Hono에 전문적으로 운영되는 메시징 시스템을 쉽게 제공할 수 있습니다. 공급업체 종속성도 방지됩니다.
  • 변경 사항

    AMQP 1.0은 피어가 서로 연결하여 메시지를 교환하는 통신 프로토콜입니다. 대조적으로 Kafka 클러스터는 영구 저장소에 대한 데이터 쓰기(및 읽기)를 조정하는 브로커로 구성됩니다. 이 차이는 두 가지 결과를 낳습니다. 첫째, 메시지가 결국 삭제되기 전에 잠시 동안 검색할 수 있습니다. AMQP가 있는 Hono에서 이 효과를 얻으려면 일반적으로 이벤트가 있는 별도의 메시지 브로커를 제공합니다. 비즈니스 응용 프로그램을 일시적으로 사용할 수 없는 경우 메시지 손실을 방지하기 위해 저장됩니다. Kafka를 사용하면 모든 메시지가 저장됩니다. 여기에는 원격 분석 메시지가 포함됩니다(단, 저장 시간은 Kafka 클러스터의 원격 분석 주제 구성에 따라 다름). 둘째, 영구 저장소를 통한 통신은 서로의 송수신 작업을 분리합니다. 현재 연결된 소비자가 없는 경우 프로토콜 어댑터는 더 이상 장치에 다시 보고할 수 없습니다. 대신, 비즈니스 애플리케이션이 언제 메시지를 읽을지 "모르는" 상태로 단순히 메시지를 저장합니다.

    시도

    Hono를 설치할 때 AMQP 메시징 네트워크 또는 Kafka 클러스터를 배포해야 합니다. 둘 다 사용하도록 Hono를 구성할 수도 있습니다. 메시징 시스템. 그런 다음 AMQP 또는 Kafka를 사용하도록 각 테넌트(장치 및 구성의 하위 집합)를 구성할 수 있습니다. Hono 프로젝트는 AMQP 또는 Kafka 기반 메시징을 사용하여 Hono를 실험할 수 있는 인터넷에서 공개적으로 액세스할 수 있는 샌드박스 환경을 제공합니다.

    실용적인 예

    다음에서는 Hono 샌드박스에서 Apache Kafka 기반 메시징을 사용하는 방법에 대한 작은 예를 안내합니다. 원격 측정 메시지를 HTTP 프로토콜 어댑터로 보낸 다음 Kafka 클러스터에서 읽습니다.

    명령줄에서 HTTP 명령을 전송하여 인터넷 사용 장치를 시뮬레이션합니다. 이를 위해 인기 있는 오픈 소스 도구인 curl을 사용합니다. . 현재 컴퓨터에 설치되어 있지 않은 경우 curl 홈페이지의 설치 지침을 참조하십시오. 비즈니스 애플리케이션을 시뮬레이션하기 위해 Hono 다운로드 페이지에서 다운로드할 수 있는 Hono의 명령줄 클라이언트를 사용합니다. Java를 실행하려면 버전 11 이상에 Java가 설치되어 있어야 합니다.

    아래에 표시된 명령 중 하나라도 작동하지 않는 경우(해당 지침에서 항상 발생할 수 있음) 자세한 내용은 설명에 포함된 Kafka 메시징 가이드를 참조하세요.

    기기 등록

    먼저 다른 사용자를 방해하지 않도록 샌드박스에 새 테넌트를 생성해야 합니다. 다음 명령은 임의의 ID로 테넌트를 생성하고 메시징에 Kafka를 사용하도록 구성합니다.

    $ curl -i -H "콘텐츠 유형:애플리케이션/json" --data-binary '{ "내선":{ "메시지 유형":"카프카" } }' http://hono.eclipseprojects.io:28080/v1/tenants

    출력에는 {"id":"85f63e23-1b78-4156-8500-debcbd1a8d35"} 행을 따라 무언가가 포함되어야 합니다. .

    이제 이 ID를 복사하여 다음과 같이 환경 변수로 설정합니다.

    $ 수출 MY_TENANT=85f63e23-1b78-4156-8500-debcbd1a8d35

    테넌트를 위한 장치 등록:

    $ curl -i -X ​​POST http://hono.eclipseprojects.io:28080/v1/devices/$MY_TENANT

    다음과 같이 반환된 ID를 환경 변수로 다시 한 번 제공합니다.

    $ 내보내기 MY_DEVICE=4412abe2-f219-4099-ae14-b446604ae9c6

    마지막으로 기기의 비밀번호를 설정하세요:

    $ 내보내기 MY_PWD=my-pwd $ curl -i -X ​​PUT -H "콘텐츠 유형:애플리케이션/json" --data-binary '[{ "유형":"해시된 암호", "인증 ID":"'$MY_DEVICE'", "비밀":[{ "pwd-plain":"'$MY_PWD'" }] }]' http://hono.eclipseprojects.io:28080/v1/credentials/$MY_TENANT/$MY_DEVICE

    메시지 보내기

    이제 장치를 등록했으므로 메시지를 보내고 받을 수 있습니다.

    메시지를 수신하려면 두 번째 터미널 창을 엽니다. Hono 명령줄 클라이언트를 다운로드한 디렉터리로 이동합니다. 이제 다음 명령으로 클라이언트를 시작하고 my-tenant 방금 생성한 테넌트의 ID로:

    # hono-cli-*-exec.jar 파일이 다운로드된 디렉토리 $ java -jar hono-cli-*-exec.jar --spring.profiles.active=receiver,sandbox,kafka --tenant.id="my-tenant"

    출력에 다음과 유사한 줄이 포함되어 있으면 클라이언트가 메시지를 받을 준비가 된 것입니다.
    10:23:01.807 [vert.x-eventloop-thread-0] INFO org.eclipse.hono.cli. app.Receiver - 수신기 [테넌트:85f63e23-1b78-4156-8500-debcbd1a8d35, 모드:all]가 성공적으로 생성되었습니다. 종료하려면 ctrl-c를 누르십시오.

    이제 시뮬레이션된 장치에서 Hono로 메시지를 보낼 수 있습니다. 이렇게 하려면 첫 번째 터미널 창으로 다시 전환합니다. 다음 명령은 원격 측정 메시지를 HTTP 프로토콜 어댑터로 보냅니다.

    $ curl -i -u $MY_DEVICE@$MY_TENANT:$MY_PWD -H "콘텐츠 유형:애플리케이션/json" --data-binary '{"temp":42}' http://hono.eclipseprojects.io:8080 /원격 측정

    이제 두 번째 터미널에서 메시지가 인쇄되어야 합니다.

    이벤트를 보낼 수도 있습니다. :

    $ curl -i -u $MY_DEVICE@$MY_TENANT:$MY_PWD -H "콘텐츠 유형:애플리케이션/json" --data-binary '{"hello":"kafka"}' http://hono.eclipseprojects.io :8080/이벤트

    이제 장치에서 Hono로 메시지를 보내고 Kafka 클러스터에서 메시지를 받는 데 성공했을 것입니다. 다음 단계로 Hono의 Kafka Messaging Guide에서 더 자세한 예를 살펴볼 수 있습니다. 또한 비즈니스 애플리케이션에서 장치로 명령을 보내고 응답하는 방법을 보여줍니다. 더 깊이 파고 싶다면 Hono의 API 사양에서 찾을 수 있는 Kafka 기반 API의 사양을 살펴보는 것이 좋습니다.

    결론

    메시징 시스템은 그 위에 인터페이스가 제공되기 때문에 Eclipse Hono의 핵심 기능의 기반입니다. AMQP 1.0과 함께 Kafka를 지원하는 것은 인터페이스가 서로 쉽게 매핑될 수 있도록 하는 데 중점을 둔 Hono의 매우 중대한 변화입니다. Kafka의 주요 이점은 확장성, 주문 보장, 광범위한 채택 및 풍부한 상용 서비스 제공입니다. AMQP를 사용한 메시징의 주요 차이점은 모든 메시지 유형이 중개된다는 것입니다. 즉, 받는 사람의 연결이 잠시 끊어져도 메시지를 전달할 수 있습니다. 또한 통신은 시간 면에서 분리되어 메시지를 받는 사람에서 보낸 사람에게 더 이상 직접 피드백이 불가능합니다. 간단한 실제 예에서 시뮬레이션된 장치에서 Hono 샌드박스로 메시지를 보내고 Kafka 클러스터에서 사용하는 방법을 보여주었습니다.


    산업기술

    1. 초전도체의 임계 온도
    2. 절연체의 절연 강도
    3. 파생상품 규정
    4. 반도함수 규정
    5. Eclipse Hono의 새로운 MongoDB 기반 장치 레지스트리 릴리스
    6. Eclipse Hono 1.0.0 출시:개방형 IoT 연결 플랫폼
    7. Eclipse Hono의 X.509 기반 장치 인증
    8. 열악한 환경을 위한 PCB
    9. PCB 제조를 위한 설계
    10. 5G용 PCB 제조