रियलटाइम फीड इवेंट्स: आर्किटेक्चर एंड सिक्योरिटी
रियल-टाइम इवेंट फीड गैमिफिकेशन, एंटी-फ्रॉड, सीआरएम ट्रिगर और भुगतान के साथ उत्पादों की एक "संचार प्रणाली" है। इसके लिए चोटियों पर अनुमानित रूप से काम करने के लिए, डुप्लिकेट पुरस्कार नहीं और डेटा लीक नहीं, एक सख्त वास्तुकला की आवश्यकता है: प्रोटोकॉल और बस से हस्ताक्षर, मूर्तिकला, बजट निजी और अवलोकन।
1) उद्देश्य और आवश्यकताएं
विश्वसनीयता: न्यूनतम अंतराल के साथ घटनाओं की डिलीवरी (p95 ≤ 250 ms निगरानी, p95 ≤ 1-2 s उपभोक्ता को)।
डिलीवरी: कम से कम एक बार परिवहन + तार्किक बिल्कुल एक बार पहचान के माध्यम से।
ऑर्डर करना: कुंजी (आमतौर पर 'उपयोगकर्ता _ id') द्वारा आदेश देना विंडोज़को फिर से ऑर्डर करने के साथ।
सुरक्षा: एमटीएलएस, एचएमएसी/जेडब्ल्यूटी, कुंजी रोटेशन, रीप्ले/डुप्लिकेट सुरक्षा, पीआईआई न्यूनतम।
स्केल: क्षैतिज शार्डिंग, बैकप्रेशर, दर सीमित, डीएलक्यू/रीप्ले।
प्रबंधनीयता: स्कीमा रजिस्ट्री, संस्करण, डाउनटाइम के बिना पलायन।
अनुपालन: ऑडिट (WORM), RG/KYC गेट्स, भू-नीतियां, GDPR/गुमनामी।
2) संदर्भ वास्तुकला (परत द्वारा परत)
1. निर्माता (स्रोत): गेम सर्वर, बटुआ/भुगतान, केवाईसी/एएमएल, क्लाइंट एसडीके (वेब/आईओएस/एंड्रॉइड)।
2. एपीआई गेटवे (इंग्रेस): एचटीटीपी/जीआरपीसी रिसेप्शन, स्कीमा सत्यापन, प्रमाणीकरण, एचएमएसी/एमटीएलएस, समय सामान्यीकरण।
3. कतार/स्ट्रीम: काफ्का/खरगोश/क्लाउड पब/उप - बफरिंग, 'उपयोगकर्ता _ आईडी' द्वारा विभाजन।
4. स्ट्रीम प्रोसेसर: सामान्यीकरण, संवर्धन, विषय मार्ग, विसंगति/एंटी-बॉट्स झंडे, पहचान रिकॉर्डिंग।
5. उपभोक्ता: नियम/स्कोरिंग, इनाम ऑर्केस्ट्रेटर, सीआरएम/सीडीपी कनेक्टर, धोखाधड़ी विरोधी, विश्लेषणात्मक सिंक 'और।
6. भंडारण: अपरिवर्तनीय घटनाएँ, स्टोरफ्रंट, इंडेक्स फॉर आइडेम्पोटेंसी, ऑडिट लॉग।
7. अवलोकन: मैट्रिक्स, लॉग, निशान, अलर्ट; घबराहट - DLQ।
8. व्यवस्थापक विमान: स्कीमा रजिस्ट्री, कुंजी/रहस्य, RBAC/ABAC, phicheflags, रीप्ले सेवा।
3) डिलीवरी प्रोटोकॉल: कब क्या उपयोग करना है
HTTP/JSON (सर्वर-टू-सर्वर वेबहूक): सरल, संगत, बाहरी भागीदारों के लिए अच्छा। HMAC + पहचान जोड़ें।
gRPC/Protobuf: आंतरिक सेवाओं के लिए कम विलंबता, सख्त योजनाएं, बीडी धाराएं।
WebSocket/SSE: क्लाइंट को धक्का, लीडरबोर्ड और प्रगति के लिए UI सदस्यता।
सीडीसी/काफ्का कनेक्ट: जब स्रोत डेटाबेस/वॉलेट होते हैं, व्यावसायिक सेवाएं नहीं।
सिफारिश: बाहरी परिधि - HTTP + HMAC + MTLS; अंदर - gRPC/Protobuf।
4) घटना और कन्वेंशन मॉडल
json
{
"event_id": "e_01HF3Z8Z7Q8Q2K," "event_type": "शर्त", "schema_version": "1। 3. 0 "," : " " "": " । 183Z," "कुंजी": {"user_id": "u_12345"}, "ctx": {
"": " " "मंच": "ios", "जियो": "टीआर", " :" "
}, "पेलोड": {
"game_id": "slot_wolf," "शर्त": 0। 5, "जीत": 1। 25, "मुद्रा": "ईयूआर", "प्रदाता": "गेमको"
}, "सिग": {
"algo": "HMAC-SHA256," "बच्चा": "k_2025_10," "ts ": 1730061441, "mac": "c7b7b3... f1"
}
}
नियम:
- दो बार 'hested _ at' (source) और 'ingested _ at' (गेटवे) हैं। घड़ी को draft 300 s की अनुमति दें।
- रूटिंग कुंजी वह है जो क्रम निर्धारित करता है (आमतौर पर 'उपयोगकर्ता _ id')।
- पीआईआई केवल न्यूनीकरण के सिद्धांत पर 'सीटीएक्स '/' पेलोड' में; संवेदनशील विशेषताओं, टोकन के लिए।
5) वितरण, आदेश और पहचान
कम से कम एक बार परिवहन - डुप्लिकेट और पुनर्व्यवस्था संभव है।- बिल्कुल एक बार तर्क: '(event_id)' और/या '(user_id, source_seq)' पर एक अद्वितीय सूचकांक के साथ एक पहचान तालिका रखें; दोहराएं - कोई ऑप नहीं।
sql
तालिका बनाएं event_log (
पाठ प्राथमिक कुंजी, TEXT, TIMESTAMPTZ, पेलोड JSONB
);
- डबल-संरक्षित सम्मिलित
INSERT IN event_log (event_id,, user_id, event_type, occurred_at,, पेलोड)
मूल्य (:event_id,:user_id,:event_type,:occurred_at,:payload)
संघर्ष (event_id) पर कुछ नहीं करें;
क्रम: 'उपयोगकर्ता _ id' + प्रोसेसर में विंडो 60-120 सेकंड द्वारा धारा का विभाजन। बाद में, जो घटनाएँ आती हैं, वे सुधारात्मक कार्यों के "रीप्ले" में आती हैं।
6) बैकप्रेशर और पीक मैनेजमेंट
टोकन-बाल्टी दर на इंग्रेस (प्रति-आईपी, प्रति-साथी, प्रति-कुंजी) को सीमित करती है।
सर्किट ब्रेकर: आंतरिक उपभोक्ताओं से 5xx के साथ, गिरावट → (वैकल्पिक घटनाओं की गिरावट, कतारें रिट्रे अंतराल बढ़ाती हैं)।
DLQ: स्थायी रूप से गलत संदेश (बिटमैप, हस्ताक्षर अमान्य, हस्ताक्षर TTL से अधिक).
रीप्ले सेवा: 'ईवेंट _ आईडी '/टाइम रेंज द्वारा चयनात्मक डीएलक्यू रीप्ले।
7) योजनाएँ और विकास: कैसे "तोड़ना" नहीं है
स्कीमा रजिस्ट्री: JSON स्कीमा/प्रोटोबुफ; संगतता नीतियां: उत्पादकों के लिए पिछड़ा, उपभोक्ताओं के लिए आगे।
वर्शनिंग: 'स्कीमा _ संस्करण', प्रमुख - केवल फिचफ्लाग और डबल-राइट (डुअल-राइट) के माध्यम से।
अनुबंध: कैनरी अवधि और ग्रीन मैट्रिक्स के बाद योजना का प्रचार।
YAML उदाहरण सत्यापन नियम:yaml संगतता:
लागू करें: सही मोड: पिछड़ा blocked_fields:
- पेलोड। एसएसएन
- पेलोड। card_number required_fields::
- - event_id
- - event_type
- - occurred_at
8) खतरा मॉडल और सुरक्षा
धमकी: बॉडी स्पूफिंग, रिप्ले, पीआईआई लीक, प्रमुख समझौता, स्कीमा-विषाक्तता, डॉस, एमआईटीएम, हस्ताक्षर-स्ट्रिपिंग।
संरक्षण:- परिधि पर MTLS: अल्पकालिक क्लाइंट प्रमाणपत्र, CRL/OCSP।
- HMAC बॉडी सिग्नेचर + 'X-Timestamp' और TTL (। 300 s)।
- JWT (क्लाइंट credentials/OAuth2) - प्राधिकरण और गुंजाइश प्रतिबंधों के लिए।
- कुंजी रोटेशन (KMS): हेडर में 'बच्चा'; रोटेशन प्लान 30-90 दिन; माइग्रेशन विंडो में डबल चेक।
- नॉन/आइडेम्पोटेंसी: साइड अनुरोधों (भुगतान, बोनस) के लिए 'एक्स-रिक्वेस्ट-आईडी'; थोड़ी देर के लिए टीटीएल रखें.
- सामग्री-प्रकार पिनिंग, अधिकतम शरीर का आकार, महत्वपूर्ण एकीकरण के लिए अनुमति-सूची आईपी/एएसएन।
- सभी आने वाले कच्चे-पेलोड + हेडर (अपरिवर्तनीय भंडारण) का WORM ऑडिट।
अजगर शरीर = अनुरोध। raw_body ts = int (अनुरोध। हेडर [" एक्स-टाइमस्टैम्प"])
abs (अब) - ts) <= 300 # анти -replay बच्चा = अनुरोध। शीर्षिका [" X-Key-Id"]
गुप्त = kms। लाना (बच्चा)
मैक = hmac_sha256 (गुप्त, शरीर)
Assert (मैक, अनुरोध। हेडर [" एक्स-सिग्नेचर"])
9) गोपनीयता, पीआईआई और आरजी/केवाईसी
न्यूनतम स्थानांतरण: इनलाइन के बजाय टोकन लिंक (5-15 मिनट के लिए) द्वारा पीआईआई स्थानांतरित करें; कच्चे लॉग में संपादन/गुमनामी निषिद्ध है - अलग पीआईआई पृष्ठों का उपयोग करें।
पहुंच: अधिकार क्षेत्र और भूमिका विशेषताओं द्वारा ABAC; सभी पढ़ ता है - ऑडिट लॉग के लिए।
जीडीपीआर: घटनाओं के तथ्यों को तोड़े बिना पीआईआई को मिटाने के लिए कुंजी-मैपिंग के माध्यम से हटाने का अधिकार का प्रयोग करें।
आरजी/केवाईसी: ऐसी घटनाएं जिन्हें मूल्यवान पुरस्कारों की आवश्यकता होती है, केवल वैध केवाईसी स्तर और आरजी झंडे "ओके" के साथ छोड़ दें।
10) अवलोकन और एसएलओ
एसएलओ (उदाहरण):- Ingest p95 ≤ 250 ms; एंड-टू-एंड p95 ≤ 2 с; ≤ 0 की विफलता। 1 %/दिन।
- त्रुटि हस्ताक्षर (HMAC/JWT) ≤ 0। कुल प्रवाह का 02%।
- DLQ भरें दर ≤ 0। 1%; idempotency ≤ 0 के बाद "डुप्लिकेट्स"। 005%.
- स्रोत द्वारा RPS, p50/p95 विलंबता, 4xx/5xx, त्रुटि हस्ताक्षर, समय-तिरछा।
- पार्टी, प्रोसेसिंग/सेकंड द्वारा लैग, डीएलक्यू भरें, पुनः प्राप्त करें, रीप्ले वॉल्यूम करें।
- योजनाएँ: संस्करण द्वारा संदेशों का हिस्सा, संगतता उल्लंघन।
- सुरक्षा: आरपीएस-थ्रॉटल दर, सर्किट-ब्रेकर, आईपी/एएसएन विसंगतियाँ।
- प्रवाह का एसआरएम (एक स्रोत से यातायात का तीव्र विरूपण)।
- लेटेंसी p95> लक्ष्य 5 मिनट +, डीएलक्यू ग्रोथ> एक्स/मिनट।
- त्रुटि हस्ताक्षर> Y ppm, 'X-Requess-Id' रीप्ले स्पाइक.
- स्रोत पर बहाव घंटे> 120 s।
11) बहु-क्षेत्र और दोष सहिष्णुता
सक्रिय-सक्रिय क्षेत्र, वैश्विक मार्ग (जियोडीएनएस/एनीकास्ट), 'उपयोगकर्ता _ आईडी' क्षेत्र द्वारा चिपचिपा-कुंजी।
महत्वपूर्ण घटनाओं (मौद्रिक, केवाईसी) के लिए क्रॉस-क्षेत्रीय प्रतिकृति विषय।
विस्फोट त्रिज्या: किरायेदारों/ब्रांडों, व्यक्तिगत बजट और चाबियों द्वारा अलगाव।
डीआर-प्लान: आरपीओ ≤ 5 मिनट, आरटीओ ≤ 30 मिनट; नियमित रिहर्सल।
12) प्रतिधारण और पुनरावृत्ति नीतियां
कच्चे कार्यक्रम: 7-30 दिन (लागत के अनुसार), कुल/शोकेस - लंबे समय तक।
रीप्ले की अनुमति केवल एक हस्ताक्षरित रनबुक (जो, क्या, क्यों, समय सीमा) द्वारा दी जाती है।
रीप्ले हमेशा विश्लेषणात्मक पारदर्शिता के लिए 'रीप्ले = ट्रू' फ्लैग के साथ एक नए स्ट्रीम-संस्करण में जा
13) कॉन्फ़िगरेशन उदाहरण
इंग्रेस (NGINX शैली) सीमाएँ:nginx limit_req_zone $ binary _ remote _ addr ज़ोन = req _ limited: 10m दर = 300r/s;
limit_req ज़ोन = req _ limited फट = 600 नोडले;
client_max_body_size 512k;
proxy_read_timeout 5 एस;
काफ्का (उदाहरण):
गुण संख्या। विभाजन = 64 मिनट। insync। प्रतिकृतियाँ = 2 ऐक = सभी प्रतिधारण। ms = # 7 दिन संपीड़न। प्रकार = zstd
कुंजियों के लिए नीति (केएमएस):
yaml rotation_days: 45 grace_period_days: 7 allow_algos: ["HMAC-SHA256"]
key_scopes::
- विषय: "wallet_events"
निर्माता: ["वॉलेट-एसवीसी"]
उपभोक्ता: ["लेजर-एसवीसी ", "जोखिम-एसवीसी"]
14) रियल-टाइम फीड लॉन्च चेकलिस्ट
- परिधि पर MTLS, HMAC/JWT, कुंजी रोटेशन ('बच्चा')।
- तर्क पर पहचान (अद्वितीय कुंजी, Upsert/ON CONPLIST)।
- 'उपयोगकर्ता _ id' द्वारा विभाजन, विंडो पुनः आदेश, पुनरावृत्ति सेवा।
- स्कीमा रजिस्ट्री + संगतता नीतियां; प्रमुख अपडेट के लिए दोहरी लिखें।
- दर सीमित, सर्किट ब्रेकर, डीएलक्यू + मैनुअल समीक्षा।
- अवलोकन: SLO, हस्ताक्षर/विलंबता/DLQ/अंतराल द्वारा अलर्ट।
- PII/गुमनामी नीति, ABAC, WORM ऑडिट।
- डीआर/मल्टी-रीजन, फीलओवर रिहर्सल।
- रनबुक: घटनाएं, रीप्ले, स्कीमा/कुंजी रोलबैक।
15) मिनी केस (सिंथेटिक)
संदर्भ: टूर्नामेंट शिखर, 120 से आरपीएस इंग्रेस, 64 गेम, 2 सक्रिय-सक्रिय क्षेत्र।
4 सप्ताह के लिए कुल: निगलना p95 210 ms, e2e p95 1। 6 एस; DLQ 0। 05%; त्रुटि हस्ताक्षर 0। 009%; idempotency 0 के बाद डुप्लिकेट। 003%.
हादसा: साथी की घड़ी बहाव (− 9 मिनट) → एंटी-रिप्ले उछाल। सर्किट ब्रेकर ने धारा को "बफर" एंडपॉइंट, पार्टनर-हेल्थ अधिसूचित सीएसएम में स्थानांतरित कर दिया; एनटीपी चोट के बाद - खिड़की सभी उपभोक्ताओं को 12 मिनट का रिप्ले करती है। कोई नुकसान और दोहरे भुगतान नहीं हैं।
16) सारांश
एक विश्वसनीय वास्तविक समय फ़ीड "सिर्फ वेबहूक नहीं है। "यह स्पष्ट अनुबंधों के साथ एक स्तरित प्रणाली है: कम से कम एक बार परिवहन + तार्किक बिल्कुल एक बार, रजिस्टर योजना और वर्शनिंग, MTLS/HMAC/JWT और कुंजी रोटेशन, पीआई मिनीकरण और सख्ट। इन प्रथाओं का पालन करके, आपको घटनाओं की एक तेज, सुरक्षित और पूर्वानुमानित धारा मिलेगी, जिस पर आप आत्मविश्वास से गेमिफिकेशन, एंटी-फ्रॉड, सीआरएम और भुगतान कर सकते हैं।