ओपन-सोर्स API गेटवे के प्रदर्शन: APISIX 3.0 और Kong 3.0
Zhengsong Tu
November 3, 2022
पृष्ठभूमि
Apache APISIX एक क्लाउड-नेटिव, उच्च-प्रदर्शन, स्केलेबल API गेटवे है। यह NGINX और etcd पर आधारित है। पारंपरिक API गेटवे की सुविधाओं के अलावा, APISIX में डायनामिक रूटिंग और प्लगइन हॉट-रीलोडिंग की सुविधाएं हैं, जो इसे क्लाउड-नेटिव आर्किटेक्चर में API प्रबंधन के लिए विशेष रूप से शक्तिशाली बनाती हैं।

2022 के पतझड़ में, Apache APISIX और Kong ने लगभग एक ही समय में अपने 3.0 संस्करण जारी किए। विशेष रूप से, Apache APISIX 3.0 की नई सुविधाएं इकोसिस्टम, बुद्धिमत्ता और अनुप्रयोगों पर केंद्रित हैं। आप Apache APISIX 3.0: ओपन सोर्स API गेटवे के 11 हाइलाइट्स देख सकते हैं।
दोनों ही माइक्रोसर्विसेज के लिए उत्कृष्ट ओपन-सोर्स API गेटवे हैं। जब दो उत्पाद एक साथ जारी होते हैं, तो कई उपयोगकर्ता उनकी सुविधाओं और प्रदर्शन में अंतर में रुचि रखते हैं। इस लेख में, हम चार अलग-अलग परिदृश्यों पर किए गए परीक्षणों के प्रदर्शन परिणाम प्रदान करेंगे।
परीक्षण विधि
अनुरोध टोपोलॉजी
निम्नलिखित परीक्षण अनुरोधों का टोपोलॉजी आरेख है। स्ट्रेस टेस्ट टूल के रूप में wrk2 का उपयोग किया गया था, और अपस्ट्रीम सेवा के रूप में OpenResty का उपयोग किया गया था।
APISIX

Kong

सर्वर जानकारी
यह परीक्षण Standard D8s v3 (8 vcpu, 32 GiB मेमोरी) के क्लाउड सर्वर पर किया गया था। सभी परीक्षण से संबंधित घटक इस सर्वर पर तैनात किए गए हैं।
सर्वर वातावरण
| नाम | मान |
|---|---|
| OS | Debian 10 "buster" |
| ulimit -n | 65535 |
सॉफ्टवेयर संस्करण
इस परीक्षण में उपयोग किए गए सॉफ्टवेयर के संस्करण निम्नलिखित हैं:
| नाम | संस्करण |
|---|---|
| Docker | 20.10.18, build b40c2f6 |
| APISIX | 3.0.0 |
| Kong | 3.0.0 |
| Upstream | OpenResty 1.21.4.1 |
| Test tool | wrk2 |
नेटवर्क सेटिंग
APISIX और Kong को docker में तैनात करते समय, हमने docker में होस्ट नेटवर्क मोड का उपयोग किया ताकि परीक्षण परिणामों पर नेटवर्क प्रभाव से बचा जा सके।
तैनाती
हमने wrk2 को बेंचमार्क टेस्टिंग टूल के रूप में चुना और OpenResty को सिम्युलेटेड अपस्ट्रीम के रूप में तैनात किया। हमने APISIX और Kong को docker में डिक्लेरेटिव कॉन्फ़िगरेशन सक्षम करके तैनात किया।
हम चाहते थे कि परीक्षण परिणाम अधिक स्पष्ट हों, इसलिए हमने परीक्षण के लिए केवल एक वर्कर का उपयोग किया। आमतौर पर, लोड क्षमता और वर्कर की संख्या के बीच संबंध रैखिक होता है। इसलिए, परीक्षण के लिए केवल एक वर्कर पर्याप्त होगा।
साथ ही, APISIX ने proxy-cache और proxy-mirror प्लगइन को बंद कर दिया, जो APISIX प्रोजेक्ट में बेंचमार्क से संबंधित दस्तावेज़ों में उल्लेखित हैं (proxy-cache और proxy-mirror प्लगइन APISIX के प्रदर्शन को लगभग 4% प्रभावित करते हैं)।
तैनाती स्क्रिप्ट और परीक्षण स्क्रिप्ट संदर्भ यहां देखें।
परीक्षण
परीक्षण #1: 1 रूट
शुद्ध प्रॉक्सी परिदृश्य का परीक्षण करें। हम केवल एक रूट और कोई प्लगइन का उपयोग करके APISIX और Kong के प्रदर्शन का परीक्षण करेंगे।
APISIX का कॉन्फ़िगरेशन:
routes: - uri: /hello upstream: nodes: "127.0.0.1:1980": 1 type: roundrobin #END
Kong का कॉन्फ़िगरेशन:
_format_version: "3.0" _transform: true services: - name: hello url: http://127.0.0.1:1980 routes: - name: hello paths: - /hello
प्रदर्शन तुलना

