تطوير التطبيق الحديث - الرسائل

تعمل حلول المراسلة على ربط مكونات التطبيق، مما يتيح لها تبادل البيانات بشكل موثوق، وتوسيع نطاقها بشفافية، وتحقيق مستوى عالٍ من التوافر.فهي تمكنك من فصل المعالجة عن منتجي البيانات إلى تخزين الرسائل غير المعالجة في الذاكرة الوسيطة بكفاءة، وتوفير متانة الرسائل وقابلية توسع المعالجة ومرونة التطبيقات.

تغطي التطبيقات الموجهة للرسائل مجموعة من البنى - قد يكون نقل البيانات بين المكونات جزءًا من مسار معالجة مجمع وموزع ومحدد بشكل جيد، أو قد تقوم المكونات بنشر رسائل إلى أنظمة فرعية مستقلة متعددة تتطور بشكل مستقل. هناك ثلاثة نماذج للمراسلة الحديثة الشائعة، لكل منها متطلبات تطبيق مشتركة ومميزة:

تدفق الأحداث

تستوعب تطبيقات تدفق الأحداث تدفقات كبيرة الحجم وعالية السرعة من البيانات التي يجب معالجتها في الوقت الفعلي. يجب معالجة البيانات الأولية لاستخراج المعلومات الدقيقة التي يمكن استخدامها بواسطة مكونات تطبيق أخرى، للمراقبة أو يمكن تخزينها للتحليل اللاحق.

فيما يلي وصف maf-messaging-streaming.png
وصف الشكل التوضيحي maf-messaging-streaming.png

maf-messaging-streaming-oracle.zip

يستخدم تطبيق تدفق الأحداث هذا المثال Oracle Cloud Infrastructure Streaming أو Oracle Transactional Event Queues (TEQ) كحل مراسلة أساسي، Oracle Cloud Infrastructure Functions للمعالجة في الوقت الفعلي، وOracle Autonomous Database كمخزن دعم.

نشر-اشتراك

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

فيما يلي وصف maf-messaging-publishers-subscribeers.png
وصف الشكل التوضيحي maf-messaging-publishers-subscribeers.png

maf-messaging-publishers-subscribeers-oracle.zip

يوضح هذا المثال كيفية استخدام Oracle Cloud Infrastructure Streaming أو Oracle TEQ لتنفيذ نمط مراسلة حانة/فرعية.

قائمة انتظار الرسائل

تُمكِّن قائمة انتظار الرسائل المعالجة ذات الحالة الموزعة حيث تكون المكونات اللاحقة والمكونات اللاحقة مرتبطة بشكل وثيق وتقوم معًا بتنفيذ سير عمل تطبيق. يجب أن يدعم حل المراسلة دلالات مثل التسليم مرة واحدة على الأقل لضمان عدم فقد الرسائل قبل استهلاكها.

فيما يلي وصف maf-messaging-queuing.png
وصف الشكل التوضيحي maf-messaging-queuing.png

maf-messaging-queuing-oracle.zip

يوضح هذا المثال كيفية استخدام Oracle Cloud Infrastructure Queue أو Oracle TEQ لتنفيذ وضع الرسائل في قائمة الانتظار.

مبادئ التصميم

