GH GambleHub

संदेश दलाल

1) संदेश दलालों क्यों

ब्रोकर उत्पादकों और उपभोक्ताओं को समय/गति/विश्वसनीयता से जोड़ ता है:
  • पीक बफरिंग और स्मूथिंग, बैकप्रेशर।
  • स्वतंत्र रूप से स्केलिंग पढ़ें/लिखें
  • घटनाओं की अवलोकन और पुनरावृत्ति।
  • आर्किटेक्चरल पैटर्न: इवेंट-चालित, CQRS, इवेंट सोर्सिंग, आउटबॉक्स/इनबॉक्स।

2) बुनियादी मॉडल और शर्तें

2. 1 काफ्का (लॉग मॉडल)

विषय - पार्टियां (आदेशित लॉग) उपभोक्ताओं से ऑफसेट।

उपभोक्ता समूह: समानतावाद, पार्टी संतुलन पढ़ें।

समय/मात्रा द्वारा प्रतिधारण; कुंजी संपीड़न।

शब्दार्थ: न्यूनतम - कम से कम-एक बार, सेटिंग्स के साथ - प्रभावी रूप से एक बार (अज्ञात उत्पादक + लेनदेन)।

आदेश: पार्टी के भीतर गारंटी।

2. 2 NATS (विषय, कम विलंबता)

पदानुक्रम और वाइल्डकार्ड के साथ विषय (विषय) ('फू। ',' फू। >`).

मोड: पब/उप, कतार-समूह (कार्य वितरण के साथ प्रशंसक-आउट), अनुरोध-उत्तर (तेज आरपीसी)।

कोर एनएटीएस - पंचांग, अल्ट्रा-कम विलंबता; जेटस्ट्रीम - दृढ़ ता/प्रतिधारण/पुनरावृत्ति।

आदेश: सर्वोत्तम प्रयास, कोई मजबूत वैश्विक गारं जेटस्ट्रीम के साथ - धारा पर आदेश, लेकिन विफलताओं के मामले में दुर्लभ पुनर्व्यवस्था संभव है।

3) वितरण शब्दार्थ और स्थिरता

शब्दार्थकाफ्काएनएटीएस कोरNATS JetStream
सबसे अधिक बारदुर्लभ (आमतौर पर अनावश्यक)डिफ़ॉल्ट (कोई पुष्टि नहीं)क्या मैं
कम से कम एक बारमानक (प्रसंस्करण के बाद ऑफसेट)ack नीति के साथमानक (ack नीति, पुनर्वितरण)
बिल्कुल एक बार (प्रभावी)पहचान निर्माता + लेनदेन; पहचान सिंकn/aउपभोक्ता स्तर (पहचान) पर प्राप्त, दलाल काफ्का में लेनदेन नहीं देता है

काफ्का में "बिल्कुल एक बार" होने पर भी मूर्खता और कमी आवेदन/चोट की जिम्मेदारी है।

4) आदेश, विभाजन और कुंजियाँ

काफ्का

संदेश कुंजी की पसंद पार्टी को निर्धारित करती है - मजबूत स्थानीय आदे

Ключи: 'एग्रीगेट _ आईडी', 'टेनेंट _ आईडी', 'ऑर्डर _ आईडी'। गर्म कुंजी से बचें।

संतुलन: एन पार्टियां - समानतावाद स्तर पढ़ ना।

NATS

कोर में, कतार-समूह संतुलन करता है।

जेटस्ट्रीम विषयों द्वारा फेरबदल किया गया है; कम विलंबता के साथ व्यापक फैन आउट/पंखे पर जोर।

5) प्रतिधारण, फिर से खेलना और संघनन

काफ्का

प्रतिधारण: 'प्रतिधारण। ms/बाइट्स '।

संघनन: "कुंजी द्वारा अंतिम मान संग्रहीत करें" (स्नैपशॉट/कैश/सागा के लिए उपयुक्त)।

रीप्ले: कोई भी घाघ ऑफसेट "रिवाइंड" कर सकता है।

जेटस्ट्रीम

धाराएँ: फ़ाइल/ज्ञापन बैकेंड, भंडारण नीति समय/बाइट/संदेशों की संख्या।

उपभोक्ता: पुल/पुश, टिकाऊ/पंचांग, विषय उपसर्गों द्वारा फिल्टर।

रीप्ले: पुनर्वितरण या शुरुआत/ऑफसेट-जैसे (अनुक्रम) से पढ़ ना।

6) लेनदेन, आउटबॉक्स और स्थिरता

काफ्का

पहचान निर्माता ('सक्षम। पहचान = सही '): डुप्लिकेट से सुरक्षा।

