Google 컨테이너 엔진 용 클러스터에서 맞춤식이지만 확장 가능한 작업 대기열을 개발하는 이식성있는 방법을 알아 내려고합니다. 이 시나리오는 프론트 엔드에서 노드 js 인스턴스의 사용자 세부 정보를 캡처하는 시나리오입니다. 이러한 세부 정보는 api 시스템으로 보내지며,이 세부 정보는 db와 연결되어 사용자 세부 정보를 저장하며 환영 메일을 보내야합니다. 내 문제는 내가 보내는 메일 요청을 처리하는 데 동일한 api 끝점 메서드를 사용하고 싶지 않아, 내 kubernetes 인프라와 함께 처리하는 방법을 처리 할 다른 프로세스가 필요합니까?. 펍 하위 구현해야합니까 어떤 유형의 시스템을 다른 컨테이너에 게시 할 것인가? 이렇게하면 모든 구독자가 내 업데이트를 알리 겠지만 하위 시스템 인스턴스를 2 개 실행하면 변경 사항을 준수하고 메일을 두 번 보낼 수 있습니다. 이것에 대한 생각이나 아이디어는 인정 될 것입니다.Google 컨테이너 엔진의 비동기 작업 대기열
0
A
답변
1
나는 이것에 접근하는 두 가지 합리적인 방법을 보았습니다.
1 : API를 사용하여 우편 이벤트를 수신하고 수신 한 후 즉시 반송하여 비동기 적으로 우편물을 처리하는 서비스가 있습니다. kube 서비스를 사용하면 하나의 서비스만을 공격 할 것이고 하나의 메일은 호출 서비스를위한 비 차단 방식으로 전송 될 것입니다. 그러나 그것은 단점을 가지고 있습니다 - 즉. 무엇인가가 실패하면 메일이 전혀 생성되지 않을 수도 있습니다.
2 : 아마도 일부 MQ (Kafka, Rabbit 등)에 가서 메시지 대기열을 여러 메일 링 서비스 인스턴스에서 사용하고 하나만 메시지를 수신 할 수 있도록하고 ack가 필요합니다. 메시지가 없으면 처리 할 수 없습니다. N 분
"메시지를 수신 할 수 있는지 확인하고 메시지에 ack가 필요하거나 N 분 내에 확인이 없으면 처리로 되돌립니다". 그들 모두가 동일한 주제에 가입하고 있기 때문에 하나만 인스턴스에 의해 선택되도록하십시오. 그렇다면 내 가입자의 인스턴스 하나만 항상 실행하도록해야합니까? –
그것은 다른 브로커에서 다르게 명명되었지만 일반적으로 여러 중개자와 고유 한 메시지가있는 소비자에게만 전달되는 메시지를 전달하는 모든 브로커는 –
내 API 계층에서 쓰레드 풀을 사용하여 줄일 것을 고려하고 있습니다. 오버 헤드. –