मुख्य सामग्री पर जाएँ
पैकेजआर्किटेक्चर रिव्यू: 5–7 कार्यदिवस में स्वतंत्र समीक्षा और चरणबद्ध माइग्रेशन योजना
प्रोजेक्ट
प्रोजेक्ट विवरण

कम्युनिटी टूल · 2025 – अब तक

KillReport

EVE Online खिलाड़ियों, कॉर्पोरेशनों और एलायंस के लिए रियल-टाइम killmail ट्रैकिंग और विश्लेषण प्लेटफ़ॉर्म। यह zKillboard और EVE के आधिकारिक API (ESI) के साथ सिंक होता है और CCP की लाइसेंस शर्तों के तहत गैर-व्यावसायिक है।

मेरी भूमिका: डिज़ाइन, डेवलपमेंट और संचालन पूरी तरह मैं अकेले संभालता हूँ।

killreport.com
बैकग्राउंड वर्कर
~45
डेटा मॉडल
42
साझा API सीमा
50 req/s
GraphQL सब्सक्रिप्शन
लाइव

समस्या

खेल की हर लड़ाई एक killmail रिकॉर्ड बनाती है, और ये रिकॉर्ड लगातार आते रहते हैं। हर रिकॉर्ड को समृद्ध करने के लिए एक बाहरी API पर कई अनुरोध भेजने पड़ते हैं, और उस API की रेट लिमिट सख़्त है।

लीडरबोर्ड और लाइव फ़ीड बिना देरी के अद्यतन रहने चाहिए; किसी वर्कर के क्रैश या रीस्टार्ट होने से साइट बंद नहीं होनी चाहिए।

आर्किटेक्चर

डेटा स्रोत

zKillboard · ESI

जॉब क्यू

  • RabbitMQ

टास्क वितरण

वर्कर

  • TypeScript

~45 प्रोसेस

डेटा लेयर

  • PostgreSQL
  • Prisma
  • Redis

स्टोरेज और इवेंट

API

  • GraphQL Yoga

लाइव सब्सक्रिप्शन

फ़्रंटएंड

  • Next.js

App Router

API सर्वर और वर्कर अलग-अलग प्रोसेस हैं जो आपस में केवल Redis के ज़रिए बात करते हैं, इसलिए हर एक को स्वतंत्र रूप से रीस्टार्ट किया जा सकता है।

मैंने क्या बनाया

  • लाइव फ़ीड

    नए killmail GraphQL सब्सक्रिप्शन के ज़रिए तुरंत पेज पर दिखाई देते हैं।

  • कैरेक्टर, कॉर्पोरेशन, एलायंस

    हर इकाई के लिए इतिहास, आँकड़े और स्वचालित सिंक।

  • लीडरबोर्ड

    दैनिक काउंटर रिकॉर्ड के साथ उसी ट्रांज़ैक्शन में अपडेट होते हैं; अलग शेड्यूल्ड जॉब की ज़रूरत नहीं।

  • संप्रभुता और मानचित्र

    क्षेत्रों, स्टार सिस्टम और संप्रभुता अभियानों की ट्रैकिंग।

  • वर्कर डैशबोर्ड

    क्यू और वर्कर की स्थिति दिखाने वाली मॉनिटरिंग स्क्रीन।

  • EVE SSO

    खिलाड़ी अपने EVE खाते से साइन इन करते हैं; टोकन अपने-आप रिफ़्रेश होते हैं।

मैंने कौन-सी चुनौतियाँ हल कीं

  1. 1

    प्रोसेसों के बीच साझा रेट लिमिट

    ESI प्रति सेकंड 150 अनुरोधों की अनुमति देता है। चूँकि दर्जनों वर्कर एक ही सीमा साझा करते हैं, मैंने Redis-आधारित एक साझा लिमिटर लिखा और सुरक्षा मार्जिन के लिए इसे प्रति सेकंड 50 अनुरोधों पर रखा।

  2. 2

    शेड्यूल्ड जॉब के बिना अद्यतन लीडरबोर्ड

    दैनिक काउंटर उसी डेटाबेस ट्रांज़ैक्शन में एटॉमिक रूप से बढ़ाए जाते हैं जिसमें killmail सहेजा जाता है। लीडरबोर्ड कभी पुराने नहीं होते और अलग cron जॉब की ज़रूरत नहीं पड़ती।

  3. 3

    स्कीमा से बाहर की टेबलों की सुरक्षा

    मैंने एक सुरक्षा उपाय जोड़ा जो प्रदर्शन के लिए हाथ से बनाई गई टेबलों को ORM माइग्रेशन द्वारा हटाए जाने से रोकता है।

तकनीकें

  • Next.js
  • React
  • TypeScript
  • GraphQL
  • Prisma
  • PostgreSQL
  • Redis
  • RabbitMQ
  • GitHub Actions

संबंधित सेवाएँ

क्या आप ऐसा ही कोई सिस्टम बनाने की सोच रहे हैं? आर्किटेक्चर डिज़ाइन से लेकर लाइव होने तक मैं हर कदम पर आपके साथ हूँ।

संपर्क करें