लेनदेन: कई बैचों की परमाणु रिकॉर्डिंग + उपभोक्ता-ऑफसेट - "छेद" के बिना पढ़ ने-प्रक्रिया-लेखन पैटर्न।

लेन-देन आउटबॉक्स: एक व्यावसायिक घटना का रिकॉर्ड और एक डेटाबेस लेनदेन में एक आउटबॉक्स लाइन, कार्यकर्ता काफ्का में प्रकाशित होता है।

NATS

काफ्का में कोई "क्रॉस-स्ट्रीम" लेनदेन नहीं हैं; आउटबॉक्स/इनबॉक्स और आइडेम्पोटेंट उपभोक्ता (कुंजी, डेडस्टोर) का उपयोग करें।

7) आरपीसी और अनुरोध-प्रतिक्रिया

काफ्का आरपीसी (उच्च ओवरहेड, ऑर्डर/जवाब अधिक कठिन हैं) के लिए असुविधाजनक है। अतुल्यकालिक कमांड/घटनाओं का उपयोग करें।

NATS: अनुरोध-उत्तर (मिलीसेकंड, सहसंबंध, टाइमआउट) के लिए आदर्श।

उदाहरण (जाओ, NATS अनुरोध-उत्तर):
go resp, err:= nc. Request("profile. get", []byte(`{"id":42}`), 200time. Millisecond)

8) ऑपरेशन और टोपोलॉजी

8. 1 काफ्का

क्लस्टर: दलाल + ज़ूकीपर (पुराने संस्करणों से पहले) या KRaft (नया मेटाडेटा)।

प्रतिकृति - जोन RF≥3, आईएसआर/नियंत्रक

बहु-क्षेत्र: मिररमेकर 2/Cluster लिंकिंग; संघर्ष-नीतियों के साथ परिसंपत्ति-देयता/संपत्ति-संपत्ति।

डिस्क/नेटवर्क क्षमता: 'थ्रोपुट × रिटेंशन × प्रतिकृतियों' से पढ़ें।

8. 2 NATS

क्लस्टर: कई नोड्स, सुपर-क्लस्टर (भू-वितरण), परिधीय/किनारे के लिए लीफनोड्स।

जेटस्ट्रीम: नोड सेट (प्लेसमेंट), प्रतिकृति (आर = 1) द्वारा धाराओं का प्लेसमेंट। 5).

वान: अनुमानित रूप से कम विलंबता, आसान महासंघ।

9) सुरक्षा

काफ्का

TLS (mTLS), SASL: SCRAM, OAuthBearer।

विषयों/समूहों/लेनदेन पर एसीएल।

एन्क्रिप्शन "आराम पर" (OS/disks) + नेटवर्क नीतियाँ।

NATS

nkey/JWT पहचान, ऑपरेटर-खाते, प्रति-विषय ACL।

नोड्स और क्लाइंट के बीच mTLS।

किरायेदार अलगाव (खाते) + सीमा।

10) अवलोकन और प्रदर्शन मैट्रिक्स

काफ्का

: 'BytesIn/Out', ' Queue', 'अंडररेप्लिकेटेड पार्टिशन्स', GC/FS आँकड़े।

विषय/भाग: 'logEndOfset', उपभोक्ता अंतराल (महत्वपूर्ण)।

निर्माता/घाघ: रेट्राई, 'बैच। आकार ',' linger। ms ',' लाना। min. बाइट्स ', त्रुटियां।

उपकरण: जेएमएक्स, क्रूज़ कंट्रोल (फिर से संतुलन), स्कीमा रजिस्ट्री।

NATS/JetStream

सर्वर: conn/msgs/sec, RTT, CPU/mem, धीमी उपभोक्ता पहचान।

जेटस्ट्रीम: प्रति धारा/उपभोक्ता - अंतराल, पुनर्वितरण, एक्क, भंडारण बाइट्स।

निगरानी: अंतर्निहित समापन बिंदु, nsc/adm-CLI, डैशबोर्ड।

11) प्रदर्शन और ट्यूनिंग

काफ्का

बड़े कसाई और 'linger। mimprove थ्रूपुट और संपीड़ित p99।

संपीड़न (lz4/zstd) संजाल/डिस्क सहेजता है।

संख्या। उपभोक्ताओं/कोर की संख्या द्वारा विभाजन, लेकिन ओवरहेड नहीं।

ड्राइव: NVMe को पसंद किया गया, XFS/EXT4 'नोटिमे' के साथ।

NATS

छोटे संदेश, कई कनेक्शन आदर्श हैं; कतार समूहों को "चौड़ा" रखें।

