Rumah pembangunan bahagian belakang Tutorial Python Panduan Pemula untuk Kafka dengan Python: Pemprosesan dan Aplikasi Data Masa Nyata

Panduan Pemula untuk Kafka dengan Python: Pemprosesan dan Aplikasi Data Masa Nyata

Nov 05, 2024 pm 05:41 PM

A Beginner’s Guide to Kafka with Python: Real-Time Data Processing and Applications

Pengenalan kepada Kafka

  • Kafka ialah platform penstriman acara teragih sumber terbuka yang dibangunkan oleh Apache.
  • Asalnya dicipta oleh LinkedIn, ia telah direka untuk mengendalikan daya pemprosesan yang tinggi, toleran terhadap kesalahan dan penstriman data masa nyata.
  • Kafka membenarkan sistem untuk menerbitkan dan melanggan aliran rekod (mesej), memprosesnya dan menyimpannya dengan cekap.

Mengapa Kafka Digunakan?

  • Pusat Tinggi: Kafka boleh mengendalikan berjuta-juta mesej sesaat.
  • Toleransi Kesalahan: Kafka diedarkan, bermakna ia boleh mereplikasi data merentas berbilang nod untuk memastikan kebolehpercayaan.
  • Ketahanan: Kafka mengekalkan data ke cakera dan boleh memainkan semula mesej, memastikan kebolehpercayaan dalam penghantaran mesej.
  • Pemprosesan Masa Nyata: Kafka boleh memproses aliran data dalam masa nyata, sesuai untuk aplikasi seperti pemantauan, analitik atau sistem dipacu peristiwa.
  • Skalabiliti: Kafka boleh membuat skala dengan mudah dengan menambahkan lebih banyak broker untuk mengendalikan volum data yang besar.
  • Sistem Penyahgandingan: Kafka bertindak sebagai lapisan tengah untuk pemesejan, membenarkan sistem yang berbeza berkomunikasi secara tidak segerak.

Seni Bina Kafka

A Beginner’s Guide to Kafka with Python: Real-Time Data Processing and Applications

Komponen:

Pengeluar:
Ini ialah aplikasi atau perkhidmatan yang menghantar data/mesej kepada Kafka. Pengeluar menolak mesej ke Topik tertentu dalam Kafka.

Topik:
Topik ialah kategori atau nama suapan yang mana rekod diterbitkan. Topik dibahagikan untuk membolehkan kebolehskalaan dan keselarian.

Pecahan:

  • Setiap Topik dibahagikan kepada satu atau lebih Partition.
  • Partition membolehkan Kafka mengendalikan lebih banyak mesej dan sokongan pemprosesan selari.
  • Setiap Partition mempunyai ID unik dan boleh menyimpan subset daripada data topik.

Broker:

  • Kafka berjalan sebagai kelompok Broker (pelayan), setiap satu mengendalikan data untuk berbilang topik dan sekatan.
  • Broker menyimpan dan mengurus partition, mengendalikan baca dan tulis permintaan daripada Pengeluar dan Pengguna.
  • Setiap Broker dikenal pasti melalui ID unik.

Pengguna:

Pengguna ialah aplikasi atau perkhidmatan yang membaca mesej daripada topik.
Pengguna melanggan topik, mengambil data daripada broker Kafka.

Kumpulan Pengguna:

  • Pengguna disusun dalam Kumpulan Pengguna.
  • Setiap mesej dalam partition dihantar kepada hanya seorang pengguna dalam kumpulan, yang membolehkan pengimbangan beban merentas berbilang pengguna.

Penjaga Zoo:

  • ZooKeeper mengurus dan menyelaras broker Kafka, menjejaki broker, topik dan partition.
  • Ia membantu menguruskan pemilihan pemimpin untuk partition dan memantau kesihatan kelompok.

Kes Penggunaan Kafka

  • Analitis Masa Nyata: Syarikat menggunakan Kafka untuk memproses dan menganalisis aliran data dalam masa nyata untuk sistem pemantauan, seperti analisis transaksi kewangan.
  • Pengagregatan Log: Kafka menyatukan log daripada berbilang perkhidmatan atau aplikasi untuk pemprosesan, makluman atau penyimpanan.
  • Saluran Paip Data: Kafka digunakan sebagai tulang belakang untuk memindahkan sejumlah besar data antara sistem atau perkhidmatan yang berbeza (talian paip ETL).
  • Aplikasi IoT: Kafka boleh mengendalikan aliran data daripada penderia IoT, membenarkan analisis dan respons masa nyata.
  • Komunikasi Perkhidmatan Mikro: Kafka berfungsi sebagai platform pemesejan yang boleh dipercayai untuk seni bina perkhidmatan mikro, membolehkan komunikasi tak segerak, dipisahkan.
  • Penjejakan Kenderaan Masa Nyata: Contoh berikut menggambarkan cara Kafka digunakan untuk menjejak kenderaan dalam masa nyata.

