Kafka 사이트 에 따르면 :
" Kakfa는 실시간 데이터 파이프 라인 및 스트리밍 앱을 구축하는 데 사용됩니다. "
인터넷을 광범위하게 검색하면서 " 스트림 데이터 "가 무엇인지에 대해 다음과 같이 일반적으로 수용되는 정의를 찾았습니다 .
- 스트림 데이터는 네트워크를 통해 소스에서 대상으로 연속적으로 흐르는 데이터입니다. 과
- 스트림 데이터는 본질적으로 원자 적이 지 않습니다 . 즉, 데이터 스트림이없는 한 바이트가 의미가없는 파일과 달리 흐르는 데이터 스트림의 일부는 의미 있고 처리 가능합니다. 과
- 스트림 데이터는 언제든지 시작 / 중지 할 수 있습니다. 과
- 소비자는 원하는대로 데이터 스트림을 연결 및 분리하고 원하는 부분 만 처리 할 수 있습니다.
이제 위에서 말한 내용이 정확하지 않거나 불완전하거나 완전히 틀린 경우 먼저 수정 해주세요. 내가 거의 궤도에 있다고 가정하면 ...
"스트리밍 데이터"가 무엇인지 이해 했으므로 Kafka와 Kinesis가 스트리밍 데이터가있는 응용 프로그램의 처리 / 브로커 링 미들웨어로 청구 할 때의 의미를 이해합니다. 그러나 Kafka 또는 Kinesis와 같은 "스트림 미들웨어"를 기존 메시지 브로커와 같은 비 스트리밍 데이터에 사용할 수 있습니까? 그 반대의 경우 : RabbitMQ, ActiveMQ, Apollo 등과 같은 기존 MQ를 스트리밍 데이터에 사용할 수 있습니까?
애플리케이션이 처리해야하는 JSON 메시지의 백엔드 상수 공격을 전송하고 처리가 상당히 복잡한 경우 (유효성 검증, 데이터 변환, 필터링, 집계 등)를 예로 들어 보겠습니다.
- 사례 # 1 : 메시지는 영화의 각 프레임입니다. 프레임 데이터와 일부 지원 메타 데이터를 포함하는 비디오 프레임 당 하나의 JSON 메시지입니다.
- 사례 # 2 : 메시지는 시계열 데이터이며 시간의 함수로서 누군가의 심장 박동일 수 있습니다. 따라서 메시지 # 1은 t = 1에서 내 심장 박동을 나타내는 것으로 전송되고 메시지 # 2는 t = 2에서 내 심장 박동을 포함합니다.
- 사례 # 3 : 데이터는 시간에 따라 또는 "데이터 스트림"의 일부로 완전히 분리되어 있고 관련이 없습니다. 수백 명의 사용자가 버튼을 클릭하고 조치를 취하면서 애플리케이션을 탐색 할 때 발생하는 감사 / 보안 이벤트
Kafka / Kinesis의 청구 방법과 "스트리밍 데이터"가 무엇인지에 대한 이해를 바탕으로 Cases # 1 (연속 비디오 데이터) 및 # 2 (연속 시계열 데이터)에 대한 확실한 후보로 보입니다. 그러나 RabbitMQ와 같은 전통적인 메시지 브로커가 이러한 입력을 효율적으로 처리 할 수없는 이유는 없습니다 .
그리고 사례 # 3에서는 발생한 이벤트 만 제공되며 해당 이벤트에 대한 반응을 처리해야합니다. 나에게 이것은 RabbitMQ와 같은 전통적인 중개인이 필요하다는 것을 말합니다. 그러나 Kafka 나 Kinesis가 이벤트 데이터 처리를 처리하지 못한 이유도 없습니다.
그래서 기본적으로, 나는 Y 특성을 가진 X 데이터가 있다고 말하는 루 브릭을 설정하려고 합니다. 처리하려면 Kafka / Kinesis와 같은 스트림 프로세서를 사용해야합니다. 또는 반대로 결정하는 데 도움이되는 것 : Z 특성을 가진 W 데이터가 있습니다. 전통적인 메시지 브로커를 사용하여 처리해야합니다.
물어 그래서 : 스트리밍 데이터를 처리 할 수있는 모두 있기 때문에, 데이터 (또는 기타) 도움 조종 스트림 프로세서 또는 메시지 브로커 사이의 결정에 대해 요인, 둘 다 처리 할 수있는 메시지 데이터를 (비 스트리밍)?