كيف يؤدي خادم بنية Azure ARM؟
API7.ai
August 8, 2022
الخلفية
في أبريل، أعلنت Microsoft عن عرض أولي لعائلة من الأجهزة الافتراضية (VMs) على Azure تعتمد على معالجات Ampere® Altra® Arm. تتضمن سلسلة الأاجهزة الافتراضية الجديدة الأجهزة الافتراضية للأغراض العامة Dpsv5 والأجهزة الافتراضية المخصصة للذاكرة Epsv5. لمزيد من التفاصيل، راجع الشكل التالي:
من الجدير بالذكر أن معالج Ampere® Altra® Arm هو معالج مصمم خصيصًا للسحابة، وبالتالي يمكن للأجهزة الافتراضية على Azure التي تعتمد على معالجات Ampere® Altra® Arm تشغيل تطبيقات السحابة الموزعة بكفاءة.
إذن، ما هي التجربة والأداء الفعلي؟ لنأخذ بوابة API مخصصة للسحابة كمثال لنعرض لكم أداء الجهاز الافتراضي على Azure الذي يعتمد على بنية Arm. هنا، نختار Apache APISIX للتثبيت والاختبار في بيئة الجهاز الافتراضي من سلسلة Dpdsv5 للأغراض العامة.
Apache APISIX هي بوابة API عالية الأداء وقابلة للتوسيع ومصممة للسحابة. تعتمد APISIX على NGNIX + LuaJIT و etcd، وتتميز بخصائص مثل التوجيه الديناميكي وإعادة تحميل الإضافات الساخنة مقارنة ببوابات API التقليدية، مما يجعلها مناسبة بشكل خاص لإدارة API في بنية السحابة.
التحضيرات الأولية
أولاً، تحتاج إلى تشغيل مثيل من سلسلة Dpdsv5 على Azure، واختيار Ubuntu 20.04 كنظام التشغيل.
ثم قم بتثبيت Docker لتسهيل استخدام الطرق المعتمدة على الحاويات لتثبيت ونشر Apache APISIX.
sudo apt-get update && sudo apt-get install docker.io
نشر Apache APISIX
Apache APISIX تستخدم etcd كمركز للتكوين، لذا تحتاج إلى تشغيل مثيل etcd أولاً.
sudo docker run -d --name etcd
-p 2379:2379
-e ETCD_UNSUPPORTED_ARCH=arm64
-e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
-e ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379
rancher/coreos-etcd:v3.4.16-arm64
ثم قم بتشغيل مثيل Apache APISIX.
sudo docker run --net=host -d apache/apisix:2.14.1-alpine
إنشاء المسارات.
curl "http://127.0.0.1:9080/apisix/admin/routes/1"
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
"uri": "/anything/*",
"upstream": {
"type": "roundrobin",
"nodes": {
"httpbin.org:80": 1
}
}
}'
اختبار الوصول.
curl -i http://127.0.0.1:9080/anything/das
إذا تم إرجاع النتائج التالية، فإن التثبيت ناجح:
HTTP/1.1 200 OK
.....
مقارنة بين Azure Ddsv5 و Azure Dpdsv5
من العمليات السابقة، يمكن إكمال اختبار التثبيت والتوافق لـ Apache APISIX على Azure Dpdsv5 بنجاح. إذن، ما هو الأداء الفعلي لـ Azure Dpdsv5؟ سنقوم الآن باستخدام Apache APISIX لإجراء اختبارات أداء مقارنة بين Azure Dpdsv5 و Azure Ddsv5 لمعرفة أدائهم الفعلي.
Azure Ddsv5 هو نموذج آخر من سلسلة D على Azure، والذي يعتمد على بنية Intel® x86، لذا فإن خطوات تثبيت etcd تختلف قليلاً:
sudo docker run -d --name etcd
-p 2379:2379
-e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
-e ALLOW_NONE_AUTHENTICATION=yes
-e ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379
bitnami/etcd:3.4.16
مصدر واحد بدون إضافات
استخدام مصدر واحد بدون أي إضافات. يتم اختبار أداء APISIX في وضع الوكيل النقي للعودة إلى المصدر.
# apisix: 1 worker + 1 upstream + no plugin
# create route
curl http://127.0.0.1:9080/apisix/admin/routes/1
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri": "/hello",
"plugins": {
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980":1
}
}
}'
مصدر واحد مع إضافتين
استخدام مصدر واحد مع إضافتين. يتم اختبار أداء APISIX عند تمكين إضافتين أساسيتين تستهلكان الأداء، وهما limit-count و prometheus.
# apisix: 1 worker + 1 upstream + 2 plugins (limit-count + prometheus)
# create route
curl http://127.0.0.1:9080/apisix/admin/routes/1
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri": "/hello",
"plugins": {
"limit-count": {
"count": 2000000000000,
"time_window": 60,
"rejected_code": 503,
"key": "remote_addr"
},
"prometheus": {}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980":1
}
}
}'
مقارنة البيانات
في السيناريوهين السابقين، تم إجراء اختبارات ومقارنات من مستويين: طلبات QPS (الاستعلامات في الثانية) ووقت الاستجابة. النتيجة كالتالي:
-
مقارنة QPS
-
مقارنة وقت الاستجابة
| | مصدر واحد بدون إضافات | مصدر واحد مع إضافتين | | ------------------ | --------------------------- | ----------------------------- | --------------- | ---------------- | | | Azure Ddsv5 | Azure Dpdsv5 | Azure Ddsv5 | Azure Dpdsv5 | | QPS(request/s) | 14900 | 13400 | 13100 | 11000 | | Latency(ms) | 1.07 | 1.21 | 1.21 | 1.43 |
يمكن أيضًا أن نرى من البيانات السابقة أنه في سيناريوهات الحوسبة المكثفة لشبكة IO مثل بوابات API، لا يزال هناك فجوة في الأداء بين Dpdsv5 و Ddsv5 من نفس السلسلة. ولكن الخبر الجيد هو أن سعر Dpdsv5 أقل بنحو 20% من Ddsv5 تحت نفس التكوين. في اختيار الجهاز الفعلي، يمكن للمستخدمين اتخاذ قرارات مرنة وفقًا لحجم أعمالهم.
الخلاصة
تناولت هذه المقالة بشكل أساسي استخدام Apache APISIX لمقارنة أداء Azure Ddsv5 و Azure Dpdsv5. يمكن ملاحظة أنه في سيناريوهات الحوسبة المكثفة لشبكة IO مثل بوابات API، لا يزال أداء Azure Dpdsv5 أقل إشراقًا مقارنة بـ Ddsv5، ولكن نظرًا لأن هذه السلسلة من النماذج لا تزال في مرحلة العرض الأولي، فإن Microsoft تقوم بتحسينات مستمرة. نتطلع إلى الإصدارات القادمة.
المرجع
Now in preview: Azure Virtual Machines with Ampere Altra Arm-based processors