2017-03-08 3 views
1

두 개념을 모두 읽고 있습니다. 주로 카프카. 그리고 JMS와 비교하면 더 잘 이해할 수 있습니다.JMS와 특정 조건의 카프카

카프카는 주문한 배달과 다중 가입자를 보장합니다. 카프카는 어떻게 그것을 달성합니까?

카프카에는 여러 개의 파티션이 있습니다. 파티션 당 하나의 소비자라면 주문을 보장 할 수 있습니다. 우리는 여러 파티션으로로드 밸런싱을 수행 할 수 있습니다. 그래서 동시에 둘 다 가능합니다.

JMS의 경우 여러 대기열이있는 경우 Kafka와 같지 않습니까?

1 :이 시나리오에서 어느 것이 더 낫습니다.

Q2 : 좁게보고 있습니까? 카프카가 이것보다 더 많은 것을합니까?

제발 알려주십시오.

JMS에 대해 잘못 생각한 경우에도 알려주십시오.

+0

, 서버 측에서 아파치 카프카를 사용하고, 음, 클라이언트에서 JMS 클라이언트를 계속 사용할 수있는 옵션도 있습니다 측면. Confluent는 Kafka 용 JMS 클라이언트를 제공합니다 : http://docs.confluent.io/current/clients/kafka-jms-client/docs/index.html –

답변

0

여기의 차이에 상당히 좋은 기사입니다 : http://blog.hampisoftware.com/index.php/2016/01/20/apache-kafka-differences-from-jms/

카프카는 주제의 여러 파티션에서 메시지의 순서를 보장하지 않습니다. 순서는 파티션 내에서만 유지됩니다. 엄격한 순서 지정을 수행하려면 주제 당 하나의 파티션을 사용해야합니다. 내가 :)

당신이 쓴 것처럼 전에 자신에게 같은 질문을했다

+0

그건 사실이 아닙니다. 여러 파티션에서 주문을 보증 할 수 있으므로 주문할 모든 메시지에 대해 동일한 키를 설정하면됩니다. 이러한 메시지는 동일한 파티션으로 이동하므로 모든 메시지에서 순서가 필요할 경우 결국에는 하나의 파티션 만 사용하게됩니다. 그러나 대부분의 경우 주제의 메시지는 다른 출처에서 온 것이므로 출처를 기반으로하는 주문 만하면됩니다. 이 경우 많은 파티션을 가질 수 있으며 KEY 메시지를 사용하면 필요한 메시지에서 순서를 유지하지만 파티션 덕분에 병렬 처리가 가능합니다. –

1

, 카프카의 보장은 단일 파티션 내에 배달을 주문했다. 기간. 여러 개의 파티션을 사용하는 경우 (병렬성을 가져야 함), 여러 파티션에서 수신하는 고객은 메시지 B가 처음 도착한 경우에도 파티션 2의 메시지 B보다 먼저 파티션 1에서 메시지 A를 가져올 수 있습니다 .

이제 카프카와 JMS의 차이점에 대해 알아보십시오. JMS에서는 대기열이 있으며 항목이 있습니다. 대기열을 사용하면 첫 번째 소비자가 메시지를 소비 할 때 다른 사람들이 메시지를 더 이상 가져갈 수 없습니다. 주제를 통해 여러 소비자가 각 메시지를 받지만 확장하는 것이 훨씬 어렵습니다. Kafka의 소비자 그룹은이 두 개념의 일반화입니다. 동일한 소비자 그룹의 구성원간에 확장이 가능하지만 여러 소비자 그룹간에 동일한 메시지를 방송 할 수도 있습니다.

더욱 중요한 차이점은 다음과 같습니다. 500 개의 파티션과 500 개의 JMS 메시지 대기열을 가진 Kafka 주제가 있다고 가정 해보십시오. 또한 특정 수의 생산자와 소비자가 있다고 가정 해 봅시다. JMS의 경우 각 대기열이 속해있는 대기열을 알 수 있도록 대기열을 구성해야합니다. 예를 들면? 일부 소비자가 충돌하거나 소비자 수를 늘릴 필요가 있음을 감지합니까? 전체 시스템을 수동으로 재구성해야합니다. 이는 카프카에서 무료로 제공됩니다. 즉, 카프카는 자동 재조정을 제공합니다. 이는 매우 유용한 기능입니다.

마지막으로 Kafka는 대단히 빠른 디스크/메모리 전송 기술과 소비자가 JMS와 같은 브로커가 아닌 자신이 소비 한 메시지를 처리하기 때문에 훨씬 빠릅니다. 이 때문에, 소비자는 또한 "되감기", 즉 메시지를 다시 읽는 것이 가능하다. 2 일 전.

은 참조 :

+0

당신의 대답은 나에게 다소 분명합니다. –