منصوبے کے بارے میں

یہ ریپوزٹری دکھاتا ہے کہ Google Cloud Platform پر ویب ٹریفیک کے لیے کم‑لٹینسی آنالیٹکس حل کیسے بنایا جائے۔ معماریت چار بنیادی حصوں سےประกอบ ہوتی ہے: 1. **ایونٹ انگیسٹیشن** – ایک Pub/Sub ٹاپیک سادہ Python ایونٹ جنریٹر سے پیدا ہونے वाली کلیک‑سٹریم پیغامات کو شامل کرتا ہے۔ Pub/Sub ایک تائید شدہ، عالمی طور پر دستیاب پیغام بس ہے جو producers اور consumers کو الگ کردیتا ہے۔ 2. **سٹریمنگ پروسیسنگ** – ایپاچی بیم پائپ لائن Dataflow (runner=DataflowRunner) پر سٹریمنگ موڈ میں چلتی ہے۔ پائپ لائن Pub/Sub ایونٹس پڑھتی ہے، متعلقہ فیلڈ نکالتا ہے اور Cloud Memorystore (Redis) میں میٹرک کاؤنٹرز اپ ڈیٹ کرتی ہے۔ Redis کو ان‑میموری اسٹور کے طور پر استعمال کیا جاتا ہے کیونکہ اس کی نیٹیو سیٹ اور HyperLogLog کمांडز (`SCARD`, `SINTERSTORE`, `PFADD`, `PFCOUNT`) یوزر کی انحصاری شمارنگ اور سیٹ‑بیسڈ آنالیٹکس کو بہت مؤثر بناتی ہیں۔ 3. **میٹرک اسٹور** – Cloud Memorystore (Redis) حقیقی‑وقت کے میٹرکس محفوظ کرتی ہے۔ Redis کے ان‑بنیوٹ ڈेटا ڈھانچوں کا استعمال کرتے ہوئے، حل کัสٹم اجریگیشن کوڈ سے بچتا ہے اور سب‑سیکنڈ کوئری لٹینسی हासِل کرتی ہے۔ 4. **ویژueleشن** – ایک Spring Boot ایپلیکیشن (جسے `dashboard/` فولڈر میں رکھا گیا ہے) Jedis کلائنٹ کے ذریعے Redis سے جوڑتی ہے، مجموعہ شدہ قيمتیں پڑھتی ہے اور Google Charts کے ذریعے انہیں render کرتی ہے۔ UI خود‑ریفرش کی सुविधا فراہم کرتی ہے، جس سے مارکیٹرز یا آپریٹرز فعال کارکنان، تجربہ شرکت، تبدیل کی شرح، اور یوزر ओवरلاپ جیسے KPIs کی نگرانی کر سکتے ہیں۔ ریپوزٹری میں اسکرپٹس اور ہدایات شامل ہیں: - ضروری GCP سروسز (Pub/Sub, Dataflow, Memorystore, Cloud Storage, VPC نٹ ورکنگ) سیٹ اپ کریں۔ - Maven کے ذریعے Dataflow پائپ لائن ڈپلوی کریں۔ - Python ویर्चوئل انوارنمنٹ میں ڈمی ایونٹ جنریٹر چلاو۔ - VPC‑محدود Redis تک رسائی کے لیے پروکسی VM کے پیچھے Spring Boot ڈیش بورڈ لاونچ کریں۔ - Cloud Shell ویبプリویو کے ذریعے زندہ ڈیش بورڈ دیکھیں۔ تمام اجزاء پوری طرح منیجڈ سروسز ہیں، لہٰذا حل خود بخود سکیل ہوتا ہے اور کم سے کم آپریٹنگ overhead کی ضرورت ہوتی ہے۔ یہ کسی بھی شخص کے لیے ایک اسٹارٹر کٹ ہے جسے Google Cloud Platform پر ریئل‑ٹائم ویب آنالیٹکس، A/B‑ٹیسٹ مانیٹرنگ، یا کسی بھی کلیک‑سٹریم مبنی KPI رپورٹنگ کی ضرورت ہو۔