WinUpGo
खोज
CASWINO
SKYSLOTS
BRAMA
TETHERPAY
777 FREE SPINS + 300%
क्रिप्टोक्यूरेंसी कैसीनो क्रिप्टो कैसीनो टॉरेंट गियर आपकी सर्व-उद्देश्य धार खोज है! धार गियर

बैकेंड प्रतिक्रिया अनुकूलन: कतारें, async, backpressure

1) क्यों: लक्ष्य और एसएलओ

लक्ष्य फटने के तहत भी एक स्थिर तेज प्रतिक्रिया है। व्यापार इस एसएलओ को व्यक्त करता है:
  • API (CRUD/निर्देशिका): p95 ≤ 250-400 ms, त्रुटि दर <1%।
  • भुगतान/निपटान (अतुल्यकालिक): पुष्टि के लिए आंतरिक एसएलए ≤ 2-5 मिनट, और ग्राहक - तत्काल 202/Accepted + स्थिति मतदाता/वेबहुक।
  • WS/वास्तविक समय: RTT p95 ≤ 120 мс, डिस्कनेक्ट ≤ 0। 5%.

कुंजी: कतारों और सक्षम लोड सीमा के माध्यम से उपयोगकर्ता प्रतिक्रिया से "धीमी" चरणों (प्रदाता, डेटाबेस, बाहरी एपीआई) को खोलना।


2) मूल चित्र: जहां विलंबता ली जाती है

अड़ चनें: डेटाबेस (पूल/इंडेक्स), बाहरी प्रदाता (पीएसपी/गेम), ब्लॉकिंग I/O, GC/स्टॉप वर्ल्ड, JSON धारावाहिक, "भारी" एकत्रीकरण।

लक्षण: p99 वृद्धि, डीबी कनेक्शन कतार, रिट्रे फटना, पुन: तूफान।

एंटीडोट: अतुल्यकालिक पाइपलाइनें + बैकप्रेशर + टाइमआउट/रिट्रीट + पहचान।


3) अतुल्यकालिक पैटर्न: SEDA और CQRS

SEDA (मंचन घटना-संचालित वास्तुकला): प्रसंस्करण को चरणों में विभाजित करें (इंग्रेस → सत्यापन → लिखें → एकीकरण → अधिसूचना)। प्रत्येक की अपनी बारी और संगामिति सीमा है।

CQRS: अलग पढ़ ता है और लिखता है। लॉग/डेटाबेस में लिखना, पढ़ ना - अनुमान/कैश से।

आउटबॉक्स: घटना रिकॉर्ड के साथ परमाणु रूप से प्रकाशित होती है ("खोए हुए" संदेशों से बचें)।

सागा: वैश्विक लोगों के बजाय लेनदेन की भरपाई के साथ लंबी व्यावसायिक प्रक्रिया


4) कतारें और धाराएँ: चयन और ट्यूनिंग

RabbitMQ/NATS JetStream - कार्य कमांड (कार्य कतारें), काफ्का - रीप्ले के साथ घटनाएँ/धाराएँ।

सेटिंग्स जो प्रतिक्रिया को प्

प्रीफेच/अधिकतम इन-फ्लाइट: प्रति कार्यकर्ता एक साथ संसाधित संदेशों की संख्या को सीमित करें (उदाहरण के लिए, 16-64) ताकि डेटाबेस/बाहरी एपीआई को "क्लॉग" न करें।

Acker/दोहराता है: पहचान रिकॉर्डिंग के बाद 'ack'; घातीय देरी और जिटर दोहराता है।

DLQ/पार्किंग स्थल: कोई अंतहीन रिट्रीट नहीं हैं - एन के प्रयासों के बाद, डेड लेटर क्यू में जाता है।

विभाजन (काफ्का): आदेश देने के लिए सार द्वारा कुंजी (userId/txnId); पार्टियों की संख्या के माध्यम से समानतावाद।


5) बैकप्रेशर - कैसे डूबने के लिए नहीं

विचार: एसएलओ की विलंबता के भीतर आप जितना संसाधित कर सकते हैं उतना ही लें।

तकनीशियन:
  • प्रवेश नियंत्रण: प्रत्येक बाहरी निर्भरता के लिए सीमा प्रतियोगिता (सेमाफोर/वर्कर-पूल): डेटाबेस, पीएसपी, गेम प्रदाता।
  • ट्रैफिक आकार: सेवा प्रवेश द्वार पर और महत्वपूर्ण मार्गों पर टोकन-बाल्टी/लीकी-बाल्टी।
  • ऊपरी सीमा के साथ कतारें: जब पूरा होता है, तो पूंछ (429/503 + रेट्री-आफ्टर) को काट दें या आसप-बैच में स्थानांतरित करें।
  • अनुकूली संगति (AIMD): सफलता पर समानता बढ़ाएं, टाइमआउट पर कमी करें।
  • सर्किट ब्रेकर: बाहरी एपीआई की त्रुटियों/टाइमआउट द्वारा 'बंद open आधा-खुला'; जब खुला गिरावट (कैश/स्टब)।
