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

이클립스 호노(Eclipse Hono), 아파치 카프카 지원으로 디바이스 메시징 원활화

이클립스 호노는 수많은 이기종 디바이스를 (클라우드) 백엔드에 연결하는 오픈소스 프로젝트입니다. 호노는 디바이스 간, 그리고 비즈니스 애플리케이션 간 균일한 통신을 가능케 하는 서비스 인터페이스를 정의합니다. 디바이스는 크게 다른 프로토콜을 사용할 수 있습니다. 이 프로젝트는 꽤 오랫동안 존재해 왔으며, 수년간 보쉬 IoT 디바이스 관리에서 성공적으로 사용되어 왔습니다. 새로운 점은 이제 아파치 카프카를 메시징용으로 지원한다는 것입니다. 이로 인한 이점과 호노 사용 변화를 이 기사에서 소개합니다.

이클립스 호노(Eclipse Hono), 아파치 카프카 지원으로 디바이스 메시징 원활화

디바이스에서 오는 데이터는 호노에서 프로토콜 어댑터(예: MQTT, HTTP, CoAP용)에 의해 균일한 메시지 포맷으로 변환되어 메시징 시스템으로 전달됩니다. 비즈니스 애플리케이션은 이 메시지들—텔레메트리 메시지 또는 이벤트—를 메시징 시스템에서 직접 읽습니다(또한 명령 및 제어를 사용해 디바이스에 메시지를 보내고 응답을 받을 수도 있습니다). 메시징은 호노의 일부가 아니며 외부에서 제공되어야 하는데, 지금까지 AMQP 1.0 프로토콜이 사용되었습니다.

버전 1.7부터 호노는 아파치 카프카를 메시징용 기술 프리뷰로 지원합니다. 호노의 핵심 기능은 메시징 시스템으로 메시지를 주고받기 위한 API의 정의와 구현입니다. API 정의가 메시징에 기반하고 그 특성에 직접 의존하므로, 새로운 메시징 시스템 지원은 호노에 근본적 혁신입니다. 호노의 모든 메시징 API(텔레메트리, 이벤트, 명령 및 제어)에 대해 카프카 기반 새 사양이 만들어졌으며, 프로토콜 어댑터 쪽과 비즈니스 애플리케이션 쪽 모두에 적용됩니다. AMQP 기반 API와 가능한 한 유사하게 동작하도록 주의했습니다.

이점

아파치 카프카는 매우 높은 처리량을 위해 설계된 분산 이벤트 스트리밍 플랫폼으로, 메시지 순서에 대한 특정 보장을 제공합니다. 여러 이유로 호노의 메시징 요구사항에 매우 적합합니다. 주요 이점은:

변화

AMQP 1.0은 피어 간 연결로 메시지를 교환하는 통신 프로토콜입니다. 반면 카프카 클러스터는 데이터를 영구 스토리지에 쓰고(읽고) 조정하는 브로커들로 구성됩니다. 이 차이는 두 가지 결과를 낳습니다. 첫째, 메시지는 결국 삭제되기 전까지 잠시 동안 검색 가능하게 유지됩니다. AMQP로 호노에서 이 효과를 내려면 일반적으로 이벤트를 저장하는 별도 메시지 브로커를 두어 비즈니스 애플리케이션이 일시적으로 사용 불가할 때 메시지 손실을 방지합니다. 카프카에서는 모든 메시지가 저장됩니다. 텔레메트리 메시지도 포함(저장 시간은 카프카 클러스터의 텔레메트리 토픽 구성에 의존). 둘째, 영구 스토리지를 통한 통신은 송수신 작업을 서로 디커플링합니다: 프로토콜 어댑터는 현재 연결된 소비자가 없으면 디바이스에 피드백할 수 없습니다. 대신 단순히 메시지를 저장하며 '비즈니스 애플리케이션이 언제 읽을지'를 '모르지' 않습니다.

시험해보기

호노 설치 시 AMQP 메시징 네트워크나 카프카 클러스터 중 하나를 배포해야 합니다. 둘 다 사용하도록 호노를 구성할 수도 있습니다. 그러면 각 테넌트(디바이스 및 설정의 부분집합)를 AMQP나 카프카 중 하나를 사용하도록 구성할 수 있습니다. 호노 프로젝트는 인터넷에서 공개적으로 접근 가능한 샌드박스 환경을 제공하여 AMQP나 카프카 기반 메시징으로 호노를 실험해볼 수 있게 합니다.

실제 예시

아래에서 호노 샌드박스에서 아파치 카프카 기반 메시징을 사용하는 작은 예제를 안내합니다. HTTP 프로토콜 어댑터에 텔레메트리 메시지를 보내고 카프카 클러스터에서 읽습니다.

명령줄에서 HTTP 명령을 보내 인터넷 연결 디바이스를 시뮬레이션합니다. 인기 있는 오픈소스 도구 curl을 사용합니다. 현재 컴퓨터에 설치되어 있지 않다면 curl 홈페이지의 설치 지침을 참조하세요. 비즈니스 애플리케이션 시뮬레이션에는 호노의 명령줄 클라이언트를 사용하며, 호노 다운로드 페이지에서 다운로드할 수 있습니다. 실행하려면 자바 11 이상이 필요합니다.

