Co-authored-by: John Bampton <jbampton@gmail.com>
26 KiB
أباتشي أبيسكس
أباتشي أبيسكس هو عبارة عن بوابة ديناميكية وفي الوقت الفعلي وعالية الاداء
أباتشي أبيسكس توفر امتيازات حركة مرور كبيرة مثل (موازنة التحميل، المنبع الديناميكي، إصدار كناري، كسر الدائرة، المصادقة، إمكانية المراقبة، والمزيد. يمكنك استخدام أباتشي أبيسكس للتعامل مع حركة المرور التقليدية شمالا-جنوبا وأيضا بحركة شرق-غرب بين الخدمات. يمكن استخدامه أيضا كوحدة تحكم دخول k8s.
بنية الهيكل الفني لأباتشي أبيسكس:
المجتمع
القائمة البريدية: أرسل بالبريد إلى dev-subscribe@apisix.apache.org
اتبع الرد للاشتراك في القائمة البريدية.
مجموعة QQ - 578997126
- مساحة عمل Slack - تابع
#apisix
على Slack لمقابلة الفريق وطرح الأسئلة - - تابعنا وتفاعل معنا باستخدام الهاشتاج
#ApacheAPISIX
- bilibili فيديو
- الاصدارات الأولى الجيدة:
السمات
• يمكنك استخدام أباتشي أبيسكس كمدخل لحركة المرور لمعالجة جميع بيانات الأعمال ، بما في ذلك التوجيه الديناميكي ، والمنبع الديناميكي ، والشهادات الديناميكية ، واختبار A / B ، وإصدار الكناري ، والنشر الأزرق والأخضر ، ومعدل الحد ، والدفاع ضد الهجمات الضارة ، والمقاييس ، وإنذارات المراقبة ، وقابلية مراقبة الخدمة ، وحوكمة الخدمة ، وما إلى ذلك.
- جميع المنصات
Native: النظام الأساسي غير المقيد ، لا يوجد قفل للبائع ، يمكن تشغيل APISIX من النظام الأساسي إلى Kubernetes.
• بيئة التشغيل: يتم دعم كل من OpenResty و Tengine.
• يدعم ARM64: لا تقلق بشأن قفل تقنية الأشعة تحت الحمراء.
-
متعدد البروتوكولات
- TCP/UDP وكيل: ديناميكي TCP/UDP وكيل.
- Dubbo وكيل: ديناميكي HTTP to Dubbo وكيل.
- ديناميكي MQTT وكيل: يدعم تحميل MQTT بواسطة
client_id
, وكلاهما يدعم MQTT 3.1.*, 5.0. - gRPC proxy:توكيل حركة مرور gRPC .
- gRPC transcoding: يدعم تحويل ترميز البروتوكول بحيث يمكن للعملاء الوصول إلى واجهة برمجة تطبيقات gRPC الخاصة بك باستخدام HTTP/JSON.
- مقبس الويب الوكيل
- بروتوكول الوكيل
- الوكيل Dubbo: Dubbo يعتمد على Tengine.
- HTTP(S) وكيل إعادة التوجيه
- SSL: تحميل شهادة SSL ديناميكيًا.
-
ديناميكية كاملة
- التحديثات الطارئة والإضافات الطارئة: يقوم باستمرار بتحديث التكوينات والإضافات دون إعادة التشغيل!
- إعادة كتابة الوكيل:دعم إعادة كتابة المضيف، uri، المخطط، enable_websocket، رؤوس الطلب قبل الإرسال إلى المنبع.
- إعادة كتابة الاستجابة: قم بتعيين رمز حالة الاستجابة المخصص والجسم والرأس للعميل.
- بدون خادم: استدعاء الوظائف في كل مرحلة في ابيسكس.
- موازنة الحمل الديناميكية: موازنة تحميل دائرية مع الوزن.
- موازنة التحميل المستندة إلى التجزئة: توازن الحمل مع جلسات التجزئة المتسقة.
- الفحوصات الصحية: قم بتمكين الفحص الصحي على عقدة المنبع وسيقوم تلقائيًا بتصفية العقد غير الصحية أثناء موازنة التحميل لضمان استقرار النظام.
- قاطع الدائرة: تتبع ذكي لخدمات المنبع غير الصحية.
- مرآة الوكيل: توفر القدرة على عكس طلبات العميل
- تقسيم حركة المرور: يسمح للمستخدمين بتوجيه النسب المئوية بشكل متزايد من حركة المرور بين مختلف التدفقات.
-
التوجيه الدقيق
- يدعم مطابقة المسار الكامل ومطابقة البادئة
- دعم جميع متغيرات Nginx المضمنة كشرط للتوجيه, بحيث يمكنك استخدام
ملفات تعريف الارتباط
,args
, وما إلى ذلك. كظروف توجيه لتنفيذ إصدار canary ، واختبار A / B ، إلخ - دعم العديد من المشغلين كشروط حكم للتوجيه, على سبيل المثال
{"arg_age", ">", 24}
- دعم وظيفة مطابقة الطريق المخصصة
- IPv6: استخدم IPv6 لمطابقة المسار.
- دعم TTL
- أولوية الدعم
- دعم طلبات Http الدفعية
-
الحماية
-المصادقات: key-auth, JWT, basic-auth, wolf-rbac
- IP القائمة البيضاء/القائمة السوداء
- القائمة البيضاء للمراجع / القائمة السوداء
- IdP: دعم خدمات المصادقة الخارجية , مثل Auth0, okta, etc., يمكن للمستخدمين استخدام هذا للاتصال بـ OAuth 2.0 وطرق المصادقة الأخرى.
- حد-مطلوب
- حد-العد
- المحدد-التزامن
- Anti-ReDoS(التعبير العادي رفض الخدمة): سياسات مضمنة لـ Anti-ReDoS بدون تكوين.
- CORS تمكين CORS(مشاركة الموارد عبر الأصل) لواجهة برمجة التطبيقات الخاصة بك.
- URI حظر: حظر طلب العميل عن طريق URI.
- طلب مدقق
-
OPS ودي
- أوبينتراكينج: دعم أباتشي سكايواكينغ زيبكين
- يعمل مع اكتشاف الخدمة الخارجية:بالإضافة إلى الخادم المدمج, فإنه يدعم أيضًا وضع
Consul
وNacos
DNS وضع الاكتشاف, و يوريكا - المراقبة والقياسات: بروميثيوس
- التجميع: عُقد أبيسكس عديمة الحالة، وتقوم بإنشاء مجموعات لمركز التكوين، يرجى الرجوع إلى etcd دليل المجموعات.
- التوافر العالي: دعم تكوين عناوين etcd متعددة في نفس المجموعة.
- لوحة القيادة
- التحكم في الإصدار: يدعم التراجع عن العمليات.
- CLI: بدء\ايقاف\اعادة تحميل أبيسكس من خلال سطر الأوامر.
- قائمة-ذاتية:يدعم تحميل قواعد المسار من ملف YAML المحلي ، وهو أكثر ملاءمة مثل تحت kubernetes (k8s).
- القاعدة العالمية: تسمح بتشغيل أي مكون إضافي لجميع الطلبات، على سبيل المثال: معدل الحد، مرشح IP، إلخ.
- أداء عالٍ: يصل معدل QPS أحادي النواة إلى 18 ألفًا بمتوسط تأخير أقل من 0.2 مللي ثانية
- حقن خاطئ
- REST Admin API: استخدام REST Admin API للتحكم ب أباتشي أبيسكس, والذي يسمح فقط 127.0.0.1 الوصول افتراضيا, يمكنك تعديل حقل
allow_admin
حقل فيconf/config.yaml
لتحديد قائمة عناوين IPs المسموح لها باستدعاء Admin API. Also,لاحظ أيضًا أن Admin API تستخدم مصادقة المفتاح للتحقق من هوية المتصل.admin_key
حقل فيconf/config.yaml
يحتاج إلى تعديل قبل النشر لضمان الأمان. - المسجلات الخارجية: تصدير سجلات الوصول إلى أدوات إدارة السجلات الخارجيةs. (HTTP Logger, TCP Logger, Kafka Logger, UDP Logger)
- مخططات الخوذة
-
قابلة للتطوير بدرجة كبيرة
- المكونات الإضافية المخصصة: تسمح بربط المراحل الشائعة مثل
إعادة الكتابة
,الوصول
,مرشح العنوان
,مرشح الجسم
andالسجل
, كما يسمح بربطالموازنة
مرحلة. - خوارزميات موازنة الحمل المخصصة: يمكنك استخدام خوارزميات موازنة التحميل المخصصة أثناء
الموازنة
مرحلة. - التوجيه المخصص: دعم المستخدمين لتنفيذ خوارزميات التوجيه بأنفسهم.
- المكونات الإضافية المخصصة: تسمح بربط المراحل الشائعة مثل
البدء
التكوين والتثبيت
تم تثبيت واختبار أبيسكس في الأنظمة التالية:
CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, ARM64 Ubuntu 18.04
هناك عدة طرق لتثبيت إصدار أباتشي من أبيسكس:
-
تجميع الكود المصدر (ينطبق على جميع الأنظمة)
-
تبعيات وقت تشغيل التثبيت: OpenResty and etcd, و وتبعيات التجميع: luarocks. الرجوع إلى وثائق تبعيات التثبيت
-
قم بتنزيل أحدث حزمة إصدار لشفرة المصدر:
$ mkdir apisix-2.5 $ wget https://downloads.apache.org/apisix/2.5/apache-apisix-2.5-src.tgz $ tar zxvf apache-apisix-2.5-src.tgz -C apisix-2.5
-
تثبيت التبعيات :
$ make deps
-
تفقد نسخة الابيسكس:
$ ./bin/apisix version
-
أبدأ أبيسكس:
$ ./bin/apisix start
-
-
Docker صورة (متطابق مع جميع الانظمة)
بشكل افتراضي ، سيتم سحب أحدث حزمة إصدار أباتشي:
$ docker pull apache/apisix
لا تتضمن صورة Docker
etcd
; يمكنك الرجوع الى مثال تكوين عامل الإرساء لبدء مجموعة اختبار. -
RPM حزمة(فقط ل CentOS 7)
- تبعيات وقت تشغيل التثبيت: OpenResty, etcd and OpenSSL طور مكتبة, الرجوع الى وثائق تبعيات تثبيت
- تثبيت أبيسكس:
$ sudo yum install -y https://github.com/apache/apisix/releases/download/2.5/apisix-2.5-0.x86_64.rpm
-
تحقق من إصدار أبيسكس:
$ apisix version
-
بدء أبيسكس:
$ apisix start
ملاحظة: لن يدعم أباتشي أبيسكس بروتوكول v2 الخاص بـ etcd بعد الآن منذ APISIX v2.0 ، والحد الأدنى لإصدار etcd المدعوم هو v3.4.0. يرجى تحديث الخ عند الحاجة. إذا كنت بحاجة إلى ترحيل بياناتك من etcd v2 إلى v3 ، يرجى متابعة etcd ترحيل دليل.
للمطورين
-
للمطورين، يمكنك استخدام أحدث فرع رئيسي لتجربة المزيد من الميزات
- بناء من شفرة المصدر
$ git clone git@github.com:apache/apisix.git $ cd apisix $ make deps
- صورة عامل ميناء
$ git clone https://github.com/apache/apisix-docker.git $ cd apisix-docker $ sudo docker build -f alpine-dev/Dockerfile .
-
البدء
يعد دليل البدء طريقة رائعة لتعلم أساسيات أبيسكس. ما عليك سوى اتباع الخطوات الواردة في البدء.
Further, you can follow the documentation to try more plugins.
-
مدير API
يوفر أباتشي أبيسكس REST Admin API للتحكم الديناميكي في مجموعة أباتشي أبيسكس.
-
تطوير البرنامج المساعد
يمكنك الرجوع إلى دليل تطوير البرنامج المساعد, و عينة من وثائق
echo
صدى البرنامج المساعد وتنفيذ التعليمات البرمجية.يرجى ملاحظة أن إضافات أباتشي أبيسكس المضافة ، المحدثة ، المحذوفة ، وما إلى ذلك ، يتم تحميلها دون إعادة تشغيل الخدمة.
لمزيد من الوثائق , يرجى الرجوع الى أباتشي أبيسكس فهرس المستند
المعيار
باستخدام خادم AWS ثماني النواة ، تصل خدمة QPS الخاصة بـ APISIX إلى 140000 مع زمن انتقال يبلغ 0.2 مللي ثانية فقط.
البرنامج النصي المعياري, طريقة الاختبار وعملية كان مفتوح المصدر, ومرحبًا بكم في المحاولة والمساهمة.
أباتشي أبيسكس مقابل كونغ
تمت تغطية كلاهما بالميزات الأساسية لبوابة API
سمات | أباتشي أبيسكس | كونغ |
---|---|---|
المنبع الديناميكي | نعم | نعم |
راوتر ديناميكي | نعم | نعم |
الفحص الصحي | نعم | نعم |
ديناميكي SSL | نعم | نعم |
L4 and L7 وكيل | نعم | نعم |
أبنتراكينج | نعم | نعم |
البرنامج المساعد المخصص | نعم | نعم |
REST API | نعم | نعم |
CLI | نعم | نعم |
مميزات أباتشي أبيسكس
سمات | أباتشي أبيسكس | كونغ |
---|---|---|
ينتمي إلى | مؤسسة البرمجيات أباتشي | شركة كونغ. |
تكنولوجيا البناء | Nginx + etcd | Nginx + Postgres |
قنوات الاتصال | لائحة الرسائل الالكترونية, مجموعة وي شات, QQ مجموعة, جيت هاب, Slack, meetup | GitHub, Freenode, forum |
وحدة المعالجة المركزية أحادية النواة، QPS (تمكين حد العد والإضافات بروميثيوس) | 18000 | 1700 |
وقت الاستجابة | 0.2 ms | 2 ms |
ديوبو | نعم | لا |
التراجع عن التكوين | نعم | لا |
المسار مع TTL | نعم | لا |
المكونات في التحميل الساخن | نعم | لا |
مخصص LB والمسار | نعم | لا |
REST API <--> gRPC تحويل ترميز | نعم | لا |
Tengine | نعم | لا |
MQTT | نعم | لا |
وقت فعالية التكوين الذي يحركه الحدث | Event-driven, < 1ms | polling, 5 seconds |
لوحة القيادة | نعم | لا |
IdP | نعم | لا |
مركز التكوين HA | نعم | لا |
حد السرعة لفترة زمنية محددة | نعم | لا |
دعم أي متغير Nginx كشرط توجيه | نعم | لا |
اختبار المقارنة المعيارية بيانات تفاصيل
مساهم بمرور الوقت
قم بزيارة هنا لإنشاء "مساهم بمرور الوقت".
مقاطع الفيديو والمقالات
- أباتشي أبيسكس: كيفية تنفيذ تزامن البرنامج المساعد في بوابة API
- تحسين إمكانية ملاحظة أباتشي أبيسكس باستخدام أباتشي سكايووكنغ
- اختيار تكنولوجيا أبيسكس والاختبار والتكامل المستمر
- تحليل الأداء الممتاز لبوابة أباتشي أبيسكس بوابة الخدمات المصغرة
قصص المستخدم
- منصة المصنع الأوروبي: API بوابة أمان – بوابة أمان API - باستخدام أبيسكس في منصة أي فاكتوري
- ke.com: كيفية إنشاء بوابة استنادًا إلى أباتشي أبيسكس (صيني)
- 360: ممارسة أباتشي أبيسكس في منصة OPS(صيني)
- هلوتوك: استكشاف العولمة على أساس OpenResty و أباتشي أبيسكس(صيني)
- سحابة تينسنت:لماذا تختار أباتشي أبيسكس لتنفيذ وحدة تحكم الدخول k8s؟ (صيني)
- aispeech:لماذا نقوم بإنشاء وحدة تحكم دخول k8s جديدة؟ (صيني)
من يستخدم أبيسكس?
تستخدم مجموعة متنوعة من الشركات والمؤسسات أبيسكس للبحث والإنتاج والمنتجات التجارية ، بما في ذلك:
يتم تشجيع المستخدمين على إضافة أنفسهم إلى صفحة Powered By صفحة.
الشاشة العريضة
يثري أبيسكس .
CNCF API مشهد بوابةe.
شعارات
شكر و تقدير
مستوحى من كونغ و اروانج.