استخدم مبادئ التصميم التالية لإنشاء تطبيقات الرسائل أو النظام الأساسي.
  • إنشاء التطبيقات كمجموعة من الخدمات التي تتواصل باستخدام واجهات برمجة تطبيقات REST

    استخدم واجهات برمجة التطبيقات القياسية في المجال مثل Kafka وJMS لتوفير قابلية التشغيل البيني للتطبيق وإنشاء تطبيقات مراسلة مختلطة ومتعددة السحابات بسلاسة. يوفر تدفق Oracle Cloud Infrastructure (OCI) واجهة برمجة تطبيقات توافق Kafka، وتدعم Oracle Transaction Event Queues (TEQ) واجهات برمجة تطبيقات Kafka وJMS. يتم دعم كل من Kafka وJMS على نطاق واسع من قبل منتجات الطرف الثالث. على سبيل المثال، يمكنك استخدام موصل Kafka JMS Confluent لنقل الرسائل بين Oracle TEQ وKafka. يمكنك أيضًا استخدام Kafka Connect الموزع على مجموعة Oracle Container Engine for Kubernetes للاتصال بمنتجات الطرف الثالث. يمكن استدعاء Oracle Cloud Infrastructure Queue باستخدام تعريف RESTful API (مع مواصفات OpenAPI) أو باستخدام بروتوكول STOMP القياسي للصناعة.

  • استخدام الخدمات المدارة للقضاء على التعقيد في تطوير التطبيقات وعملياتها

    استخدم الخدمات المدارة بالكامل مع صيانة البنية الأساسية المضمنة وتصحيح الأمان مثل تدفق OCI وقائمة انتظار OCI وميزات Oracle TEQ وAdvanced Queuing (AQ) في Oracle Autonomous Database (ADB). تتوفر هذه الخدمات بشكل كبير مع النسخ المتماثل التلقائي عبر نطاقات التوافر ودعم أتمتة التوسع استجابةً لتغيير الأحمال.

  • حافظ على بقاء طبقة التطبيق بلا حالة

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

  • رصد الأدوات وتتبعها من طرف إلى طرف

    حافظ على فهم موثوق لحالة تطبيقك الصحية، والأداء، والتشغيلية. استخدم مجموعة خدمات Oracle Cloud Observability and Management Platform للحصول على رؤية ورؤى قابلة للتنفيذ عبر جميع طبقات مجموعة التطبيقات، بدءًا من منتجي البيانات والمستهلكين حتى خطوط أنابيب الرسائل نفسها. مراقبة أطوال قائمة الانتظار ومدة المعالجة لاستيعاب الأخطاء والاختناقات واكتشاف المشكلات المتعلقة بالخدمات التي تشترك في الموضوعات.

  • التخلص من نقاط الفشل المفردة من خلال استنساخ البيانات تلقائيًا واسترداد الفشل

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

  • تنفيذ منهج الدفاع الآلي المتعمق لتأمين تطبيقك وبياناته

    قم بتنفيذ سياسات Oracle Cloud Infrastructure Identity and Access Management (IAM) للسماح للمستخدمين المعتمدين فقط بتكوين البيانات أو إرسالها أو استلامها من تدفقات وقوائم انتظار OCI. تطبيق مبدأ الحد الأدنى من إمكانية الوصول من خلال تأمين الوصول إلى نقاط نهاية الرسائل باستخدام نقاط النهاية الخاصة وبوابة الخدمة، مما يحد من الوصول من الإنترنت. استخدم الإمكانية المبتكرة لتدفق OCI، وقائمة انتظار OCI، وTEQ لتشفير البيانات في أثناء التخزين والنقل لتحقيق سرية البيانات. ومع ذلك، إذا كنت بحاجة إلى زيادة ملكية تدوير المفاتيح، فاستخدم خدمة Oracle Cloud Infrastructure Vault لإدارة المفاتيح الرئيسية بشكل آمن.

البنية

يوضح الشكل التالي كيفية استخدام تدفق OCI لتنفيذ تدفق الأحداث
فيما يلي وصف maf-messaging.png
وصف الشكل التوضيحي maf-messaging.png

maf-messaging-oracle.zip

استخدم تدفق OCI لتنفيذ أنماط تدفق الأحداث والنشر/المراسلة الفرعية، وOracle Cloud Infrastructure Queue لتنفيذ وضع الرسائل في قائمة الانتظار. استخدم Oracle Autonomous Database لاستمرار بيانات الحدث التي تمت معالجتها. يمكن استخدام وظائف OCI لمعالجة بيانات الحدث قبل استهلاكها بواسطة مكونات التطبيق اللاحقة أو استمرارها في قاعدة البيانات.

قم بتنفيذ عزل الشبكة باستخدام شبكات فرعية مخصصة للتطبيق ولقاعدة البيانات ولخدمات الرسائل. يمكنك تأمين الوصول إلى تدفقاتك باستخدام نقاط نهاية خاصة. استخدم سياسات Oracle Cloud Infrastructure Identity and Access Management (IAM) للحد من الوصول إلى قوائم الانتظار

