Apache Kafka는 실시간 데이터 파이프 라인 및 응용 프로그램을 구축하는 데 널리 사용되는 강력한 분산 이벤트 스트림 플랫폼입니다. 핵심 함수 중 하나는 kafka 메시지 키
로, 메시지 파티션, 정렬 및 라우팅에서 중요한 역할을합니다. 이 기사는 Kafka 키의 개념, 중요성 및 실제 예를 탐구합니다.
Kafka 키는 무엇입니까?
Kafka에서 각 메시지에는 두 가지 주요 구성 요소가 포함되어 있습니다.
키 (키) : 메시지를 결정하는 파티션이 전송됩니다.
value : 메시지의 실제 데이터는 효과적인 부하입니다.
Kafka 생산자는 키를 사용하여 해시 값을 계산하여 메시지의 특정 파티션을 결정합니다. 키가 제공되지 않으면 메시지는 회전에 의해 다양한 파티션에 배포됩니다.
왜 Kafka 키를 사용합니까?
Kafka 키는 몇 가지 장점을 제공하므로 일부 장면에서는 필수적입니다.
-
메시지 분류 :
동일한 키가있는 메시지는 항상 동일한 파티션으로 경로를 경로합니다. 이것은 파티션에서 이러한 메시지의 순서가 예약되도록합니다. -
예 : E- 컴퓨터 시스템에서, Order_ID를 키로 사용하여 특정 주문과 관련된 모든 이벤트 (예 : "주문이 배치되었으며"주문 배송 ")가 순서대로 처리되도록합니다.
로직 그룹 :
키는 관련 메시지를 동일한 파티션으로 그룹화 할 수 있습니다.
예 : 사물 인터넷 시스템의 경우 sensor_id를 키로 사용하면 동일한 센서의 데이터가 함께 처리되도록 할 수 있습니다.
효율적인 데이터 처리 - :
소비자는 키를 사용하여 특정 파티션에서 메시지를 효율적으로 처리 할 수 있습니다.
예 : 사용자 활동 추적 시스템에서 user_id를 키로 사용하면 개인화 된 분석을 수행하기 위해 모든 사용자의 작업이 함께 포장되도록 할 수 있습니다.
-
로그 압축
:
-
Kafka는 로그 압축을 지원하며 각 키의 최신 값 만 유지합니다. 이는 상태 데이터 (예 : 구성 또는 사용자 구성 파일)를 유지하는 데 매우 유용합니다.
-
키는 언제 사용해야합니까?
다음 상황에서는 키를 사용해야합니다.
순서는 엄격한 이벤트 주문 (예 : 금융 거래 또는 상태 기계)의 경우 중요합니다.
논리적 그룹화가 필요합니다. : 관련 메시지를 함께 그룹화하십시오 (예 : 동일한 서버의 로그 또는 특정 고객의 사건).
로그 압축 : 각 키의 최신 상태 만 유지하십시오. -
그러나 각 파티션에 필요하고 포장되지 않거나 고르게 배포되지 않으면 더 중요하며 (예 : 높은 처리량 시스템) 사용 키를 피해야합니다. -
예제 (Python)
다음은 합류 카프카 라이브러리를 사용하여 메시지를 생성 할 때 키를 효과적으로 사용하는 방법을 보여주기 위해 파이썬 예제입니다.
예제 1 : 사용자 활동 추적
웹 사이트에서 사용자 활동을 추적한다고 가정 해 봅시다. 단일 사용자의 모든 작업이 동일한 파티션으로 라우팅되도록 user_id를 키로 사용하십시오.
여기에서, Key로서 user123을 사용하는 모든 메시지는 동일한 파티션에 들어가서 순서를 유지합니다.
예제 2 : 사물 인터넷 센서 데이터
각 센서에 대한 온도 판독 값을 보내는 사물 인터넷 시스템의 경우 sensor_id를 키로 사용하십시오. <code class="language-python">from confluent_kafka import Producer
producer = Producer({'bootstrap.servers': 'localhost:9092'})
# 使用user_id作为键发送消息
key = "user123"
value = "page_viewed"
producer.produce(topic="user-activity", key=key, value=value)
producer.flush()</code>
이것은 Sensor42의 모든 판독 값이 함께 그룹화되도록합니다.
예제 3 : 주문 처리
순서 처리 시스템에서 Order_ID를 각 순서의 이벤트 순서를 유지하기위한 열쇠로 사용하십시오.
Kafka 키 사용 모범 사례
<code class="language-python">from confluent_kafka import Producer
producer = Producer({'bootstrap.servers': 'localhost:9092'})
# 使用sensor_id作为键发送消息
key = "sensor42"
value = "temperature=75"
producer.produce(topic="sensor-data", key=key, value=value)
producer.flush()</code>
조심스러운 디자인 키 :
핫스팟을 피하기 위해 각 파티션에 키가 골고루 분포되어 있는지 확인하십시오.
예 : 대부분의 사용자가 한 영역에 집중되어 있으면 고정 필드 (예 : 지리적 위치)를 사용하지 마십시오.
<code class="language-python">from confluent_kafka import Producer
producer = Producer({'bootstrap.servers': 'localhost:9092'})
# 使用order_id作为键发送消息
key = "order789"
value = "Order Placed"
producer.produce(topic="orders", key=key, value=value)
producer.flush()</code>
모니터링 파티션 분포 :
키를 사용할 때는 균형 잡힌 분포를 보장하기 위해 파티션 하중을 정기적으로 분석하십시오.
-
직렬화 사용 :
소비자와의 호환성과 일관성을 보장하기 위해 직렬화 된 키 (예 : JSON 또는 AVRO)를 올바르게 직렬화했습니다.
-
-
결론
Kafka 키는 강력한 기능으로, 파티션에서 질서 정연한 처리 및 논리적 그룹화를 만들 수 있습니다. 응용 프로그램의 요구 사항에 따라 키를 신중하게 설계하고 사용하면 Kafka의 성능을 최적화하고 데이터 일관성을 보장 할 수 있습니다. 사물 인터넷 플랫폼을 구축하든 전자 상거래 애플리케이션 또는 실시간 분석 시스템을 구축하든 Kafka 키를 이해하고 사용하면 데이터 스트림 아키텍처가 크게 향상됩니다.
위 내용은 Kafka 키 이해 : 포괄적 인 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!