تقديم InterSystems API Manager

لقد أصدرنا مؤخرًا InterSystems API Manager (IAM) ، وهو مكون جديد في InterSystems IRIS Data Platform الذي يوفر المراقبة والتحكم ومراقبة الحركة من / إلى واجهة برمجة تطبيقات الويب ضمن البنية التحتية لتكنولوجيا المعلومات.


في هذه المقالة ، سأوضح لك كيفية تكوين IAM وعرض بعض الميزات الكثيرة المتاحة لك مع IAM. يسمح لك InterSystems API Manager بما يلي:


  • شاهد واجهة برمجة التطبيقات ، وفهم من يستخدم واجهة برمجة التطبيقات ، وما هي واجهات برمجة التطبيقات الأكثر شيوعًا ، وتلك التي تحتاج إلى تحسين.
  • تحكم في من يستخدم واجهة برمجة التطبيقات وقيد استخدام واجهة برمجة التطبيقات من قيود الوصول البسيطة إلى القيود بناءً على الطلب - لديك عناصر تحكم قابلة للتخصيص ويمكنك الاستجابة بسرعة للتغيرات في أنماط استهلاك واجهة برمجة التطبيقات.
  • قم بحماية واجهات برمجة التطبيقات من خلال آليات الأمان المركزية مثل OAuth2.0 أو LDAP أو مصادقة رمز المفتاح.
  • تبسيط عمل المطورين الخارجيين وتزويدهم بتجربة ممتازة مع API من خلال فتح بوابة خاصة للمطورين.
  • مقياس API والتأكد من الحد الأدنى من التأخير في الاستجابة.

تعد إدارة واجهة برمجة التطبيقات ضرورية للانتقال إلى بنية SOA أو بنية الخدمات المصغرة ، مما يسهل التكامل بين الخدمات الفردية (الصغيرة) ، مما يجعلها في متناول جميع المستهلكين الخارجيين والداخليين. نتيجة لذلك ، أصبحت واجهات برمجة التطبيقات الجديدة أسهل في الإنشاء والصيانة والاستهلاك.


إذا كنت تستخدم InterSystems IRIS بالفعل ، يمكنك إضافة خيار IAM إلى الترخيص الخاص بك. يعد خيار IAM مجانيًا لعملاء InterSystems IRIS ، ولكن لبدء استخدام IAM ، تحتاج إلى طلب مفتاح ترخيص جديد من InterSystems.


إذا لم تكن تستخدم InterSystems IRIS بالفعل وكنت تخطط فقط لتجربة InterSystems API Manager ، فاتصل بـ InterSystems.


البدء والتثبيت


يمكن لعملاء InterSystems IAM تنزيل قسم "توزيع البرامج" من موقع WRC وتشغيله كحاوية Docker. الحد الأدنى لمتطلبات النظام:



في البداية ، تحتاج إلى تنزيل صورة Docker (مهم! الأرشيف مع WRC ليس صورة Docker ، تحتاج إلى فكها ، داخل صورة Docker):


docker load -i iam_image.tar 

سيجعل هذا الأمر صورة IAM متاحة للاستخدام لاحقًا على الخادم الخاص بك. يعمل IAM كحاوية منفصلة ، حتى تتمكن من توسيع نطاقها بشكل مستقل عن InterSystems IRIS. لتشغيل IAM ، تحتاج إلى الوصول إلى InterSystems IRIS لتنزيل الترخيص.


تكوين InterSystems IRIS:


  • قم بتشغيل تطبيق الويب /api/IAM
  • تمكين IAM المستخدم
  • تغيير كلمة IAM مستخدم IAM

الآن قم بتشغيل حاوية IAM. ستجد في الأرشيف نصوص iam-setup لنظامي التشغيل Windows و Unix (و Mac). ستساعدك هذه البرامج النصية في إعداد متغيرات البيئة بشكل صحيح ، مما يسمح لحاوية IAM بالاتصال بـ InterSystems IRIS. فيما يلي مثال على برنامج نصي على نظام Mac:


 source ./iam-setup.sh Welcome to the InterSystems IRIS and InterSystems API Manager (IAM) setup script. This script sets the ISC_IRIS_URL environment variable that is used by the IAM container to get the IAM license key from InterSystems IRIS. Enter the full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1 Enter the IP address for your InterSystems IRIS instance. The IP address has to be accessible from within the IAM container, therefore, do not use "localhost" or "127.0.0.1" if IRIS is running on your local machine. Instead use the public IP address of your local machine. If IRIS is running in a container, use the public IP address of the host environment, not the IP address of the IRIS container. xxx.xxx.xxx.xxx Enter the web server port for your InterSystems IRIS instance: 52773 Enter the password for the IAM user for your InterSystems IRIS instance: Re-enter your password: Your inputs are: Full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1 IP address for your InterSystems IRIS instance: xxx.xxx.xxx.xxx Web server port for your InterSystems IRIS instance: 52773 Would you like to continue with these inputs (y/n)? y Getting IAM license using your inputs... Successfully got IAM license! The ISC_IRIS_URL environment variable was set to: http://IAM:****************@xxx.xxx.xxx.xxx:52773/api/iam/license WARNING: The environment variable is set for this shell only! To start the services, run the following command in the top level directory: docker-compose up -d To stop the services, run the following command in the top level directory: docker-compose down URL for the IAM Manager portal: http://localhost:8002 

