カフカの紹介
なぜ Kafka が使用されるのですか?
カフカ アーキテクチャ
コンポーネント:
プロデューサー:
これらは、Kafka にデータ/メッセージを送信するアプリケーションまたはサービスです。プロデューサーは、Kafka 内の特定のトピックにメッセージをプッシュします。
トピック:
トピックは、レコードが公開されるカテゴリまたはフィードの名前です。トピックはスケーラビリティと並列処理を考慮して分割されています。
パーティション:
ブローカー:
消費者:
コンシューマは、トピックからメッセージを読み取るアプリケーションまたはサービスです。
消費者はトピックをサブスクライブし、Kafka ブローカーからデータを取得します。
消費者グループ:
動物園の飼育員:
Kafka の使用例
リアルタイム シナリオで Kafka を使用する方法を示す Python を使用した例:
ライドシェアリングアプリの位置追跡。
簡単にするために、kafka-python ライブラリを使用して、プロデューサー (位置更新を送信するドライバーをシミュレートするため) とコンシューマー (位置更新を処理するサービスをシミュレートするため) の両方を作成します。
1. Kafka のセットアップ
Kafka がローカルで実行されていることを確認するか、クラウド プロバイダーを使用してください。 Kafka クイックスタート ガイドに従って、Kafka をローカルにダウンロードして実行できます。
2. Kafka Python ライブラリをインストールします
pip:
を使用して Kafka Python ライブラリをインストールできます。
pip install kafka-python
3. Python Kafka プロデューサー (ドライバーの場所の更新のシミュレーション)
プロデューサは、位置の更新を Kafka トピック (driver-location) に送信するドライバーをシミュレートします。
from kafka import KafkaProducer import json import time import random # Kafka Producer producer = KafkaProducer( bootstrap_servers=['localhost:9092'], value_serializer=lambda v: json.dumps(v).encode('utf-8') # Serialize data to JSON ) def send_location_updates(driver_id): while True: # Simulating random GPS coordinates (latitude, longitude) location = { "driver_id": driver_id, "latitude": round(random.uniform(40.0, 41.0), 6), "longitude": round(random.uniform(-74.0, -73.0), 6), "timestamp": time.time() } # Send location data to Kafka producer.send('driver-location', location) print(f"Sent: {location}") time.sleep(5) # Sleep for 5 seconds to simulate real-time updates # Start sending updates for driver_id = 101 send_location_updates(driver_id=101)
4. Python Kafka Consumer (乗車マッチング サービスのシミュレーション)
コンシューマーは、ドライバーの位置トピックから位置の更新を読み取り、処理します。
from kafka import KafkaConsumer import json # Kafka Consumer consumer = KafkaConsumer( 'driver-location', bootstrap_servers=['localhost:9092'], auto_offset_reset='earliest', # Start from the earliest message enable_auto_commit=True, group_id='location-group', value_deserializer=lambda x: json.loads(x.decode('utf-8')) # Deserialize data from JSON ) def process_location_updates(): print("Waiting for location updates...") for message in consumer: location = message.value driver_id = location['driver_id'] latitude = location['latitude'] longitude = location['longitude'] timestamp = location['timestamp'] print(f"Received location update for Driver {driver_id}: ({latitude}, {longitude}) at {timestamp}") # Start consuming location updates process_location_updates()
説明:
プロデューサー (位置情報の更新を送信するドライバー):
消費者 (配車サービス):
例の実行 (Windows マシンで実行しています):
pip install kafka-python
from kafka import KafkaProducer import json import time import random # Kafka Producer producer = KafkaProducer( bootstrap_servers=['localhost:9092'], value_serializer=lambda v: json.dumps(v).encode('utf-8') # Serialize data to JSON ) def send_location_updates(driver_id): while True: # Simulating random GPS coordinates (latitude, longitude) location = { "driver_id": driver_id, "latitude": round(random.uniform(40.0, 41.0), 6), "longitude": round(random.uniform(-74.0, -73.0), 6), "timestamp": time.time() } # Send location data to Kafka producer.send('driver-location', location) print(f"Sent: {location}") time.sleep(5) # Sleep for 5 seconds to simulate real-time updates # Start sending updates for driver_id = 101 send_location_updates(driver_id=101)
ここで、Python を使用して 2 つの別々のターミナル ウィンドウでプロデューサーとコンシューマーを実行します。
プロデューサー スクリプトを実行して、位置の更新を送信するドライバーをシミュレートします。
コンシューマ スクリプトを実行して、配車マッチング サービスが位置情報の更新をリアルタイムで処理していることを確認します。
結論
Apache Kafka は、リアルタイム データ ストリームを管理するための優れたプラットフォームを提供します。 Kafka と Python を組み合わせることで、開発者は強力なデータ パイプラインとリアルタイム分析ソリューションを構築できます。
車両追跡、IoT データ、リアルタイム ダッシュボードのいずれであっても、Python を使用した Kafka は拡張性が高く、さまざまなユースケースに適応できます。それでは、Kafka の実験を開始してください。そうすれば、現実世界のアプリケーションにおけるその可能性に驚かれるでしょう!
以上がPython を使用した Kafka の初心者ガイド: リアルタイム データ処理とアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。