सामग्री पर जाएँ

ब्लॉग

पॉलीग्लॉट बेंचमार्क: सही कार्य के लिए सही उपकरण चुनना

पॉलीग्लॉट बेंचमार्क आपको प्रत्येक एप्लिकेशन के लिए सही स्टैक चुनने में कैसे मदद करते हैं - उन सभी पर शासन करने के लिए एक भाषा नहीं

  • Balinder Walia
  • 4 मिनट में पढ़ें
  • Updated

एक छोटा, स्किम-पठनीय साथी। पूर्ण आर्किटेक्चर डीप-डाइव के लिए - हार्नेस लेआउट, निर्णय मैट्रिक्स, एंटी-पैटर्न और बेंचमार्क को कैसे फोर्क करें -लंबा लेखपढ़ें।

आपके संगठन ने 2019 में एक स्टैक चुना। आपके कार्यभार ने नहीं उठाया।

अधिकांश टीमें अभी भी प्रत्येक नई सेवा के लिए एक ही भाषा पर मानकीकरण करती हैं: नोड में सब कुछ, Python में सब कुछ, जावा में सब कुछ, या केवल ग्रीनफ़ील्ड के लिए रस्ट पर एक वीरतापूर्ण दांव। वह आदत समझ में आती है - जब स्टैक एक समान हो तो नियुक्ति, सीआई टेम्प्लेट और सुरक्षा समीक्षा सभी आसान हो जाते हैं। समस्या यह है कि कार्यभार एक समान नहीं है। एक API गेटवे, एक रात्रिकालीन ETL जॉब, एक NGINX एज ट्रांसफॉर्म, एक JVM माइक्रोसर्विस एस्टेट, और लंबे समय तक चलने वाले कनेक्शन के साथ एक चैट बैकएंड रनटाइम के विभिन्न हिस्सों पर जोर देता है। हॉलवे डिबेट या एकल माइक्रो-बेंचमार्क से एक विजेता को चुनना यह है कि आप गलत भार उठाने वाले गलत टूल के साथ कैसे समाप्त होते हैं।

पॉलीग्लॉट बेंचमार्कमारक है: एक प्रतिलिपि प्रस्तुत करने योग्य हार्नेस और लाइव डैशबोर्ड जोसमानHTTP वर्कलोड परआठरनटाइम की तुलना करता है, ताकि आर्किटेक्ट डिफ़ॉल्ट-स्टैक पूर्वाग्रह के बजाय बंधे हुए संदर्भों से साक्ष्य का मिलान कर सकें।

Polyglot Benchmarks — right tool, right job cover

यह क्या मापता है