स्यूडोकोड (गो-लाइक):
गो सेम: = मेक (चान संरचना {}, 64 )//डीबी/पीएसपी के लिए प्रतिस्पर्धा की सीमा

फंक हैंडल (req) {
{चुनें
केस सेम <- संरचना {} {}:
स्थगित कवक () {<-sem} ()
ctx, रद्द करें: = संदर्भ। WithTimeout (req। ctx, 300time। मिलीसेकंड)
स्थगित रद्द करें ()
res, err: = db। करें (ctx, req)
यदि err = = संदर्भ। चयनित {metrics से अधिक। टाइमआउट। इंक (); वापसी भी धीमा ()}
वापसी ठीक है (रेस)
डिफ़ॉल्ट:
मेट्रिक्स। Backpressure। इंक ()
वापसी व्यस्त (429, "रीट्री-आफ्टर: 0। 2")
}
}

6) टाइमआउट, रिट्रीट और जिटर: "तीन जीवित व्हेल"

SLO से कम समय: यदि SLO 400 ms, DB/प्रदाता 250-300 ms के लिए समयसीमा; कुल अनुरोध टाइमआउट <400-600 एमएस।

रेट्राई सीमित और स्मार्ट: 1-2 अधिकतम प्रयास, केवल सुरक्षित संचालन (पहचान) के लिए, घातांक और जीटर के साथ।

कोलसिंग: एकल कुंजी के लिए कुल रिप्ले।

स्यूडोकोड (घातांक + जिटर):
रेंज में प्रयास के लिए अजगर (0, 2):
कोशिश करें:
रिटर्न कॉल (डेप, टाइमआउट = 0। 3)
टाइमआउट को छोड़ कर:
बैकऑफ = (0। 05 (2attempt)) + यादृच्छिक। वर्दी (0, 0। 05)
नींद (बैकऑफ)
अपस्ट्रीम अनुपलब्ध उठाएँ

7) पहचान और कमी

डेटाबेस (अद्वितीय सूचकांक) में HTTP (जमा, भुगतान), 'ऑपरेशन _ id' पर पहचान-कुंजी।

इनबॉक्स/आउटबॉक्स: आने वाले वेबहूक - हमेशा 'इवेंट _ आईडी' द्वारा डीडुप के साथ अपरिवर्तनीय इनबॉक्स तालिका के माध्यम से; आउटबाउंड - लेनदेन द्वारा आउटबॉक्स से।

वास्तव में-एक बार "अर्थ में": हम बार-बार वितरण/निष्पादन की अनुमति देते हैं, लेकिन केवल एक प्रभाव है।


8) धीमी गति से संचालन के लिए तेज एपीआई

तुल्यकालिक प्रतिक्रिया: 201/202 + स्थिति URL ('/स्थिति/{ id} '), ETA और रेट्रो संकेत।

वेबहुक/सर्वर-प्रेषित घटना/डब्ल्यूएस - तैयार होने पर राज्य को धक्का दें।

क्लाइंट अनुशासन: 'रेट्री-आफ्टर', पहचान, मतदान सीमा।

प्रतिक्रिया का उदाहरण:
json
HTTP/1। 1 202 स्वीकार किया
स्थान :/ v1/withdrawals/req_9f2/status
रीट्री-आफ्टर: 2
{
" : "" "राज्य": "प्रसंस्करण", " 2:
}

9) गर्म काम को कम करें

भारी चीजों को पृष्ठभूमि में रखें: परिवर्तन, एकत्रीकरण, सूचनाएं, DWH को लिखना।

कैश और अनुमान: आमतौर पर पढ़ें - छोटे टीटीएल और घटना विकलांगता के साथ कैश-अलग।

बैच पैटर्न: समूह बाहरी कॉल (उदा। एन एमएस में एक बार अनुरोध प्रदाता सीमा)।

क्रमबद्धता: सेवा-से-सेवा संचार के लिए फास्ट कोडेक (प्रोटोबुफ/एमएसजीपैक); JSON केवल किनारे पर।


10) डीबी नियंत्रण में

कनेक्शन पूल: ऊपरी सीमा (कोर/आईओ पर आधारित), पूल सक्षम करने के लिए कतारें।

सूचकांक और योजना: p95 व्याख्या + प्रतिगमन योजनाओं के ऑटोटेस्ट।

अनुरोध समय समाप्ति: संक्षिप्त, 'कथन _ timeout' (Postgres).

हॉट पंक्तियाँ/ताले: कुंजी शार्डिंग, आशावादी ताले (संतुलन संस्करण), "अखंड" लेनदेन के बजाय गाथा।


11) वेबसॉकेट/वास्तविक समय

न्यूज़ लेटर लिमिटर: बैच प्रसारण, अधिकतम msgs/sec प्रति कनेक्शन।

आंतरिक बैकप्रेशर: एक टोपी के साथ आउटबाउंड संदेश कतार; ओवरफ्लो पर - कम-प्राथमिकता छोड़ दें।

रिलीज के दौरान स्टिकी-रूटिंग और पीडीबी - ताकि फिर से जुड़े तूफान का उत्पादन न हो।


12) अवलोकन ताकि अनुमान न लगाया जा सके