كما ترون ، اسم الصورة بالكامل وعنوان IP ومنفذ InterSystems IRIS وكلمة المرور لمستخدم IAM هي كل ما تحتاجه للبدء.


بدلاً من تشغيل البرنامج النصي ، يمكنك تعيين متغيرات البيئة يدويًا:


 ISC_IAM_IMAGE=intersystems/iam:0.34-1-1 ISC_IRIS_URL=http://IAM:<PASS>@<IP>:<PORT>/api/iam/license 

إطلاق


الآن قم بتشغيل IAM عن طريق تشغيل الأمر:


 docker-compose up -d 

يقوم هذا الأمر بتنظيم حاويات IAM ويضمن بدء تشغيل كل شيء بشكل صحيح. يتم فحص حالة الحاويات باستخدام الأمر:


 docker ps 

افتح localhost:8002 واجهة المسؤول في المستعرض.



حتى الآن ، إنه فارغ لأنه موقع جديد تمامًا. لنغيره. يدعم IAM مفهوم مساحات العمل لتقسيم واجهة برمجة التطبيقات إلى وحدات و / أو فرق. انتقل إلى مساحة العمل "افتراضي" التي سنستخدمها في تجاربنا.


شريط أدوات مساحة العمل الافتراضي


لا يزال عدد طلبات مساحة العمل هذه صفرًا ، لكنك ستحصل على فكرة عن المفاهيم الأساسية لـ IAM في القائمة الموجودة على اليسار. أول عنصرين: الخدمات والطرق هما الأكثر أهمية:


  • خدمة - API ، والتي نريد أن نوفر الوصول إلى المستهلكين. وبالتالي ، فإن REST API في InterSystems IRIS هي خدمة ، مثل Google API ، إذا كنت ترغب في استخدامها.
  • يقرر الطريق الخدمة التي يجب إعادة توجيه الطلبات الواردة إليها. يحتوي كل مسار على مجموعة محددة من الشروط ، وإذا تم استيفائها ، فسيتم إرسال الطلب إلى الخدمة المقابلة. على سبيل المثال ، قد يتطابق المسار مع عنوان IP أو مجال المرسل أو طرق HTTP أو أجزاء من URI أو مزيج من هذه الأمثلة.

خدمة


لنقم بإنشاء خدمة IRS InterSystems ، مع القيم التالية:


المجالقيمةوصف
اسمقزحيةاسم الخدمة
مضيفIPInterSystems IRIS server host or ip
ميناء52773InterSystems IRIS Server Web Port
مسار/ api / atelierمسار الجذر
بروتوكولHTTPبروتوكول

اترك القيم المتبقية افتراضيًا. انقر فوق الزر " Create واكتب معرف الخدمة التي تم إنشاؤها.


طريق


الآن لنقم بإنشاء مسار:


المجالقيمةوصف
مسار/ api / atelierمسار الجذر
بروتوكولHTTPبروتوكول
service.idتوجيه من 3الخدمة (معرف من الخطوة السابقة)

اترك القيم المتبقية افتراضيًا. انقر فوق الزر " Create واكتب معرف المسار الذي تم إنشاؤه. بشكل افتراضي ، يستمع IAM للطلبات الواردة على المنفذ 8000. الآن ، /api/atelier إعادة توجيه الطلبات المرسلة إلى http://localhost:8000 وتبدأ بـ /api/atelier إلى InterSystems IRIS.


تجريب


دعونا نحاول إنشاء طلب في عميل REST (أستخدم ساعي البريد ).


طلب بقية في ساعي البريد


سنرسل طلب GET إلى http://localhost:8000/api/atelier/ (لا تنس / في النهاية) وسنحصل على استجابة من InterSystems IRIS. يمر كل طلب من خلال IAM بجمع المقاييس:


  • رمز حالة HTTP.
  • تأخير.
  • مراقبة (إذا تم تكوينها).

لقد تقدمت بطلبات قليلة (بما في ذلك طلبين لنقاط نهاية غير موجودة ، مثل / api / atelier / est /) ، تكون النتائج مرئية على الفور في لوحة القيادة:


لوحة القيادة مع بعض المقاييس


العمل مع الإضافات


الآن بعد أن تم تكوين المسار ، يمكننا التحكم في API الخاصة بنا. يمكننا إضافة ميزات تكمل خدماتنا.


الطريقة الأكثر شيوعًا لتغيير سلوك واجهة برمجة التطبيقات هي إضافة مكون إضافي. تعمل الإضافات على عزل الوظائف الفردية ويمكن توصيلها بـ IAM على المستوى العالمي وفقط للكيانات الفردية ، مثل المستخدم (مجموعة المستخدمين) أو الخدمة أو الطريق. سنبدأ بإضافة المكون الإضافي "الحد من الأسعار" إلى المسار. لإنشاء اتصال بين المكون الإضافي والطريق ، نحتاج إلى معرف فريد (ID) للمسار.


