नोड्स के बीच डेटा प्रवाह
(खंड: पारिस्थितिकी तंत्र और नेटवर्क)
1) सार और लक्ष्य
नोड्स के बीच डेटा प्रवाह पारिस्थितिकी तंत्र की भूमिकाओं (वेलिडेटर्स/रीडर्स/इंडेक्सर्स/ब्रिज/गेटवे/स्टोरेज/एनालिटिक्स) के बीच घटनाओं, राज्यों और कलाकृतियों के प्रबंधित चैनल हैं। उद्देश्य:- भविष्यवाणी: देरी/सफलता/ताजगी द्वारा स्थिर एसएलओ।
- विश्वसनीयता: नुकसान का प्रतिरोध, डुप्लिकेट, पुनर्जन्म।
- सुरक्षा और अनुपालन: एन्क्रिप्शन, हस्ताक्षर, निवास।
- स्केलेबिलिटी: भू-वितरण, विभाजन, QoS।
2) प्रवाह वर्गीकरण
1. नियंत्रण विमान: कॉन्फ़िग, फ़िचफ्लैग, रूटिंग/सीमा नीतियां।
2. डेटा प्लेन - घटना: डोमेन घटनाएँ ('जमा करें। ',' भुगतान। ',' पुल। ').
3. डेटा प्लेन - स्ट्रीम: सिग्नल और लाइव मैट्रिक्स के लिए लंबे समय तक रहने वाली धाराएं (gRPC/WebSocket)।
4. बैच/बैकफिल: ऐतिहासिक स्लाइस, रिप्ले, स्नैपशॉट के डाउनलोड।
5. प्रतिकृति/एंटी-एन्ट्रापी: राज्य सिंक, मर्क्लाइजेशन, सीआरडीटी धाराएँ।
6. टेलीमेट्री/वेधशाला: लॉग/मेट्रिक्स/ट्रेल्स साइड-बैंड, मुख्य यूएक्स के साथ हस्तक्षेप न करें।
प्रत्येक प्रकार में QoS कक्षाएं और अपने स्वयं के रिट्रे/ऑर्डर नियम हैं।
3) टोपोलॉजी और रूटिंग
हब-एंड-स्पोक: टायर के रूप में क्षेत्रीय हब; खेलता है - भूमिका नोड्स।
Mesh/P2P: प्रतिकृति/गपशप के लिए आंशिक जाल।
एज-टायर्ड: पतले किनारे गेटवे (दर-सीमा/कैश) → मोटे क्षेत्रीय समूह।
जियो-रूटिंग: Anycast/Latency-Awardy LB + रेजिडेंसी नियम।
कुंजी - विभाजन: 'पार्टीशन _ key = chennId' किरायेदार 'विषय' EntyyId 'पूर्वानुमानित क्रम और पैमाना देता है।
4) परिवहन और प्रारूप
HTTP/2/3, gRPC/QUIC - कम विलंबता, मल्टीप्लेक्सिंग, कीपलाइव।
काफ्का/पल्सर/एनएटीएस - दृढ़ ता/पार्टियों/उपभोक्ता समूहों के साथ कतारें।
वेबसॉकेट - पुश इवेंट्स और लाइव फीड।
प्रारूप: Protobuf/Avro (विकास के साथ योजनाएँ), बाहरी API के लिए JSON।
अखंडता सत्यापन के लिए हैश एड्रेसिंग और मर्कल रसीदें।
5) आदेश, प्रसव और अंतिम रूप
वितरण मॉडल:- कम से कम एक बार (डिफ़ॉल्ट); पहचान/मृत्यु आवश्यक)।
- आउटबॉक्स/इनबॉक्स + आइडेम्पोटेंट उपभोक्ता के माध्यम से बिल्कुल एक बार प्रभाव।
- आदेश: पार्टी के भीतर गारंटी; अंतर-पक्षीय आदेश की गारंटी नहीं है।
- अंतिम रूप: स्टेटस 'देखा गया → पुष्टि (K) → अंतिम रूप दिया गया → अमान्य (पुनर्ग)'; आशावादी - विवाद खिड़की के लिए।
6) आइडेम्पोटेंस और डेडअप
घटनाओं के लिए पहचान कुंजी:- 'idempotency _ key = ${chainId}|${block}|${tx}|${logIndex}|${type}'
- कुंजी द्वारा अपसर्ट करें, deduplication विंडो का TTL ≥ 72 घंटे।
- एक संघर्ष के लिए, पेलोड "सत्य का स्रोत" नीति (प्राथमिकता, संस्करण, हस्ताक्षर) है।
- HTTP अनुरोधों के लिए, हेडर 'Idempotency-Key' + प्रतिक्रिया लॉग है।
7) कतारें, बैकप्रेशर और कोटा
कतारें: कुंजी द्वारा पार्टियां; "जहरीले" संदेशों के लिए डीएलक्यू।
Backpressure: क्रेडिट/टोकन, अधिकतम-इनफ्लाइट सीमा, सर्किट-ब्रेकर।
कोटा/QoS: P0 (महत्वपूर्ण), P1 (उत्पाद), P2 (थोक)। स्प्लिट पूल/आरपीएस लिमिट/बाइट्स/एस/सदस्यता।
प्रवेश नियंत्रण: "महंगे" अनुरोधों का प्रारंभिक इनकार, रेंज/आकार द्वारा गार्ड।
8) स्थिरता और डेटा मॉडल
पार्टी/नोड के भीतर पढ़ें-आप लिखें।
क्षेत्रों/पक्षों के बीच अंतिम निरंतरता।
कुछ सेटों (काउंटर, सेट) के संघर्ष-मुक्त प्रतिकृति के लिए सीआरडीटी।
तेजी से बूटस्ट्रैप और नियतात्मक रीप्ले के लिए स्नैपशॉट + लॉग।
9) सुरक्षा और विश्वास
नोड्स, कुंजी पिनिंग, घुमाव के बीच mTLS।
संदेश/वेबहुक हस्ताक्षर, टाइमस्टैम्प और एंटी-रीप्ले विंडो।
जाने/आराम करने पर एन्क्रिप्शन; क्षेत्रीय कुंजियों का अलगाव।
PII-कम से कम: टोकन, लेबल/मेट्रिक्स में व्यक्तिगत डेटा का निषेध।
10) दक्षता: पैकेजिंग, संपीड़न, कैश
बैचिंग: ओवरहेड को कम करने के लिए छोटे संदेशों का समूह।
संपीडनः zstd/gzip सुरक्षित शब्दकोशों के साथ।
नकदी: नकारात्मक उत्तर और "गर्म" निर्देशिका; घटना द्वारा टीटीएल और विकलांगता।
11) डेटा आरेख (संदर्भ)
प्रवाह/लॉट रजिस्टर
sql
CREATE TABLE streams (
name TEXT PRIMARY KEY,
partitions INT,
qos TEXT, -- P0 P1 P2 retention_days INT,
schema_version TEXT
);
CREATE TABLE offsets (
stream TEXT, partition INT, consumer_group TEXT,
offset BIGINT, updated_at TIMESTAMPTZ,
PRIMARY KEY (stream, partition, consumer_group)
);
इवेंट लॉग (idempotent upsert)
sql
CREATE TABLE events_core (
id UUID PRIMARY KEY,
idempotency_key TEXT UNIQUE,
ts TIMESTAMPTZ,
partition_key TEXT,
type TEXT,
payload JSONB,
status TEXT, -- observed confirmed finalized invalidated signature TEXT
);
डीएलक्यू/संगरोध
sql
CREATE TABLE dlq (
id UUID PRIMARY KEY,
stream TEXT, partition INT, offset BIGINT,
reason TEXT, payload JSONB, ts TIMESTAMPTZ
);
12) नीतियां (YAML)
QoS और सीमाएँ
yaml qos:
P0: { ack_timeout_ms: 2000, retries: 3, backoff_ms: [100,400,800], rps_per_org: 1500 }
P1: { ack_timeout_ms: 5000, retries: 2, rps_per_org: 800 }
P2: { best_effort: true, rps_per_org: 200 }
limits:
max_message_bytes: 1048576 max_stream_subscriptions_per_client: 20
अंतिम रूप और विंडो
yaml finality:
eth-mainnet: { k: 12 }
polygon: { k: 256 }
optimistic: { k: 0, challenge_minutes: 20 }
रूटिंग/रेजीडेंसी
yaml routing:
prefer_local_region: true fallback: [nearest_healthy, master_hub]
residency:
eu: ["eu"]
uk: ["uk"]
13) अवलोकन: SLI/SLO
SLI (कोर):- लेटेंसी p95/p99 (ingress→egress, प्रति-स्ट्रीम/QoS)।
- सफलता दर/गिरावट दर।
- पार्टी द्वारा कतार लाग p95 और उपभोक्ता अंतराल।
- ताजगी p95 (ingest→consume)।
- पुनः org/अमान्य दर (यदि ऑन्चेन)।
- डेडअप दक्षता (% अक्षम रूप से अवशोषित हो जाता है)।
- जियो-हिट अनुपात (स्थानीय रूप से सेवित)।
- P0 विलंबता p95 ≤ 400 ms; सफलता ≥ 99। 95%; कतार-अंतराल p95 ≤ 2 с; ताजगी p95 ≤ 60 с।
- डेडअप दक्षता ≥ 99%; DLQ ≤ 0। 1% यातायात।
डैशबोर्ड: स्ट्रीम कोर/लैग एंड फ्रेशनेस/क्यूओएस एंड एरर्स/जियो/सिक्योरिटी (एमटीएलएस/हस्ताक्षर)।
14) उपभोक्ता पैटर्न
आउटबॉक्स/इनबॉक्स: परमाणु प्रकाशन और पहचान अनुप्रयोग।
बिल्कुल एक बार प्रभाव: अंतिम लागू कुंजी और संस्करण संग्रहीत करें।
वाटरमार्क: देर से डेटा।
पहचान साइड-इफेक्ट्स: केवल कुंजी और प्रतिक्रिया लॉग के साथ बाहरी प्रश्न।
15) गिरावट मोड
केवल अंतिम-मोड: हम केवल अंतिम घटनाओं को जारी करते हैं।
केवल संदर्भ पुस्तकों के लिए कैश-भारी तरीके से ठंड।
धाराओं के लिए थ्रॉटल पी 2 और "आहार मोड" (ताज़ादर कम)।
केवल द्वितीयक एपीआई के लिए पढ़ें।
16) डाउनटाइम-फ्री रिलीज़ और माइग्रेशन
प्रवाह और उपभोक्ताओं द्वारा ब्लू-ग्रीन/कैनरी।
स्कीमा-पहले: केवल खेतों को जोड़ें; प्रमुख - विषयों के समानांतर संस्करण।
ऑफसेट पलायन: छाया उपभोक्ता, अंतराल/सफलता तुलना, स्विचिंग।
17) परिचालन विनियम
दैनिक: एसएलओ रिपोर्ट (विलंबता/सफलता/अंतराल/ताजगी), हस्ताक्षर ऑडिट, डीएलक्यू जांच।
साप्ताहिक: बैचों/कोटा का संशोधन, डीआर परीक्षण (स्नैपशॉट से बूटस्ट्रैप), डेडप दक्षता विश्लेषण।
मासिक: अराजकता परीक्षण (हानि/जिटर, ब्रोकर विफलता, पुनर्जन्म-फट), अंतिम खिड़कियों का संशोधन।
रिलीज से पहले: कैनरी ≥120 मिन, एसएलओ गेट्स, रोलबैक प्लान।
18) प्लेबुक की घटनाएं
ए। कतार-लाग/उपभोक्ता-लाग विस्फोट
1. उपभोक्ताओं/केईडीए को बढ़ाना; 2) पुनर्वितरण पार्टियों; 3) P2 और थोक नौकरियों को फ्रीज करें; 4) "हॉट" कुंजियों का विश्लेषण।
बी। पी 95 लेटेंसी पी 0 की वृद्धि
1. P2-throttle, P0 प्राथमिकता; 2) स्केल गेटवे/ब्रोकर; 3) केवल संदर्भ पुस्तकों के लिए कैश; 4) बाहरी-इजेक्शन।
सी। हाई डीएलक्यू/डबिंग
1. पहचान कुंजी/टीटीएल जाँचें; 2) डीडअप को मजबूत करें; 3) शोर निर्माता को सीमित करें; 4) ठीक होने के बाद फिर से खेलना।
डी। बहाव योजनाएं/अनुबंध
1. सख्त मोड सक्षम करें (अवैध काटें); 2) निर्माता को सूचित करें; 3) एडाप्टर जारी करें; 4) लिंटर्स अपडेट करें।
ई। निवास/हस्ताक्षर का उल्लंघन
1. निर्यात/चैनल इकाई; 2) कुंजियों/सर्ट का रोटेशन; 3) ऑडिट और पोस्टमार्टम; 4) नीतियों को अद्यतन करना।
19) कार्यान्वयन चेकलिस्ट
1. धारा प्रकार और विभाजन कुंजी को परिभाषित करें।
2. के/विवाद विंडो के साथ पहचान/डीडअप और अंतिम रूप सक्षम करें।
3. कतारें, QoS, कोटा और बैकप्रेशर कॉन्फ़िगर करें।
4. एमटीएलएस/हस्ताक्षर और आवास नीति चलाएँ।
5. स्कीमा/रजिस्टर (धारा, ऑफसेट, डीएलक) और एसएलआई/एसएलओ टेलीमेट्री भरें।
6. कैनरी/ब्लू-ग्रीन और डाउनटाइम-फ्री सर्किट माइग्रेशन का आयोजन करें।
7. गिरावट मोड और घटना प्लेबुक बाहर काम करें।
20) शब्दावली
बैकप्रेशर - इनपुट लोड नियंत्रण (क्रेडिट/टोकन/सीमा)।
DLQ - समस्या संदेश के लिए "मृत कतार"।
सीआरडीटी - समन्वय के बिना संघर्ष समाधान के साथ डेटा संरचनाएं।
अंतिम - घटना/राज्य की अपरिवर्तनीयता।
वास्तव में एक बार प्रभाव - कम से कम एक बार डिलीवरी पर दोहराएं-सुरक्षित परिणाम।
वाटरमार्क - देर से होने वाली घटनाओं के लिए मार्क प्रोसेसिंग प
बाहरी-अस्वीकृति - पूल से अपमानित उदाहरणों का बहिष्कार।
नीचे की रेखा: नोड्स के बीच डेटा प्रवाह न केवल एक "कतार और श्रोता" है, बल्कि आदेश, अंतिम रूप, पहचान, सुरक्षा और अवलोकन का एक प्रणालीगत अनुशासन है। मानक विभाजन कुंजी, QoS/कोटा, सख्त योजनाएं और SLO, गिरावट मोड और प्लेबुक के साथ, पारिस्थितिकी तंत्र स्थिर डेटा ट्रांसमिशन चैनल पैमाने पर और ऑडिट के तहत देते हैं।