


Panduan Pemula untuk Kafka dengan Python: Pemprosesan dan Aplikasi Data Masa Nyata
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
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
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)
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()
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):
- Mulakan Penjaga Zoo
pip install kafka-python
- 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)
Sekarang Jalankan pengeluar dan Pengguna dalam 2 tetingkap terminal berasingan menggunakan python.
Jalankan skrip pengeluar untuk mensimulasikan pemandu menghantar kemas kini lokasi.
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











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.

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 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.

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 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.

Pythonlistsarepartofthestandardlibrary, sementara

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.

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