जेटस्ट्रीम: ट्यून 'max _ ack _ लंबित', पुल बनाम पुश, बैचों का आकार।

Backpressure: 'FlowControl', 'IdleHeartbeat', सर्वर-साइड लिमिट।

12) एकीकरण पैटर्न

आउटबॉक्स/इनबॉक्स (काफ्का और एनएटीएस दोनों में)।

SAGA: घटना ऑर्केस्ट्रेशन; दादाजी 'saga _ id + stept' द्वारा।

डेटा कैप्चर बदलें (सीडीसी): डेबेज़ियम → काफ्का; NATS में - "डेटाबेस ट्रिगर/लॉग्स से प्रकाशक" पैटर्न।

स्ट्रीम प्रोसेसिंग: काफ्का स्ट्रीम/फ्लिंक/स्पार्क; NATS में - थर्ड-पार्टी प्रोसेसर/फीचर्स, JetStream उपभोक्ता।

डेड लेटर क्यू (DLQ) और रीट्री पॉलिसी (घातीय बैकऑफ + जिटर)।

13) कॉन्फ़िगरेशन उदाहरण

13. 1 काफ्का: एक विषय और निर्माता बनाना

bash kafka-topics. sh --create --topic orders \
--partitions 12 --replication-factor 3 \
--config cleanup. policy=delete \
--config retention. ms=604800000 # 7d
properties producer. properties bootstrap. servers=broker:9092 acks=all enable. idempotence=true batch. size=65536 linger. ms=10 compression. type=zstd

13. 2 काफ्का धाराएँ: पहचान मशीनिंग (स्केच)

java builder. <String, Order>stream("orders")
.groupByKey()
.aggregate(/... /)
.toStream()
.to("orders-agg");

13. 3 NATS JetStream: स्ट्रीम + उपभोक्ता (nats CLI)

bash nats stream add ORDERS --subjects "orders. " --retention limits \
--storage file --max-bytes 100GB --replicas 3 --discard old

nats consumer add ORDERS ORDERS-WORKERS --filter "orders. created" \
--deliver pull --ack explicit --max-deliver 6 --backoff "1s,5s,30s,2m"

13. 4 NATS अनुरोध-जवाब (जाओ)

go nc, _:= nats. Connect("tls://nats:4222", nats. Secure(tlsConf))
sub, _:= nc. QueueSubscribe("calc. sum", "workers", func(m nats. Msg) {
//... process...
m. Respond([]byte("42"))
})

14) काफ्का बनाम एनएटीएस पिक: एक त्वरित गाइड

हमें रिप्ले, दीर्घकालिक प्रतिधारण, संपीड़न, भारी धारा प्रक्रियाओं की आवश्यकता है - काफ्का।

माइक्रोलैटेंसी, सिंपल ऑपरेशन, एज/आईओटी → एनएटीएस (कोर) के साथ फास्ट आरपीसी, फैन-आउट/फैन-इन की जरूरत है।

हमें दृढ़ ता + फैन-आउट की आवश्यकता है, लेकिन भारी "लॉग" प्लेटफॉर्म - NATS JetStream के बिना।

सख्त कुंजी और लेनदेन आदेश → काफ्का।

15) क्षमता योजना (सरलीकृत)

काफ्का

1. थ्रूपुट: 'इनबाउंड _ MBps × RF × × 86400' डिस्क।

2. बैच: 'लक्ष्य _ संगोष्ठी' × स्टॉक 1। 5-2 ×।

3. नेटवर्क: p99 + प्रतिकृति + निर्माता संपीड़न।

NATS/JetStream

1. संदेश/सेकंड और औसत → थ्रूपुट।

2. प्रतिधारण × प्रतिकृति → भंडारण।

3. क्रमबद्धता के लिए उपभोक्ता सीमा (ack-लंबित, पुनर्वितरण), CPU।

16) सुरक्षित ऑपरेशन: चेकलिस्ट

  • टीएलएस/एमटीएलएस सक्षम, रहस्य घुमाया गया।
  • एसीएल/खाते/कोटा (प्रति-किरायेदार)।
  • उपभोक्ताओं, डीएलक्यू और जिटर रिट्रीट पर पहचान।
  • लैग/थ्रूपुट/त्रुटि निगरानी; URP (काफ्का) पर अलर्ट, पुनर्वितरण तूफान (NATS)।
  • क्षमता डैशबोर्ड: विभाजन, भंडारण, p99।
  • नोड/ज़ोन विफलता परीक्षण, खेल-दिन, रीप्ले/बैकफिल।
  • स्कीमा रजिस्ट्री/JSON स्कीमा कुंजियाँ प्रलेखित हैं।
  • प्रतिधारण/संपीड़न/टीटीएल नीतियां अनुपालन के साथ संरेखित हैं।
  • ब्रोकर/क्लाइंट संस्करण नियमित रूप से अपडेट किए जाते हैं; तार प्रोटोकॉल संगतता सत्यापित।