استخدم Oracle Cloud Infrastructure Object Storage للاحتفاظ بالرسائل على المدى الطويل. استخدم خدمة لا تحتاج إلى ملقم مثل موصل الخدمة لنقل البيانات بسلاسة من تدفق OCI إلى تخزين الكائنات، وتمكين النسخ الاحتياطي عبر المناطق لمخزن الكائنات لتحقيق النسخ الاحتياطي متعدد المناطق. قم بتنفيذ إستراتيجية استرداد البيانات بعد الكوارث عبر المناطق باستخدام Kafka MirrorMaker 2.0 الموزعة على بيئة Oracle Container Engine for Kubernetes (OKE) لتكرار البيانات بين التدفقات بشكل غير متزامن. يقوم هذا الإعداد بتمكين هدف وقت الاسترداد (RTO) وهدف نقطة الاسترداد (RPO) للدقائق. استخدم ربط VCN البعيد لضمان الحد الأدنى من زمن الوصول أثناء نقل البيانات.

استخدم قوائم انتظار الرسائل الفاشلة لعزل الرسائل ذات المشاكل. يتم إنشاء قوائم انتظار الرسائل النهائية تلقائيًا عند إنشاء قائمة انتظار. تساعدك قوائم انتظار الرسائل الفاشلة على تجنب حظر مسار التنفيذ الأساسي. ويمكن بعد ذلك تحليل الرسائل الموجودة في قائمة انتظار الرسائل النهائية لتحديد سبب فشلها.

دمج الاستعداد في التطبيقات عن طريق تخزين إزاحات الرسائل المعالجة في التخزين الخارجي مثل Object Storage. اكتشاف التكرارات وتجاهلها عن طريق الاستعلام عن المتجر الخارجي. قم بتصنيف الأخطاء التي يمكن استردادها بسهولة والسماح بإعادة تشغيل الرسائل.

تستخدم هذه البنية الخدمة والتقنيات التالية:

  • تدفق

    يوفر Oracle Cloud Infrastructure Streaming حل تخزين دائم وقابل للإدارة بالكامل وقابل للتوسيع لاستيعاب تدفقات البيانات المستمرة والكبيرة الحجم التي يمكنك استهلاكها ومعالجتها في الوقت الفعلي. يمكنك استخدام التدفق لاستيعاب بيانات كبيرة الحجم، مثل سجلات التطبيق، والقياس عن بُعد التشغيلي، وبيانات منطقة النقر على الويب؛ أو لحالات الاستخدام الأخرى التي يتم فيها إنتاج البيانات ومعالجتها باستمرار وتسلسل في نموذج إرسال سكريبت النشر.

  • قائمة الانتظار

    توفر قائمة انتظار Oracle Cloud Infrastructure نظامًا قابلاً للتوسع لمعالجة الرسائل مع التعامل مع مهام الإدارة المعقدة مثل المعالجة والتتبع وعزل العميل على الأقل. وتدير هذه الخدمة المركزية أيضًا حالة طلب الرسائل ومعالجتها، مما يتيح لعمليات العميل عديمة الحالة إلغاء تحميل تتبع المؤشر.

  • الوظائف

    Oracle Cloud Infrastructure Functions هو نظام أساسي مُدار بالكامل ومتعدد المؤسسات وقابل للتوسع بدرجة كبيرة ومتوفر حسب الطلب والوظائف كخدمة (FaaS). يتم تشغيله بواسطة محرك Fn Project مفتوح المصدر. تتيح لك الدوال توزيع التعليمات البرمجية، واستدعائها مباشرة أو تشغيلها استجابة للأحداث. يستخدم Oracle Functions حاويات Docker المستضافة في Oracle Cloud Infrastructure Registry.

  • موصلات الخدمة

    مركز موصل خدمة Oracle Cloud Infrastructure هو نظام أساسي لأناقل الرسائل السحابية ينظم حركة البيانات بين الخدمات في OCI. يمكنك استخدام موصلات الخدمة لنقل البيانات من خدمة مصدر إلى خدمة مستهدفة. كما تتيح لك موصلات الخدمة إمكانية تحديد مهمة (مثل وظيفة) بشكل اختياري لتنفيذها على البيانات قبل تسليمها إلى الخدمة الهدف.

    يمكنك استخدام مركز موصل خدمة Oracle Cloud Infrastructure لإنشاء إطار تجميع التسجيل بسرعة لأنظمة معلومات الأمان وإدارة الأحداث (SIEM).

