संदेश ब्रोकर और घटना मार्ग
(धारा: प्रौद्योगिकी और बुनियादी ढांचा)
संक्षिप्त सारांश
संदेश ब्रोकर आईगेमिंग में एकीकरण और घटना बस की एक मौलिक परत है। यह दरों, भुगतान, विरोधी धोखाधड़ी, केवाईसी, सीआरएम और एनालिटिक्स के माइक्रोसर्विसेस के बीच संदेशों की डिलीवरी, बफरिंग और रूटिंग को लागू करता है। अच्छी तरह से डिज़ाइन किए गए एक्सचेंज (एक्सचेंज), कतारें, रूटिंग कीज़और री-डिलीवरी नियम कम विलंबता, ट्रैफ़िक फटने का प्रतिरोध और अनुमानित एसएलओ प्रदान करते हैं।
आईगेमिंग प्लेटफॉर्म में ब्रोकर की भूमिका
Decoupling सेवाएँ: हार्ड सिंक्रोनस कॉल के बजाय घटनाओं को प्रकाशित करना।
लचीला मार्ग: एक घटना - कई उपभोक्ता (सीआरएम, जोखिम, एनालिटिक्स)।
लोड प्रबंधन: कतारें, प्रीफेच/QoS, बैकप्रेशर।
विश्वसनीयता और वसूली: पुष्टि, रिट्रे, डीएलक्यू, प्रतिकृति।
ऑडिट और अनुपालन: इवेंट ट्रेसिंग, पीआईआई मास्किंग, रिटेंशन पॉलिसी।
संदेश मॉडल
प्वाइंट-टू-पॉइंट (कार्य कतार): एक उपभोक्ता एक कार्य (केवाईसी, ई-मेल, पीएसपी वेबहुक) प्रक्रिया करता है।
पब/सब (डोमेन इवेंट्स): कई कतारों के लिए एक फैन-आउट के साथ एक्सचेंजर को प्रकाशन।
आरपीसी ब्रोकर के माध्यम से: सहसंबंध के साथ अनुरोध/प्रतिक्रिया (शायद ही कभी गर्म रास्तों पर, लेकिन एकीकरण के लिए उपयोगी)।
रूटिंग कॉन्सेप्ट्स (AMQP क्लासिक्स)
एक्सचेंज और बाइंडिंग यह निर्धारित करते हैं कि संदेश किस कतार में आएगा:1. 'routing_key' का प्रत्यक्ष - सटीक मिलान।
2. विषय - टेम्पलेट्स 'a। बी। सी "(एक शब्द) और '#' (0 + शब्द)। सार्वभौमिक विकल्
3. फैनआउट - सभी संबंधित कतारों के लिए प्रशंसक।
4. हेडर - हेडर रूटिंग (कुंजी/मूल्य), जटिल नीतियों के लिए उपयोगी।
कुंजियों और टोपोलॉजी के उदाहरण:- 'भुगतान। psp। पट्टी। सफल ',' भुगतान। psp.. विफल ',' दांव। लाइव। # ',' rg। सीमा। उल्लंघन '।
- डोमेन द्वारा एक्सचेंजर्स: 'भुगतान। विषय ',' दांव। विषय ',' जोखिम। विषय '; व्यक्तिगत - 'मंच' प्रणाली घटनाओं के लि ऑडिट '।
कतार और नीतियाँ
कार्य कतार: व्यापार संचालकों द्वारा उपभोग किया
पुन: कतारें: घातीय बैकअप के लिए TTL (देरी) और DLX के साथ (उदाहरण के लिए, '5s → 1m → 5m → 1h')।
DLQ (डेड-लेटर क्यू): रेट्रास की थकावट के बाद अंतिम "डंप"।
प्राथमिकताएं: तत्काल कार्यों के लिए (निष्कर्ष> पत्र)।
आलसी/कोरम: आलसी - बड़े बैकलॉग के साथ रैम की बचत; कोरम - सर्वसम्मति आधारित एचए।
मिनी-राजनेता (अवधारणा):- 'काम। Q '→' एक्स-डेड-लेटर-एक्सचेंज = रीट्री। एक्सएक्स '
- 'फिर से कोशिश करें। 1 मी। Q '' x-message-ttl = 60000 ',' एक्स-डेड-लेटर-एक्सचेंज = वर्क। एक्सएक्स '
- 'dlq। q '→ निगरानी और मैनुअल उपचार
डिलीवरी वारंटी और प्रक्रियाएँ
कम से कम-एक बार - डिफ़ॉल्ट: डुप्लिकेट संभव हैं - पहचान अनिवार्य है।
सबसे अधिक एक बार - न्यूनतम देरी, लेकिन नुकसान का जोखिम ("गैर-महत्वपूर्ण" संकेतों के लिए)।
बिल्कुल एक बार - दलालों में शायद ही कभी व्यावहारिक; अधिक कठिन और अधिक महंगा हासिल पैसे के लिए: कम से कम-एक बार + कठिन पहचान।
क्रम:- एक कतार में और एक ही उपभोक्ता के साथ, आदेश संरक्षित है; समानतावाद + वापस लेने के साथ, आदेश परेशान हो सकता है।
- एक आदेश की आवश्यकता वाली संस्थाओं के लिए, धारा (प्रति कुंजी एकल-सक्रिय उपभोक्ता) को क्रमबद्ध करें या इसे "लॉग" बसों (स्ट्रीमिंग) में स्थानांतरित करें।
पहचान और लेन-देन प्रकाशन
किसी संदेश (ULID/UUID) में Idempotency-Key, TTL के साथ dedup भंडारण या कुंजी द्वारा अपसर्ट।
आउटबॉक्स पैटर्न: एक व्यावसायिक लेनदेन के भीतर 'आउटबॉक्स 'तालिका में एक घटना लिखना, कनेक्टर ब्रोकर को प्रकाशित करता है - "डबल एंट्री "/हानि को बाहर करता है।
सहसंबंध मेटाडेटा: 'संदेश _ आईडी', 'ट्रेस _ आईडी', 'कार्य _ आईडी', 'किरायेदार _ आईडी'।
दलाल के माध्यम से आरपीसी (जब जरूरत हो)
अनुरोध 'उत्तर _ to' और 'सहसंबंध _ id' के साथ प्रकाशित किया गया है, प्रतिक्रिया निर्दिष्ट कतार में है.
सीमित (बाहरी प्रदाता, तुल्यकालिक जांच), नियंत्रण समय समाप्ति और चैट प्रवृत्ति (अन्यथा - वितरित मोनोलिथ में गिरावट) का उपयोग करें।
गर्म उपयोगकर्ता पथ के लिए, अतुल्यकालिक घटनाओं + राज्य अनुमानों को पसंद किया जाता है।
डेटा संविदा और स्कीमा
प्रारूप: Avro/Protobuf/JSON-Schema। JSON के लिए, संस्करण और आवश्यक क्षेत्रों को ठीक करें।
विकास की राजनीति: पिछड़े-संगत परिवर्तन; पलायन के बिना परिवर्तन निषिद्ध हैं।
पीआईआई - क्षेत्रों का टोकन/एन्क्रिप्शन; उद्देश्य और शेल्फ जीवन।
त्रुटि हैंडलिंग, रिट्रे, डीएलक्यू
वर्गीकरण: अस्थायी (नेटवर्क/5xx) रिट्रे →; फ़ाइल (सत्यापन/योजना) → डीएलक्यू।
घातीय बैकऑफ + जिटर, रीट्री सीमा, जहर-गोली लेबल।
विलंबित डिलीवरी: टीटीएल/विलंबित-विनिमय के माध्यम से।
कारण को ठीक करने के बाद डीएलक्यू से उपकरण "काम करने के लिए फिर से"।
अवलोकन और एसएलओ
उत्पादक मैट्रिक्स: प्रकाशन गति, त्रुटियां/पुष्टि।
कतार मैट्रिक्स: लंबाई, खपत दर, रिट्रे का प्रतिशत, p99 कतार समय।
उपभोक्ता: अंतराल, थ्रूपुट, प्रसंस्करण समय, NACK शेयर।
SLO: p99 E2E इवेंट डिलीवरी की विलंबता ≤ X सेकंड; उपलब्धता ≥ 99। 9%; DLQ-दर ≤ Y%।
ट्रेसिंग: end-to-end 'trace_id'/'span_id', 'message_id' द्वारा लॉग।
अलर्ट: DLQ/लैग्स ग्रोथ, कोरम ड्रॉप, NACK सर्ज, रीट्री स्टेज चिपके हुए।
सुरक्षा और पहुँच
पारगमन में टीएलएस/एमटीएलएस; लगातार कतारें संग्रहीत होने पर डिस्क पर एन्क्रिप्शन।
RBAC/ACL: vhost/namespace/topic द्वारा प्रकाशित/उपभोग अधिकार।
विभाजन: संवेदनशील डोमेन (भुगतान/सीसीएम) - अलग एक्सचेंजर/समूह।
तिजोरी/एसओपीएस में रहस्य; प्रकाशनों/सदस्यताओं का ऑडिट लॉग।
डेटा स्थानीयकरण: क्षेत्र (यूरोपीय संघ, तुर्की, लैटम) द्वारा भंडारण और प्रतिधारण।
उच्च उपलब्धता और डीआर
कोरम कतारें/प्रतिकृति, नोड्स की विषम संख्या, AZ विरोधी आत्मीयता।
महत्वपूर्ण डोमेन के लिए क्रॉस-रीजनल प्रतिकृति (फेडरेशन/फावड़ा)।
स्विचिंग नियम (रनबुक), आवधिक डीआर अभ्यास (खेल दिवस)।
कोड (IaC) के रूप में संस्करण टोपोलॉजी - दोहराए जाने योग्य जमा और तेजी से resync।
प्रदर्शन और ट्यूनिंग
निर्माता: प्रकाशक पुष्टि करता है, चैनल पुन: उपयोग, अतुल्यकालिक प्रकाशन।
कतारें: कार्य की औसत अवधि के लिए प्रीफेच; गहरे बैकलॉग के लिए आलसी; नोड्स द्वारा "गर्म" कतारों का पृथक्करण।
नेटवर्क/ओएस: 10/25G, फ़ाइल विवरणकर्ता, टीसीपी ट्यूनिंग। जेवीएम/जीसी - लोड प्रोफाइल के लिए।
फटने के भार के लिए टेस्ट (मैच, टूर्नामेंट, शिखर भुगतान)।
iGaming के लिए विशिष्ट रूटिंग पैटर्न
1. भुगतान कार्यक्रम (विषय):
एक्सचेंज: 'भुगतान। विषय 'विषय'
कुंजियाँ:- 'भुगतान। psp। पट्टी। सफल हुए '
- 'भुगतान। psp.. विफल '
- 'विथ्ड्रावल। अनुरोध किया। #`
- 'लेजर। लेखक। q '(बाध्य करें:' भुगतान। #`)
- 'crm। ट्रिगर। q '(बाध्य करें:' भुगतान... सफल ')
- 'रिस्क। समीक्षा। q '(बाध्य करें:' वापसी। #`)
2. एंटीफ्राड स्कोरिंग (डायरेक्ट + रीट्री):
'रिस्क। काम करते हैं। Q '←' जोखिम। प्रत्यक्ष '(' रूटिंग _ key = जोखिम। जाँच करें ')
'रिस्क। फिर से कोशिश करें। 1 मी। Q '(TTL 60 s → DLX वापस' risk। प्रत्यक्ष ')
'रिस्क। dlq। q 'घातक के लिए।
3. सूचनाएँ (फैनआउट + प्राथमिकता):
'notify। फैनआउट '→' ईमेल। q (prio) ',' sms। Q ',' पुश। क्यू '
प्राथमिकताएं: विपणन मेलिंग से ऊपर निष्कर्ष/सीमाएं।
4. ऑडिट और ट्रेस (हेडर):
हेडर बाइंडिंग '{"किरायेदार ": "X ", "क्रिटिकल":" ट्रू"} '- एक अलग ऑडिट कतार।
न्यूनतम संदेश योजना का उदाहरण (JSON)
json
{
"message_id": "01HX8H8Y6D6W0T1S2A3B4C5D6E",
"trace_id": "f4d2a1...e9",
"occurred_at": "2025-11-05T11:20:45. 321Z",
"tenant_id": "eu-1",
"schema_version": 3,
"event": "payments. psp. stripe. succeeded",
"payload": {
"payment_id": "pay_123",
"player_id": "p_987",
"amount": { "currency": "EUR", "value": 50. 00 },
"psp_tx": "tx_456",
"idempotency_key": "ulid_..."
}
}
अन्य छोरों के साथ एकीकरण
स्ट्रीमिंग/एनालिटिक्स: महत्वपूर्ण विषयों को पीछे हटने और पुनर्संसाधन के लिए लॉग बस (काफ्का/रेडपांडा) में दोहराया जा सकता है।
Feature store: घटनाएँ → ऑनलाइन सुविधाएँ (Redis) और ऑफ़ लाइन पार्टियाँ (Parquet/OLAP)।
सागा ऑर्केस्ट्रेशन: प्रत्यक्ष/विषय, घटनाओं के माध्यम से आदेश - पब/उप; क्षतिपूर्ति कदम - अलग संदेशों के रूप में।
कार्यान्वयन जाँच सूची
1. डोमेन एक्सचेंजर और रूटिंग कुंजी मानक को परिभाषित करें।
2. प्रत्येक महत्वपूर्ण प्रवाह के लिए एक कार्य/पुनरावृत्ति/डीएलक्यू डिजाइन क
3. प्रकाशक पुष्टि करता है, 'प्रीफेच', प्राथमिकताएं और जहाँ जरूरत है देरी सक्षम करें।
4. पहचान कुंजी, आउटबॉक्स और सहसंबंध आईडी भरें.
5. डेटा स्कीमा और विकास नियमों को मंजूरी दें।
6. टीएलएस/आरबीएसी कॉन्फ़िगर करें, डोमेन/किरायेदार द्वारा विभाजन।
7. SLO और अलर्ट सेट करें (लैग, DLQ-rate, p99)।
8. DR योजना तैयार करें और स्वचालित IaC टोपोलॉजी।
9. लोड और अराजकता परीक्षण करें।
10. घटना रनबुक का दस्तावेजीकरण करें और डीएलक्यू से फिर से इंजेक्ट करें।
एंटी-पैटर्न
बिना किसी महत्वपूर्ण अनुशासन के एक "विशाल" एक्सचेंजर; यादृच्छिक "जैसा कि आपको करना है" बाइंडिंग।
पुनरावृत्ति/डीएलक्यू की अनुपस्थिति और लौकिक/घातक त्रुटियों का मिश्रण।
उपयोगकर्ता गर्म रास्तों पर दलाल पर तुल्यकालिक आरपीसी।
पहचान और आउटबॉक्स की कमी → पैसे की कमी/हानि।
सभी के लिए स्पष्ट, साझा प्रकाशन/उपभोग में पीआईआई भंडारण।
सारांश
एक अच्छी तरह से डिज़ाइन किया गया संदेश ब्रोकर एक मजबूत घटना धमनी है जहां रूटिंग पूर्वानुमान योग्य है और टोपोलॉजी स्तर पर गलती सहिष्णुता का निर्माण किया जाता है। प्रत्येक महत्वपूर्ण स्ट्रीम, पहचान और आउटबॉक्स, सख्त एसएलओ और अवलोकन के लिए विषय एक्सचेंजर्स, एक एकल कुंजी मानक, कार्य/पुनरावृत्ति/डीएलक्यू का उपयोग करें। स्ट्रीमिंग बस और राज्य अनुमानों के साथ मिलकर, यह आईगेमिंग प्लेटफॉर्म को निरंतर गति, पारदर्शिता और जटिलता पर नियंत्रण देता है क्योंकि लोड बढ़ ता है।