17) एंटी-पैटर्न

हॉट की (एक ही आईडी की सभी घटनाएं) → एक "उबलती" धारा। शर्दी/बफर।

बिना पहचान के पीछे हटता है - दोहरा प्रभाव।

विशाल संदेश (एमबी-दसियों) → जीसी विखंडन/ठहराव। वस्तु में नीतभार भंडारित करें, लिंक भेजें।

आरपीसी को मिलाना और काफ्का में स्ट्रीमिंग - एक जटिल जीवन चक्र/क्रम।

जेटस्ट्रीम "दीर्घकालिक DWH" → ऑफ-लेबल के रूप में; वस्तु/स्तंभ बेड में लंबे समय तक स्टोर करें।

कोई DLQ → "जहरीला" संदेश अंतहीन रूप से बिताते हैं।

भूल गए प्रतिधारण - डिस्क भरे हुए हैं, क्लस्टर स्टॉप।

18) एफएक्यू

प्रश्न: क्या मैं पाइपलाइन के अंत में "बिल्कुल एक बार" कर सकता हूं?

A: व्यवहार में - प्रभावी रूप से हाँ: काफ्का (आइडेम्पोटेंट प्रोड्यूसर + लेनदेन) और आइडेम्पोटेंट सिंक (कुंजी, अपसर्ट)। एनएटीएस में - आवेदन में निष्क्रियता/कमी के माध्यम से।

प्रश्न: एक मिलियन छोटे आरपीसी/सेकंड के लिए क्या चुनना है?

A: NATS कोर: माइक्रोलैटेंसी, अनुरोध-उत्तर, हल्के कनेक्शन और कतार-समूह।

प्रश्न: भाग्य के संघनन और स्नैपशॉट की आवश्यकता है?

A: काफ्का с 'सफाई। नीति = कॉम्पैक्ट ', कुंजी = कुल/संसाधन।

प्रश्न: अंतराल से कैसे निपटें?

A: बैचों/श्रमिकों की संख्या बढ़ाएं, प्रसंस्करण समय, बैच और प्रीफेच को कम करें, रेगिस्तान का अनुकूलन करें, लंबवत रूप से दलालों/ड्राइव को मजबूत करें।

प्रश्न: बहु-क्षेत्र और डीआर?

A: काफ्का - मिररमेकर 2/Cluster लिंकिंग, संपत्ति-दायित्व के साथ RPO≈sekundy। NATS - सुपरक्लस्टर/लीफनोड्स; ज़ोन द्वारा जेटस्ट्रीम मिररिंग/प्रतिकृतियाँ।

19) कुल

काफ्का और एनएटीएस विभिन्न मोड बंद करते हैं: काफ्का - टिकाऊ घटना लॉग, उच्च थ्रूपुट, लेन-देन और रीप्ले; NATS कम विलंबता, RPC और सरल प्रशंसक-आउट के लिए एक अल्ट्रालाइट बस है, जिसमें दृढ़ ता के लिए JetStream है। डिलीवरी शब्दार्थ, आदेश और प्रतिधारण, विलंबता और परिचालन लागत से अपनी पसंद बनाएं। डिजाइन कुंजी/पार्टियां, प्रतिधारण, डीएलक्यू और अवलोकन - और आपकी घटना वास्तुकला पूर्वानुमानित, स्केलेबल और विश्वसनीय होगी।

Contact

हमसे संपर्क करें

किसी भी प्रश्न या सहायता के लिए हमसे संपर्क करें।हम हमेशा मदद के लिए तैयार हैं!

Telegram
@Gamble_GC
इंटीग्रेशन शुरू करें

Email — अनिवार्य है। Telegram या WhatsApp — वैकल्पिक हैं।

आपका नाम वैकल्पिक
Email वैकल्पिक
विषय वैकल्पिक
संदेश वैकल्पिक
Telegram वैकल्पिक
@
अगर आप Telegram डालते हैं — तो हम Email के साथ-साथ वहीं भी जवाब देंगे।
WhatsApp वैकल्पिक
फॉर्मैट: देश कोड और नंबर (उदा. +91XXXXXXXXXX)।

बटन दबाकर आप अपने डेटा की प्रोसेसिंग के लिए सहमति देते हैं।