아래 명령 중 어떤 것이 작동하지 않으면(이런 지침에서는 언제든 발생 가능), 카프카 메시징 가이드에서 더 자세한 설명을 참조하세요.

디바이스 등록

먼저 샌드박스에서 다른 사용자와 간섭하지 않도록 새 테넌트를 생성해야 합니다. 다음 명령은 랜덤 ID로 테넌트를 생성하고 메시징용으로 카프카를 사용하도록 구성합니다.

$ curl -i -H "content-type: application/json" --data-binary '{
 "ext": {
 "messaging-type": "kafka"
 }
}' https://hono.eclipseprojects.io:28080/v1/tenants

출력에 {"id":"85f63e23-1b78-4156-8500-debcbd1a8d35"} 같은 내용이 포함되어야 합니다.

이 ID를 복사해 환경 변수로 설정합니다:

$ export MY_TENANT=85f63e23-1b78-4156-8500-debcbd1a8d35

테넌트용 디바이스 등록:

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

다시 반환된 ID를 환경 변수로 설정:

$ export MY_DEVICE=4412abe2-f219-4099-ae14-b446604ae9c6

마지막으로 디바이스 비밀번호 설정:

$ export MY_PWD=my-pwd
$ curl -i -X PUT -H "content-type: application/json" --data-binary '[{
 "type": "hashed-password",
 "auth-id": "'$MY_DEVICE'",
 "secrets": [{
 "pwd-plain": "'$MY_PWD'"
 }]
}]' https://hono.eclipseprojects.io:28080/v1/credentials/$MY_TENANT/$MY_DEVICE

메시지 전송

이제 디바이스를 등록했으니 메시지를 주고받을 수 있습니다.

메시지를 수신할 두 번째 터미널 창을 엽니다. 호노 명령줄 클라이언트를 다운로드한 디렉토리로 이동. 다음 명령으로 클라이언트 시작, 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 - Receiver [tenant: 85f63e23-1b78-4156-8500-debcbd1a8d35, mode: all] created successfully, hit ctrl-c to exit

첫 번째 터미널 창으로 돌아가 시뮬레이션된 디바이스에서 호노로 메시지 전송. 다음 명령은 HTTP 프로토콜 어댑터에 텔레메트리 메시지를 보냅니다:

$ curl -i -u $MY_DEVICE@$MY_TENANT:$MY_PWD -H "content-type: application/json" --data-binary '{"temp": 42}' https://hono.eclipseprojects.io:8080/telemetry

메시지가 두 번째 터미널에 출력되어야 합니다.

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

$ curl -i -u $MY_DEVICE@$MY_TENANT:$MY_PWD -H "content-type: application/json" --data-binary '{"hello": "kafka"}' https://hono.eclipseprojects.io:8080/event

이제 디바이스에서 호노로 메시지를 보내고 카프카 클러스터에서 수신하는 데 성공했기를 바랍니다. 다음 단계로 호노의 카프카 메시징 가이드에서 더 자세한 예제를 볼 수 있습니다. 비즈니스 애플리케이션에서 디바이스로 명령을 보내고 응답받는 방법도 나옵니다. 더 깊이 파고들고 싶으면 호노의 API 사양에서 카프카 기반 API 사양을 살펴보세요.

결론

메시징 시스템은 호노 핵심 기능의 기반입니다. 인터페이스가 그 위에 제공되기 때문입니다. AMQP 1.0과 함께 카프카를 지원하는 것은 호노에 매우 심오한 변화이며, 인터페이스가 서로 쉽게 매핑되도록 하는 데 큰 노력을 기울였습니다. 카프카의 핵심 이점은 확장성, 순서 보장, 광범위한 채택, 풍부한 상용 서비스 제공입니다. AMQP와의 주요 차이는 모든 메시지 타입이 브로커된다는 점입니다. 즉, 수신자가 잠시 연결 해제되어도 메시지가 전달될 수 있습니다. 통신도 시간 측면에서 디커플링되어 메시지 발신자가 수신자로부터 직접 피드백을 받을 수 없게 됩니다. 간단한 실전 예제로 시뮬레이션된 디바이스에서 호노 샌드박스로 메시지를 보내고 카프카 클러스터에서 소비하는 방법을 보여드렸습니다.

산업기술

  1. 원소 및 고온 초전도체 임계 온도 (켈빈)
  2. 절연체 유전 강도 – 전기 엔지니어를 위한 핵심 데이터
  3. 필수 도함수 규칙 퀵 레퍼런스
  4. 기본 역도함수 규칙: 상수, 합, 차
  5. 이클립스 호노, 몽고DB 기반 디바이스 레지스트리 출시—확장 가능, 프로덕션 준비
  6. 이클립스 호노 1.0.0 출시: 통합 오픈소스 IoT 연결 플랫폼
  7. 이클립스 Hono에서 X.509 인증서로 안전한 디바이스 인증 구현하기
  8. 극한 환경을 위한 견고한 PCB: 설계, 이점, 애플리케이션
  9. 제조를 위한 PCB 설계 최적화: 핵심 전략 및 모범 사례
  10. 5G 시대의 PCB 제조: 트렌드, 과제 및 기회