بنية بديلة مركزية لقاعدة البيانات

تستخدم هذه البنية قوائم انتظار أحداث المعاملات (TEQ) لتنفيذ أنماط الرسائل في التطبيقات الحديثة. TEQ هي ميزة مدمجة في Oracle Autonomous Database.

فيما يلي وصف maf-messaging-alternate.png
وصف الشكل التوضيحي maf-messaging-alternate.png

maf-messaging-alternate-oracle.zip

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

يجمع TEQ بين معالجة البيانات والرسائل في بنية أساسية قابلة للتطوير تعمل على تبسيط إدارة دورة الحياة والأمان واستعادة البيانات بعد الكوارث مع توفير أداء فائق. يدعم TEQ أنماط المراسلة الشائعة، بما في ذلك التدفق وقوائم الانتظار والحانة/الفرعية. يمكنك تنفيذ المعاملات عبر عمليات المراسلة وعمليات قواعد البيانات باستخدام TEQ، وتنفيذ أنماط المراسلة بسهولة مثل علبة الصادر الخاصة بالمعاملات والمراسلة مرة واحدة بالضبط مع تعليمات برمجية إضافية قليلة أو معدومة. يوفر Oracle TEQ مراسلة دقيقة للتطبيقات التي تعمل في قاعدة البيانات. وهذا يعني أنك لست بحاجة إلى صيانة معرفات الرسائل للتحقق من الرسائل المكررة أو إنشاء مستهلكين متمرسين على مستوى التطبيق. يدعم TEQ كلاً من الرسائل الصغيرة النموذجية في معالجة الأحداث وكذلك الحمولات الكبيرة المرتبطة بسير عمل الأعمال، ويمكنه العمل أيضًا كشبكة أحداث آمنة.

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

TEQ تستفيد من التوافر العالي لـ Autonomous Database. يتم نسخ بيانات المراسلة في TEQ تلقائيًا وحمايتها بواسطة النسخ المتماثل عبر المنطقة لـ ADB باستخدام Autonomous Data Guard. يمكنك نشر Oracle TEQ بطريقة متاحة للغاية باستخدام Oracle Real Application Clusters وOracle Active Data Guard، وكلاهما ميزات مضمنة في Oracle Autonomous Database. توفر Oracle Real Application Clusters توافرًا داخل منطقة بينما يوفر Oracle Active Data Guard حماية لاستعادة القدرة على العمل بعد الكوارث عبر المناطق.

استخدم هذه البنية في حالة قيام التطبيق بأي مما يلي:

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

تستخدم هذه البنية الخدمات والتقنيات التالية:

  • قوائم انتظار أحداث المعاملات (TEQ) ووضع قوائم الانتظار المتقدمة (AQ)

    تعد قوائم انتظار الأحداث الخاصة بالمعاملات (TEQ) وقوائم الانتظار المتقدمة (AQ) أنظمة قوائم انتظار رسائل قوية غنية بالميزات ومتكاملة مع Oracle Database. تعتبر قوائم انتظار أحداث العمليات (TEQ) تنفيذًا مقسمًا إلى ذاكرة عالي الأداء مع تدفقات أحداث متعددة لكل قائمة انتظار. قوائم الانتظار المتقدمة (AQ) مناسبة لحالات استخدام سير العمل أبسط. تستفيد هذه الميزات من Oracle Database لاستمرار الرسائل وتوفير إنتاجية وقابلية توسع عالية.

  • الوظائف

    Oracle Cloud Infrastructure Functions هو نظام أساسي مُدار بالكامل ومتعدد المؤسسات وقابل للتوسع بدرجة كبيرة ومتوفر حسب الطلب والوظائف كخدمة (FaaS). يتم تشغيله بواسطة محرك Fn Project مفتوح المصدر. تتيح لك الدوال توزيع التعليمات البرمجية، واستدعائها مباشرة أو تشغيلها استجابة للأحداث. يستخدم Oracle Functions حاويات Docker المستضافة في Oracle Cloud Infrastructure Registry.

