노드 클러스터에서 Node-RED를 수평 확장 할 수 있습니까? 동일한 문서를 찾을 수 없습니다. 제 시나리오는 초당 수백만 개의 이벤트를 처리하고 Node-RED를 사용하여 실시간으로 처리하는 것입니다.노드 클러스터에서 Node-RED를 수평으로 확장하는 방법은 무엇입니까?
답변
나는 Google Groups Node-RED 포럼 (https://groups.google.com/forum/#!topic/node-red/Nx1WWqBeLbI)에 질문을 올렸고 흥미로운 답변을 얻었습니다. 아래의 다양한 옵션을 적어 두십시오.
입력이 HTTP를 초과하는 경우 표준로드 균형 조정 기술을 사용하여 동일한 Node-RED 플로우를 실행하는 노드 클러스터에서 요청을로드 밸런스 할 수 있습니다. 하나는 HAProxy, Nginx 등을 사용할 수 있습니다. 많은 노드에서 같은 흐름을 실행하기 때문에 컨텍스트 변수에 어떤 상태도 저장할 수 없다는 점에 유의해야합니다. 우리는 Redis와 같은 외부 서비스에 국가를 저장해야합니다.
MQTT를 처리하는 경우 다음과 같은 여러 가지 옵션이 있습니다. 옵션 A : 각 플로우가 다른 주제를들을 수있게하십시오. MQTT 브로커의 다른 주제에 다른 게이트웨이를 게시하도록 할 수 있습니다 (예 : 흐름 인스턴스 1은 장치/a/#에 가입합니다. 노드 -RED 인스턴스 2는 장치/b/#에 가입합니다.
옵션 B : 일부 MQTT 브로커는 지점 간 메시징에 해당 '공유 구독'(HiveMQ)의 개념을 지원 - subsciption 그룹의 각 소비자가 메시지를 다음 브로커로드 -를 얻을 즉 라운드 로빈을 사용하여 잔액을 계산합니다. HiveMQ를 사용하여이 기능을 활성화하는 방법에 대한 설명은 여기 http://www.hivemq.com/blog/mqtt-client-load-balancing-with-shared-subscriptions/입니다. 소비자로드 밸런싱을위한 HiveMQ 지원에 대한 좋은 점은 소비자 코드에서 변경이 필요 없다는 것입니다. 당신은 어떤 MQTT 소비자를 계속 사용할 수 있습니다 - 단지 주제의 URL이 변경됩니다 :)
옵션 C를 : 당신은 페이로드를 읽고 부하의 클러스터에 HTTP 요청을 메시지 섭취에 대한 간단한 노드 RED 흐름을 넣어 (옵션 1과 유사) -balanced 노드 RED 흐름
옵션 D : 이것은 옵션 C의 확장이며 아파치 카프카를 사용하여 메시지 섭취 및 메시지 처리 사이의 버퍼를 생성 수반한다. 우리는 MQTT를 통해 장치에서 메시지를 수집하고 페이로드를 추출하여 카프카 (Kafka) 주제에 게시합니다. Kafka는 소비자 그룹의 개념을 사용하여 메시지 대기열 패러다임을 지원할 수 있습니다. 따라서 동일한 소비자 그룹을 사용하여 카프카 (Kafka) 주제에 가입하는 여러 노드 - 적색 플로우 인스턴스를 가질 수 있습니다. 메시지 브로커가 사용자로드 균형 조정을 지원하지 않는 경우에도이 옵션이 적합합니다.
여기 링크가있는 블로그 게시물 게시 한 - http://www.narendranaidu.com/2016/07/scaling-node-red-horizontally-for-high.html노드 - 레드 Google 그룹 https://groups.google.com/forum/#!topic/node- red/Nx1WWqBeLbI – hardillb
특성이 추가되었습니다. 고마워. –
이 더 나은 노드-RED 메일 링리스트에 질문 할 것을 정확히 어디에 당신이 뭘 하려는지에 대한 적절한 설명. https://groups.google.com/forum/#!forum/node-red – hardillb