हमने प्रदर्शन को मापने के लिए QPS मेट्रिक का उपयोग किया। कुल 10 राउंड के परीक्षण किए गए।
जैसा कि हम ग्राफ से देख सकते हैं, शुद्ध प्रॉक्सी परिदृश्य में, APISIX 3.0 का प्रदर्शन Kong 3.0 की तुलना में काफी अधिक है। 10 राउंड में APISIX 3.0 का औसत QPS 14104 है, और Kong 3.0 का औसत QPS 9857 है। APISIX 3.0 का प्रदर्शन Kong 3.0 का 140% है।
परीक्षण #2: 1 रूट + 1 रेट-लिमिटिंग प्लगइन
रेट लिमिटिंग API गेटवे के प्राथमिक उपयोगकर्ता परिदृश्यों में से एक है। इसलिए, इस परिदृश्य में, हमने गेटवे को एक रूट और एक रेट-लिमिटिंग प्लगइन के साथ कॉन्फ़िगर किया।
APISIX का कॉन्फ़िगरेशन:
routes: - uri: /hello upstream: nodes: "127.0.0.1:1980": 1 type: roundrobin plugins: limit-count: count: 999999999 time_window: 60 rejected_code: 503 key: remote_addr #END
Kong का कॉन्फ़िगरेशन:
_format_version: "3.0" _transform: true services: - name: hello url: http://127.0.0.1:1980 routes: - name: hello paths: - /hello plugins: - name: rate-limiting config: minute: 999999999 limit_by: ip policy: local
यह परीक्षण API गेटवे के रेट-लिमिटिंग परिदृश्य में प्रदर्शन को मापता है। हमने रेट-लिमिटिंग प्लगइन को एक उच्च सीमा पर कॉन्फ़िगर किया ताकि वास्तविक रेट-लिमिटिंग कार्रवाई को ट्रिगर न किया जा सके।
प्रदर्शन तुलना

फिर से, हमने कुल 10 राउंड के परीक्षण किए। हम ग्राफ से देख सकते हैं कि रेट-लिमिटिंग प्लगइन सक्षम करने के बाद, APISIX 3.0 और Kong 3.0 दोनों का QPS काफी कम हो गया, लेकिन Kong 3.0 का QPS अधिक गिरा। APISIX 3.0 का औसत 10-राउंड QPS 9154 है, और Kong 3.0 का औसत 10-राउंड QPS 4810 है। इस परिदृश्य में, APISIX 3.0 का प्रदर्शन Kong 3.0 का 190% है।
परीक्षण #3: 1 रूट + 1 रेट-लिमिटिंग प्लगइन + 1 प्रमाणीकरण प्लगइन
प्रमाणीकरण API गेटवे का एक और सामान्य उपयोगकर्ता परिदृश्य है।
इस परिदृश्य में, हमने गेटवे को एक रूट, एक रेट-लिमिटिंग प्लगइन और एक प्रमाणीकरण प्लगइन के साथ कॉन्फ़िगर किया।
APISIX का कॉन्फ़िगरेशन:
routes: - uri: /hello upstream: nodes: "127.0.0.1:1980": 1 type: roundrobin plugins: key-auth: limit-count: count: 999999999 time_window: 60 rejected_code: 503 key: remote_addr consumers: - username: jack plugins: key-auth: key: user-key #END
Kong का कॉन्फ़िगरेशन:
_format_version: "3.0" _transform: true services: - name: hello url: http://127.0.0.1:1980 routes: - name: hello paths: - /hello plugins: - name: rate-limiting config: minute: 999999999 limit_by: ip policy: local - name: key-auth config: key_names: - apikey consumers: - username: my-user keyauth_credentials: - key: my-key
यह परिदृश्य रेट लिमिटिंग और प्रमाणीकरण को कवर करता है ताकि अनुरोध पथ में कई प्लगइन एक साथ काम करें। यह API गेटवे का उपयोग करने का एक विशिष्ट परिदृश्य है।
प्रदर्शन तुलना

फिर से, हमने QPS को मापने के लिए दस राउंड के परीक्षण किए।
हम ग्राफ से देख सकते हैं कि APISIX में limit-count और key-auth प्लगइन सक्षम करने के बाद, APISIX 3.0 का औसत QPS 8933 है, जो केवल limit-count प्लगइन सक्षम होने पर 9154 के औसत QPS से थोड़ा कम है।
हालांकि, Kong 3.0 में, औसत QPS 3977 तक गिर गया, जो केवल रेट-लिमिटिंग प्लगइन सक्षम होने पर 4810 के औसत QPS की तुलना में एक महत्वपूर्ण गिरावट है।
रेट-लिमिटिंग और प्रमाणीकरण प्लगइन सक्षम करने के इस परिदृश्य में, APISIX 3.0 का प्रदर्शन Kong 3.0 का 220% है।
परीक्षण #4: 5000 रूट
यह परीक्षण 5000 अद्वितीय रूट उत्पन्न करने के लिए स्क्रिप्ट का उपयोग करता है। यह परीक्षण APISIX और Kong के रूट मिलान प्रदर्शन को मापता है: यह कितनी जल्दी एक मिलान को हिट करता है।
प्रदर्शन तुलना

10 राउंड के परीक्षण में, APISIX 3.0 का औसत QPS 13787 है, और Kong 3.0 का औसत 9840 है। APISIX 3.0 का प्रदर्शन Kong 3.0 का 140% है।
निष्कर्ष
कई परिदृश्यों के परीक्षण के परिणामों से, यह स्पष्ट है कि:
- जब प्लगइन का उपयोग नहीं किया जाता है (परीक्षण #1 और परीक्षण #4), APISIX 3.0 का प्रदर्शन Kong 3.0 का लगभग 140% है।
- जब प्लगइन का उपयोग किया जाता है (परीक्षण #2 और परीक्षण #3), APISIX 3.0 का प्रदर्शन Kong 3.0 का लगभग 200% है।
हम देख सकते हैं कि APISIX अपने 3.0 संस्करण में एक महत्वपूर्ण प्रदर्शन लाभ बनाए रखता है।