البنى غير الموصى بها

  • تطبيقات حافلات الرسائل والخدمة أحادية الحد

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

  • Kafka تتجمع في سحابة مدارة ذاتيًا أو بيئة محلية للشركة

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

الاعتبارات

عند تنفيذ نمط تصميم الرسائل، ضع في الاعتبار خيارات التنفيذ هذه.

اختر النظام الأساسي الصحيح للرسائل استنادًا إلى متطلبات التطبيق

قد تبدو منصات التأسيس وخدماتها متشابهة وتتشارك في الميزات المشتركة. ومع ذلك، يحتوي كل نظام أساسي على ميزات ونقاط قوة فريدة قد تتماشى بشكل أفضل مع متطلبات التطبيق. على سبيل المثال:

  • استخدم قوائم انتظار أحداث المعاملات أو البث عبر OCI إذا كانت تطبيقاتك تتطلب نظامًا أساسيًا في الوقت الفعلي للمراسلة عالية الإنتاجية يوفر إعادة تشغيل الرسائل والإمكانات الفرعية.
  • استخدم قوائم انتظار أحداث المعاملات إذا كنت بحاجة إلى مخزن مؤقت نقطة إلى نقطة قابل للتوسع وموثوق به لنقل البيانات بشكل غير متزامن.
  • استخدم مركز موصل الخدمة (SCH) لتمكين التكامل مع موارد البنية الأساسية.
  • استخدم قوائم انتظار أحداث المعاملات (TEQ) في قاعدة البيانات عند تصميم خدمات صغيرة جديدة مع الرسائل المدمجة مع Oracle Autonomous Database.

دراسات الحالة العامة

البنية القائمة على تدفق Oracle

تقوم شركة Tango Eye بتحويل فيديو المراقبة إلى رؤى عملية لصناعة التجزئة.

  • يعمل تدفق Oracle Cloud Infrastructure (OCI) كنظام مراسلة للنشر منخفض الصيانة لمختلف الخدمات المتناهية الصغر.
  • تنفذ Oracle Cloud Infrastructure Functions وظائف بدون خادم دون أي مراقبة هندسية.
  • تعمل سياسات دورة الحياة الخاصة بـ Oracle Cloud Infrastructure Object Storage على أرشفة البيانات وحذفها تلقائيًا، مما يعمل على تقليل التكاليف من دون تقليل قيمة التحليلات المستندة إلى الذكاء الاصطناعي من Tango Eye.

البنية القائمة على Oracle TEQ

يستخدم FedEx Oracle E-Business Suite ومدير أحداث الأعمال الذي تم إنشاؤه باستخدام Oracle TEQ، لحسابات المقبوضات التي تبلغ 15.5 مليون حزمة يتم تسليمها كل يوم.

  • نقل FedEx E-Business Suite إلى Oracle Cloud Infrastructure Object Storage باستخدام Exadata Cloud Service. يتم إنشاء عمليات سير عمل E-Business Suite ونظام أحداث الأعمال بالكامل في رسائل Oracle Advanced Queuing (AQ).
  • إن Oracle AQ سهل الاستخدام ومناسب لتنظيم سير العمل. بالنسبة لأحداث الإنتاجية الفائقة، يعد Oracle TEQ بديلاً متدرب الأداء الفائق مع تدفقات أحداث متعددة لكل قائمة انتظار، يمكن تشغيله بينيًا باستخدام apache Kafka.

توزيع

مؤسسة الصحة العالمية (UHO) هي نموذج تطبيق يلتزم بمبادئ إطار عمل تطوير التطبيقات الحديثة. وبصفة خاصة، يقوم بتنفيذ عناصر من أنماط البنية المعتمدة على الأحداث والويب أو المحمول والمراسلة، وهو متاح على GitHub.
  1. انتقل إلى GitHub.
  2. استنساخ المستودع أو تنزيله إلى الكمبيوتر المحلي.
  3. اتبع التعليمات الواردة في مستند README.

تغيير الأرشيف

يسرد هذا السجل التغييرات المهمة:

إشعارات الاستلام

Authors: Harshad Kasture, Randall Barnes, Matthias Brantner

Contributors: Hassan Ajan, James Emerson, Parvez Syed Mohamed, Sajan Parihar, Wei Hu, Sreya Dutta, Joshua Stanley