Contoh menggunakan Python untuk menunjukkan cara Kafka boleh digunakan dalam senario masa nyata :

Penjejakan lokasi untuk apl perkongsian perjalanan.

Untuk memudahkan, kami akan menggunakan perpustakaan kafka-python untuk mencipta kedua-dua pengeluar (untuk mensimulasikan pemandu menghantar kemas kini lokasi) dan pengguna (untuk mensimulasikan perkhidmatan yang memproses kemas kini lokasi ini).

1. Sediakan Kafka
Pastikan anda menjalankan Kafka secara setempat atau gunakan pembekal awan. Anda boleh memuat turun dan menjalankan Kafka secara tempatan dengan mengikuti Panduan Mula Pantas Kafka.

2. Pasang Perpustakaan Python Kafka
Anda boleh memasang perpustakaan Kafka Python menggunakan pip:

pip install kafka-python
Salin selepas log masuk
Salin selepas log masuk

3. Pengeluar Python Kafka (Simulasi Kemas Kini Lokasi Pemacu)
Pengeluar mensimulasikan pemandu yang menghantar kemas kini lokasi kepada topik Kafka (lokasi pemandu).

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)
Salin selepas log masuk
Salin selepas log masuk

4. Pengguna Python Kafka (Simulating Ride Matching Service)
Pengguna membaca kemas kini lokasi daripada topik lokasi pemacu dan memprosesnya.

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()
Salin selepas log masuk

Penjelasan:

Pengeluar (Pemandu menghantar kemas kini lokasi):

  • Pengeluar menghantar objek JSON ke lokasi pemandu topik Kafka dengan medan seperti driver_id, latitud, longitud dan cap waktu.
  • Pengeluar mensimulasikan kemas kini GPS masa nyata dengan menghantar data lokasi setiap 5 saat.

Pengguna (Perkhidmatan padanan tunggangan):

  • Pengguna melanggan topik lokasi pemandu, mendengar kemas kini.
  • Setiap kali kemas kini lokasi diterbitkan kepada Kafka, pengguna memproses dan mencetaknya, mensimulasikan perkhidmatan yang menggunakan data ini untuk memadankan pemandu dan penunggang.

Menjalankan Contoh (saya menggunakan mesin windows):

  1. Mulakan Penjaga Zoo
pip install kafka-python
Salin selepas log masuk
Salin selepas log masuk
  1. Mulakan pelayan Kafka tempatan anda.
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)
Salin selepas log masuk
Salin selepas log masuk

Sekarang Jalankan pengeluar dan Pengguna dalam 2 tetingkap terminal berasingan menggunakan python.

  1. Jalankan skrip pengeluar untuk mensimulasikan pemandu menghantar kemas kini lokasi.

  2. Jalankan skrip pengguna untuk melihat perkhidmatan pemadanan perjalanan yang memproses kemas kini lokasi dalam masa nyata.

Kesimpulan
Apache Kafka menyediakan platform yang luar biasa untuk mengurus aliran data masa nyata. Dengan menggabungkan Kafka dengan Python, pembangun boleh membina saluran paip data yang berkuasa dan penyelesaian analitik masa nyata.

Sama ada penjejakan kenderaan, data IoT atau papan pemuka masa nyata, Kafka dengan Python sangat berskala dan boleh disesuaikan dengan pelbagai kes penggunaan. Jadi, mula bereksperimen dengan Kafka, dan anda akan kagum dengan potensinya dalam aplikasi dunia sebenar!

Atas ialah kandungan terperinci Panduan Pemula untuk Kafka dengan Python: Pemprosesan dan Aplikasi Data Masa Nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1670
14
Tutorial PHP
1276
29
Tutorial C#
1256
24
Python vs C: Lengkung pembelajaran dan kemudahan penggunaan Python vs C: Lengkung pembelajaran dan kemudahan penggunaan Apr 19, 2025 am 12:20 AM

Python lebih mudah dipelajari dan digunakan, manakala C lebih kuat tetapi kompleks. 1. Sintaks Python adalah ringkas dan sesuai untuk pemula. Penaipan dinamik dan pengurusan memori automatik menjadikannya mudah digunakan, tetapi boleh menyebabkan kesilapan runtime. 2.C menyediakan kawalan peringkat rendah dan ciri-ciri canggih, sesuai untuk aplikasi berprestasi tinggi, tetapi mempunyai ambang pembelajaran yang tinggi dan memerlukan memori manual dan pengurusan keselamatan jenis.