حد الطلب


انقر فوق المكونات الإضافية في القائمة على الشريط الجانبي الأيسر. ترى جميع الإضافات النشطة على هذه الشاشة ، ولكن نظرًا لأن خادم IAM الجديد ، فلا توجد إضافات نشطة حتى الآن. انتقل إلى الخطوة التالية بالنقر فوق "مكون إضافي".


يقع المكون الإضافي الذي نحتاج إليه في فئة "التحكم في حركة المرور" ويسمى "تحديد السعر". اختره. هناك بعض الإعدادات القليلة التي يمكنك ضبطها هنا ، لكننا مهتمون فقط بحقلين:


المجالقيمةوصف
route_idالهويةمعرف الطريق
config.minute5عدد الطلبات في الدقيقة

هذا كل شيء. تم تكوين البرنامج المساعد ونشط. ألاحظ أنه يمكننا اختيار فترات زمنية مختلفة ، مثل الدقيقة أو الساعة أو اليوم. يمكن دمج الإعدادات (على سبيل المثال ، 1000 طلب في الساعة وفي نفس الوقت 100 طلب في الدقيقة). اخترت الدقائق ، لأن هذا يجعل من السهل التحقق من البرنامج المساعد.


إذا قمت بإرسال الطلب نفسه مرة أخرى إلى ساعي البريد ، سترى أن الاستجابة يتم إرجاعها برأسين إضافيين:


  • XRateLimit الحد الأقصى للدقيقة: 5
  • XRateLimit بين الدقائق: 4

هذا يخبر العميل أنه يمكنه تقديم ما يصل إلى 5 طلبات في الدقيقة وفي الفترة الزمنية الحالية يمكنه تقديم 4 طلبات إضافية.


الحد الأقصى للسرعة


إذا قمت بتقديم الطلب نفسه مرارًا وتكرارًا ، فسوف تنفد في النهاية الحصص المتاحة ، وبدلاً من ذلك ستتلقى رمز حالة HTTP 429 مع نص الاستجابة التالي:


تجاوز API


انتظر لمدة دقيقة وستتمكن من إرسال الطلبات مرة أخرى.


هذه آلية ملائمة تتيح لك:


  • حماية الخلفية من تصاعد الحمل.
  • أخبر العملاء بعدد الطلبات التي يمكنهم تقديمها.
  • نقد API.

يمكنك تعيين قيم لفواصل زمنية مختلفة وبالتالي تسهيل حركة مرور واجهة برمجة التطبيقات لفترة زمنية معينة. لنفترض أنك تسمح بـ 600 طلب في الساعة على طريق محدد. هناك ما معدله 10 طلبات في الدقيقة. ولكن لا شيء يمنع العميل من إكمال جميع الطلبات الـ 600 في الدقيقة الأولى من الساعة. ربما هذا هو ما تحتاجه. قد ترغب في تحقيق حمولة أكثر اتساقًا في غضون ساعة. من خلال تعيين قيمة الحقل config.minute إلى 20 ، فإنك تضمن أن المستخدمين لا يقدمون أكثر من 20 طلبًا في الدقيقة و 600 طلبًا في الساعة. يسمح ذلك بالقفزات الصغيرة في الفاصل الزمني الدقيق مقارنةً بتيار متوسط ​​يبلغ 10 طلبات في الدقيقة ، لكن لا يمكن للمستخدمين استخدام الحصة بالساعة لمدة دقيقة واحدة. سيحتاجون الآن إلى 30 دقيقة على الأقل لاستخدام جميع استفساراتهم. سيتلقى العملاء رؤوسًا إضافية لكل فاصل زمني محدد ، على سبيل المثال:


رأس HTTPقيمة
X-RateLimit حدود ساعة600
X-RateLimit-المتبقية ساعة595
X-RateLimit حدود دقيقة20
X-RateLimit-المتبقية دقيقة16

بالطبع ، هناك العديد من الطرق المختلفة لتخصيص حدود الاستعلام بناءً على ما تريد تحقيقه.


النتائج


هذا هو المكان الذي سأنتهي فيه ، وأعتقد أن المادة كافية للمقال الأول حول InterSystems API Manager. استخدمنا واحدًا فقط من أكثر من 40 ملحقًا. يمكنك القيام بالعديد من الأشياء المثيرة للاهتمام باستخدام IAM:


  • إضافة آلية المصادقة المركزية لجميع واجهات برمجة التطبيقات الخاصة بك.
  • قم بتوسيع نطاق الحمل باستخدام الموازن إلى العديد من الخدمات.
  • أضف وظائف جديدة وإصلاح الأخطاء لجمهور الاختبار قبل الترقية الكاملة.
  • وفر للمطورين الداخليين والخارجيين بوابة إلكترونية مخصصة لتوثيق جميع واجهات برمجة التطبيقات.
  • تطلب ذاكرة التخزين المؤقت تقليل زمن استجابة الاستجابة وتقليل حمل الواجهة الخلفية للنظام.

مراجع


Source: https://habr.com/ru/post/ar475670/


All Articles