منصوبے کے بارے میں
ریئل ٹائم ای کامرس اینالیٹکس (آر ٹی ای اے) ایک ہائی پرفارمنس اسٹریمنگ پائپ لائن ہے جو REST API سے ای کامرس کلیک اسٹریمن ڈیٹا کو پکڑتی ہے اور اسے Confluent Cloud Kafka کے ذریعے ClickHouse میں بھیجتی ہے تاکہ ریئل ٹائم تجزیاتی کوریز ممکن ہو سکیں۔
## تعمیرات
پائپ لائن چار طبقات پر مشتمل ہے:
**ڈیٹا سورس** — ایک نقلی کلیک اسٹریمن جنریٹر API جو Railway.app پر میزبان ہے اور تقریباً 10,000 پیغامات فی سیکنڈ JSON فارمیٹ میں پیدا کرتی ہے۔
**پیغام بریکر** — Confluent Cloud Kafka جس میں `clickstream-events` ٹاپک 6 پارٹیشنز پر، SASL_SSL تصدیق، Snappy کمپریشن، اور 7 دن کی ریٹینشن کے ساتھ۔
**پروسیسنگ لیئر** — پروڈیوسر سروس `kafka-python` استعمال کرتی ہے جس کے بہترین سیٹنگز (16 KB بیچز، gzip کمپریشن، 32 MB بفر، شرح محدود 10K msg/sec) اور کنزیومر سروس بیچ پروسیسنگ کے ساتھ (فی بیچ 1000 واقعات، خودکار کمٹ آبسٹیکرز، فیلڈ ٹرانسفارمیشن)۔
**تجزیاتی اسٹوریج** — ClickHouse Cloud جس میں MergeTree انجن ٹیبل `(timestamp, user_id)` کے مطابق آرڈر شدہ، LZ4 کمپریشن، اور 30 دن کی TTL کے ساتھ۔
## ڈیٹا بہاؤ
1. پروڈیوسر ہر سیکنڈ بیرونی API کو پول کرتا ہے، پیغامات کو قطار میں جمع کرتا ہے، اور انہیں بیچوں میں Kafka ٹاپک پر شائع کرتا ہے۔
2. متعدد کنزیومر انسٹنس ہر ایک مقرر کردہ پارٹیشنز کو سبسکرائب کرتے ہیں، JSON ڈیسیرلائز کرتے ہیں، ٹائم اسٹیمپس اور فیلڈز کو ٹرانسفارم کرتے ہیں، اور بیچوں کو ClickHouse میں لکھتے ہیں۔
3. صارفین SQL کے ذریعے حاصل شدہ `ecommerce.clickstream_events` ٹیبل کو کوئری کرتے ہیں۔
## اہم ترتیبات
### پروڈیوسر
- بیچ سائز: 16 KB
- کمپریشن: gzip
- بفر میموری: 32 MB
- دوبارہ کوششیں: 3
### کنزیومر
- بیچ سائز: 1000 واقعات
- بیچ ٹائماؤٹ: 5 سیکنڈ
- آبسٹیکر خودکار کمٹ فعال
### ClickHouse ٹیبل
```sql
CREATE TABLE clickstream_events (
user_id String,
session_id String,
timestamp UInt64,
event_type String,
product_id String,
product_category String,
price Float64,
quantity Int32,
source String,
received_time DateTime DEFAULT now()
) ENGINE = MergeTree()
ORDER BY (timestamp, user_id)
```
## ممکنہ کارکردگی
- مستقل گنجائش: 650+ واقعات/سیکنڈ
- کل پروسیسڈ واقعات: 510,414+
- ایک ثانیے سے کم انتہائی تاخیر
## فوری آغاز
1. `uv sync` سے dependencies انسٹال کریں
2. `.env.example` کو `.env` میں کاپی کریں اور Confluent Cloud اور ClickHouse کے سرٹیفکیٹس بھرائیں
3. پروڈیوسر چلائیں: `uv run python services/producer/src/simple_producer.py`
4. کنزیومر چلائیں: `uv run python services/consumer/src/simple_consumer.py`
5. ڈیٹا کی تصدیق کریں: `uv run python check_clickhouse.py`
## عیب یابی
ریپازٹری میں تشخیصی اسکرپٹس (`debug_kafka.py`, `test_clickhouse_insert.py`) شامل ہیں اور عام ناکامی کے حالات بشمول API کنکشن ٹائم آؤٹس، Kafka کنزیومر لیگ، پیغام ڈیسیرلائزیشن خرابیاں، اور ClickHouse انسارٹ/اسکیما مطابقت کی مشکلات کا احاطہ کرتے ہیں۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.