Python dan Masa: Memanfaatkan masa belajar anda Python dan Masa: Memanfaatkan masa belajar anda Apr 14, 2025 am 12:02 AM

Untuk memaksimumkan kecekapan pembelajaran Python dalam masa yang terhad, anda boleh menggunakan modul, masa, dan modul Python. 1. Modul DateTime digunakan untuk merakam dan merancang masa pembelajaran. 2. Modul Masa membantu menetapkan kajian dan masa rehat. 3. Modul Jadual secara automatik mengatur tugas pembelajaran mingguan.

Python vs C: Meneroka Prestasi dan Kecekapan Python vs C: Meneroka Prestasi dan Kecekapan Apr 18, 2025 am 12:20 AM

Python lebih baik daripada C dalam kecekapan pembangunan, tetapi C lebih tinggi dalam prestasi pelaksanaan. 1. Sintaks ringkas Python dan perpustakaan yang kaya meningkatkan kecekapan pembangunan. 2. Ciri-ciri jenis kompilasi dan kawalan perkakasan meningkatkan prestasi pelaksanaan. Apabila membuat pilihan, anda perlu menimbang kelajuan pembangunan dan kecekapan pelaksanaan berdasarkan keperluan projek.

Pembelajaran Python: Adakah 2 jam kajian harian mencukupi? Pembelajaran Python: Adakah 2 jam kajian harian mencukupi? Apr 18, 2025 am 12:22 AM

Adakah cukup untuk belajar Python selama dua jam sehari? Ia bergantung pada matlamat dan kaedah pembelajaran anda. 1) Membangunkan pelan pembelajaran yang jelas, 2) Pilih sumber dan kaedah pembelajaran yang sesuai, 3) mengamalkan dan mengkaji semula dan menyatukan amalan tangan dan mengkaji semula dan menyatukan, dan anda secara beransur-ansur boleh menguasai pengetahuan asas dan fungsi lanjutan Python dalam tempoh ini.

Python vs C: Memahami perbezaan utama Python vs C: Memahami perbezaan utama Apr 21, 2025 am 12:18 AM

Python dan C masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1) Python sesuai untuk pembangunan pesat dan pemprosesan data kerana sintaks ringkas dan menaip dinamik. 2) C sesuai untuk prestasi tinggi dan pengaturcaraan sistem kerana menaip statik dan pengurusan memori manual.

Yang merupakan sebahagian daripada Perpustakaan Standard Python: Senarai atau Array? Yang merupakan sebahagian daripada Perpustakaan Standard Python: Senarai atau Array? Apr 27, 2025 am 12:03 AM

Pythonlistsarepartofthestandardlibrary, sementara

Python: Automasi, skrip, dan pengurusan tugas Python: Automasi, skrip, dan pengurusan tugas Apr 16, 2025 am 12:14 AM

Python cemerlang dalam automasi, skrip, dan pengurusan tugas. 1) Automasi: Sandaran fail direalisasikan melalui perpustakaan standard seperti OS dan Shutil. 2) Penulisan Skrip: Gunakan Perpustakaan Psutil untuk memantau sumber sistem. 3) Pengurusan Tugas: Gunakan perpustakaan jadual untuk menjadualkan tugas. Kemudahan penggunaan Python dan sokongan perpustakaan yang kaya menjadikannya alat pilihan di kawasan ini.

Python untuk Pembangunan Web: Aplikasi Utama Python untuk Pembangunan Web: Aplikasi Utama Apr 18, 2025 am 12:20 AM

Aplikasi utama Python dalam pembangunan web termasuk penggunaan kerangka Django dan Flask, pembangunan API, analisis data dan visualisasi, pembelajaran mesin dan AI, dan pengoptimuman prestasi. 1. Rangka Kerja Django dan Flask: Django sesuai untuk perkembangan pesat aplikasi kompleks, dan Flask sesuai untuk projek kecil atau sangat disesuaikan. 2. Pembangunan API: Gunakan Flask atau DjangorestFramework untuk membina Restfulapi. 3. Analisis Data dan Visualisasi: Gunakan Python untuk memproses data dan memaparkannya melalui antara muka web. 4. Pembelajaran Mesin dan AI: Python digunakan untuk membina aplikasi web pintar. 5. Pengoptimuman Prestasi: Dioptimumkan melalui pengaturcaraan, caching dan kod tak segerak

See all articles