सार्वजनिक डैशबोर्डNGINX njs,OpenResty Lua,,बन,जावा (Javalin / Jetty), औरKotlin (Ktor / हेरफेर, अनुरोध निरीक्षण, आंतरिक उपअनुरोध + परिवर्तन, और रूटिंग तर्क। प्रत्येक परीक्षण रिपोर्ट प्रति सेकंड, औसत और टेल विलंबता (P99 सहित), कर्ल से पहली बाइट का समय और त्रुटि गणना का अनुरोध करती है -bench.shपूर्ण होने पर लाइव स्ट्रीम किया जाता है।

जावा और Kotlin संकलित और स्क्रिप्टिंग रनटाइम के साथ बैठते हैं ताकि JVM दुकानें देख सकें कि Javalin और Ktor समान मार्गों पर गो, रस्ट, बन और फास्टएक्सपीआर 11X के खिलाफ कैसे व्यापार करते हैं - हाथ से चलने वाले "उद्यम बनाम ग्रीनफील्ड" कथा के खिलाफ नहीं। हार्नेसवर्कफ़्लो-उदाहरण/बेंचमार्कमें रहता है: Docker कंपोज़ सेवाएँ, एक साझाwrkप्रोफ़ाइल (10 सेकंड, 4 थ्रेड, 100 कनेक्शन), और डैशबोर्ड द्वारा उपभोग किए गए JSON परिणाम। आप इसे अपने स्वयं के उम्मीदवारों और हॉट पाथ के लिए उपयोग कर सकते हैं।

यह एक निर्णय ढाँचा क्यों है, लीडरबोर्ड नहीं

पॉलीग्लॉट बेंचमार्क सभी समय के लिए एक भाषा का ताज नहीं रखता। प्रति परीक्षण पंक्ति में विजेता बदलते हैं - ठीक वही जो आप माइक्रोसर्विसेज डिज़ाइन करते समय चाहते हैं। डैशबोर्ड का निर्णय अनुभाग उपयोग के मामलों (लुआ/एनजेएस में एज रूटिंग, रस्ट/गो में कोर कंकरेंसी, जावा/एक्सपीआर4एक्स में जेवीएम सेवाएं, एक्सपीआर3एक्स में वेलोसिटी) के परिणामों को मैप करता है। वह थीसिस है: डिज़ाइन द्वारापॉलीग्लॉट, राय के बजाय आर्किटेक्चर समीक्षा बोर्डों के लिए डेटा के साथ।

Polyglot Benchmarks four-step approach: define workload, run harness, compare, decide
एक फ्रेम में चार-चरणीय दृष्टिकोण: कार्यभार को परिभाषित करें, हार्नेस चलाएं, लाइव डैशबोर्ड पर तुलना करें, फिर एडीआर के साथ निर्णय लें।

प्लेटफ़ॉर्म और इंजीनियरिंग के लिए छह लाभ

की अगुवाई करते हैं
  • राय पर साक्ष्य- ADRs में चार्ट और कॉन्फिगरेशन संलग्न करें; मापे गए रनों के साथ स्टैक बहस का निपटारा करें।
  • वर्कलोड-विशिष्ट विजेता- विलंबता-संवेदनशील पथ बनाम बैच बनाम एज ट्रांसफॉर्म बनाम जेवीएम एस्टेट को अलग-अलग लीडर मिलते हैं।
  • स्वामित्व की कुल लागत- कच्चा आरपीएस पर्याप्त नहीं है; निर्माण समय, छवि आकार, टीम कौशल फिट और ऑप्स बोझ को तौलें।
  • प्रतिलिपि प्रस्तुत करने योग्य वर्कफ़्लो- वही रेपो, वही कंपोज़ फ़ाइल, वही वर्क स्क्रिप्ट; सीआई में पुनः चलाने योग्य।
  • वैध पॉलीग्लॉट माइक्रोसर्विसेज- बिना शर्म या आश्चर्य के प्रति सेवा सीमा के अनुसार अलग-अलग भाषाएँ।
  • जोखिम में कमी- संगठन-व्यापी अधिदेश से पहले रनर-अप में प्रोटोटाइप।

Polyglot benchmarks workflow from problem spec to ADR

त्वरित प्रारंभ

  1. जब रन चल रहा हो तोलाइव डैशबोर्डखोलें (या स्थानीय रूप से शुरू करें)।
  2. क्लोनworkflow-examples,cd benchmarks,docker compose up- आठ भाषा सेवाएं और डैशबोर्ड और बेंच रनर।
  3. डैशबोर्ड वॉल्यूम परresults.jsonपढ़ें और विजेताओं को अपनीवर्कलोड पंक्तियों कोपर मैप करें।
  4. ADR लिखें - अवधि, थ्रेड, कनेक्शन और हार्डवेयर वर्ग शामिल करें।

लंबा संस्करण

पढ़ें

लंबे लेखमें आपके ARB के साथ साझा करने के लिए पूर्ण रेपो लेआउट, एक मानदंड तालिका, निर्णय-मैट्रिक्स आरेख, प्रति परीक्षण परिवार केस पैटर्न (जावा और Kotlin सहित), एंटी-पैटर्न, सीमाएं और एसईओ-तैयार स्निपेट शामिल हैं।TenthMatrixद्वारा प्रकाशित; बेंचमार्क साइटPolyglot-benchmarks.fictionally.orgपर होस्ट की गई।

#Rust #GoLang #Bunjs #Java #Kotlin #Lua #Python #njs #FastAPI #Javalin #Ktor #OpenResty #polyglot #benchmarks