मेट्रिक्स (RED/USE + backpressure):
  • 'request _ rate', 'त्रुटि _ ratio', 'latency _ p95/p99' on मार्ग।
  • 'queue _ depth', 'lag _ seconds', 'comment _ inflight', 'retries _ total', 'dlq _ rate'।
  • 'backpressure _ drops', 'प्रवेश _ अस्वीकार', 'सर्किट _ open'।
  • Для БД: 'कनेक्शन _ in _ use/max', 'लॉक्स', 'स्लो _ queries'।
  • ट्रेस: स्पैन 'कतार → वर्कर → db/psp' with टैग 'ऑपरेशन _ id', 'पार्टीशन', 'रीट्री'।
  • लॉग: संरचनात्मक, 'ट्रेस _ आईडी' के साथ, पीआईआई के बिना; व्यक्तिगत "ओपन/क्लोज़सर्किट" घटनाएँ।

13) लोड परीक्षण

फटने के लिए ओपन-मॉडल (आगमन/सेकंड); सत्रों के लिए बंद मॉडल (वीयू)।

प्रोफाइल: संक्षिप्त विस्फोट 60-120 एस और 1-4 एच भिगोएं।

इंजेक्शन विफलताएं: बाहरी एपीआई को + 200-500 एमएस से धीमा करें, p99/retrai/कतारों को देखें।

ग्रीन ज़ोन मानदंड: कोई वृद्धि 'कतार _ लैग', स्थिर p95, 'dlq_rate≈0'।


14) सुरक्षा और विश्वसनीयता

टीएलएस/एमटीएलएस कतारें, संदेश हस्ताक्षर, स्कीमा निगरानी (एवरो/प्रोटोबुफ + स्कीमा रजिस्ट्री)।

आदर्श निर्माता (काफ्का), वास्तव में एक बार tx जहां उचित है।
  • अराजकता मोड: समय-समय पर लत को "ड्रॉप" करते हैं और गिरावट (सर्किट, फॉलबैक) को देखते हैं।

15) विन्यास के "टुकड़े" के उदाहरण

Nginx/दूत इनपुट आकार देना:
nginx limit_req_zone $ binary _ remote _ addr zone = api: 10m दर = 20r/s;
सर्वर {सर्वर
स्थान/एपी/{
limit_req ज़ोन = एपी फट = 40 नोडले;
proxy_read_timeout 0। 6s; # SLO proxy_connect_timeout 0 से छोटा है। 2s;
}
}
RabbitMQ (प्रीफेच):

बुनियादी। Qos (prefetch_count = 32) # CPU/IO संतुलन
काफ्का उपभोक्ता (जावा टुकड़ा):
जावा प्रॉप्स। पुट ( Config। MAX_POLL_RECORDS_CONFIG, 200);
prs। पुट ( Config।  ,  ;
prs। पुट ( Config।  ,  ;

16) कार्यान्वयन चेकलिस्ट (प्रोड-रेडी)

  • गंभीर पथ तुल्यकालिक प्रतिक्रिया और अतुल्यकालिक प्रसंस्करण (एसईडीए) में विभाजित हैं।
  • बाहरी निर्भरता के लिए प्रवेश नियंत्रण और प्रतियोगिता सीमा।
  • टाइमआउट एसएलओ से छोटे हैं; रेट्राई ≤ 2, घातांक और जीटर के साथ; कोलसिंग।
  • सर्किट ब्रेकर + गिरावट (कैश/स्टब), आधी-खुली नीति।
  • कतार/धाराएँ: प्रीफेच/इन-फ्लाइट, डीएलक्यू, प्रमुख बैच।
  • Idempotency (operation_id/Idempotency-Key), Outbox/Inbox, deduplication।
  • कैश: कैश-एक तरफ, छोटा TTL + इवेंट विकलांगता।
  • डीबी: पूल लिमिट, statement_timeout, इंडेक्स, एंटी-लॉक रणनीतियाँ।
  • डब्ल्यूएस: संदेश सीमा, कसाई, चिपचिपा-मार्ग, पीडीबी।
  • अवलोकन: बैकप्रेशर/कतारें/रिट्रीज़मेट्रिक्स, एंड-टू-एंड ट्रेल्स, डैशबोर्ड।
  • लोड और विफलता परीक्षण (ओपन + बंद, फट + सोक), ग्रीन ज़ोन मानदंड।

सारांश फिर से शुरू करें

एक तेज़ बैकेंड एक "एक और कैश बनाना" नहीं है, लेकिन एक नियंत्रित धारा: प्रवेश सीमित है, भारी - पृष्ठभूमि में, एक कतार और सीमा के साथ प्रत्येक चरण, रिट्रे दुर्लभ और स्मार्ट हैं, और सर्किट ब्रेकर और पहचार्स द्स द्स। टाइमआउट अनुशासन, अवलोकन और नियमित तनाव परीक्षण जोड़ें - और बाहरी प्रदाताओं के फटने और सनक के तहत भी आपका p95/p99 हरा रहेगा।

× खेलों में खोजें
खोज शुरू करने के लिए कम से कम 3 अक्षर दर्ज करें।