مساحات أسماء شبكة أحداث Azure - دعم مخطط CloudEvents
تقبل موضوعات مساحة اسم Event Grid الأحداث التي تتوافق مع مواصفات CloudEvents 1.0 القياسية المفتوحة ل CloudEvents 1.0 باستخدام ربط بروتوكول HTTP بتنسيق JSON. CloudEvent هو نوع من الرسائل التي تحتوي على ما يتم توصيله، ويشار إليه باسم بيانات الحدث، وبيانات التعريف حوله. عادة ما تحمل بيانات الحدث في البنى المستندة إلى الحدث المعلومات التي تعلن عن تغيير حالة النظام. تتكون بيانات تعريف CloudEvents من مجموعة من السمات التي توفر معلومات سياقية حول الرسالة مثل مكان نشأتها (النظام المصدر) ونوعها وما إلى ذلك. يجب أن تتضمن جميع الرسائل الصالحة التي تلتزم بمواصفات CloudEvents سمات السياق المطلوبة التالية:
تحدد مواصفات CloudEvents أيضا سمات سياق الامتداد والاختياريةالتي يمكنك تضمينها عند استخدام Event Grid.
عند استخدام Event Grid، CloudEvents هو تنسيق الحدث المفضل بسبب حالات الاستخدام الموثقة جيدا (أوضاع لنقل الأحداث وتنسيقات الأحداث وما إلى ذلك)، وقابلية التوسع، وإمكانية التشغيل التفاعلي المحسنة. تعمل CloudEvents على تحسين إمكانية التشغيل التفاعلي من خلال توفير تنسيق حدث مشترك لنشر الأحداث واستهلاكها. يسمح بالأدوات الموحدة والطرق القياسية للتوجيه ومعالجة الأحداث.
CloudEvents con وضع الخيمة s
تحدد مواصفات CloudEvents ثلاثة con وضع الخيمة: ثنائية ومنظمة ومدفعية.
هام
مع أي con وضع الخيمة يمكنك تبادل النص (JSON، النص/*، وما إلى ذلك) أو بيانات الحدث المرمزة ثنائيا. لا يتم استخدام con وضع الخيمة الثنائي بشكل حصري لإرسال البيانات الثنائية.
لا يتعلق con وضع الخيمة s بالترميز الذي تستخدمه أو ثنائي أو نص، ولكن حول كيفية وصف بيانات الحدث وبيانات التعريف الخاصة به وتبادلها. يستخدم con وضع الخيمة المنظم بنية واحدة، على سبيل المثال، كائن JSON، حيث تكون كل من سمات السياق وبيانات الحدث معا في حمولة HTTP. يفصل con وضع الخيمة الثنائي سمات السياق، التي تم تعيينها إلى رؤوس HTTP، وبيانات الحدث، وهي حمولة HTTP المشفرة وفقا لنوع الوسائط الذي تم تعيينه في Content-Type
.
دعم CloudEvents
يوضح هذا الجدول الدعم الحالي لمواصفات CloudEvents:
CloudEvents con وضع الخيمة | مدعوم؟ |
---|---|
JSON منظم | نعم |
JSON منظمة مجمعة | نعم، لنشر الأحداث |
ثنائي | نعم، لنشر الأحداث |
يعد الحد الأقصى المسموح به الخاص بحجم الحدث هو 1 ميغابايت. يتم فرض رسوم على الأحداث التي تزيد عن 64 كيلوبايت بزيادات 64 كيلوبايت.
con منظم وضع الخيمة
تحتوي الرسالة في CloudEvents structured con وضع الخيمة على كل من سمات السياق وبيانات الحدث معا في حمولة HTTP.
هام
حاليا، تدعم Event Grid تنسيق CloudEvents JSON مع HTTP.
فيما يلي مثال على CloudEvents في الوضع المنظم باستخدام تنسيق JSON. يتم وصف كل من بيانات التعريف (جميع السمات التي ليست "بيانات") وبيانات الرسالة/الحدث (كائن "البيانات") باستخدام JSON. يتضمن مثالنا جميع سمات السياق المطلوبة جنبا إلى جنب مع بعض السمات الاختيارية (subject
و time
و datacontenttype
) وسمات الملحق (comexampleextension1
، comexampleothervalue
).
{
"specversion" : "1.0",
"type" : "com.yourcompany.order.created",
"source" : "/orders/account/123",
"subject" : "O-28964",
"id" : "A234-1234-1234",
"time" : "2018-04-05T17:31:00Z",
"comexampleextension1" : "value",
"comexampleothervalue" : 5,
"datacontenttype" : "application/json",
"data" : {
"orderId" : "O-28964",
"URL" : "https://com.yourcompany/orders/O-28964"
}
}
يمكنك استخدام تنسيق JSON مع محتوى منظم لإرسال بيانات الحدث التي ليست قيمة JSON. لتحقيق هذه الغاية، يمكنك القيام بالخطوات التالية:
- قم بتضمين سمة
datacontenttype
بنوع الوسائط الذي يتم ترميز البيانات فيه. - إذا تم ترميز نوع الوسائط بتنسيق نصي مثل
text/plain
،text/csv
أوapplication/xml
، يجب استخدام سمةdata
مع سلسلة JSON تحتوي على ما تقوم بالاتصال كقيمة. - إذا كان نوع الوسائط يمثل ترميزا ثنائيا، فيجب عليك استخدام سمة
data_base64
تكون قيمتها سلسلة JSON تحتوي على القيمة الثنائية المرمزة BASE64.
على سبيل المثال، يحمل CloudEvent بيانات الحدث المشفرة application/protobuf
لتبادل رسائل Protobuf.
{
"specversion" : "1.0",
"type" : "com.yourcompany.order.created",
"source" : "/orders/account/123",
"id" : "A234-1234-1234",
"time" : "2018-04-05T17:31:00Z",
"datacontenttype" : "application/protobuf",
"data_base64" : "VGhpcyBpcyBub3QgZW5jb2RlZCBpbiBwcm90b2J1ZmYgYnV0IGZvciBpbGx1c3RyYXRpb24gcHVycG9zZXMsIGltYWdpbmUgdGhhdCBpdCBpcyA6KQ=="
}
لمزيد من المعلومات حول استخدام data
السمات أو data_base64
، راجع معالجة البيانات .
لمزيد من المعلومات حول هذا con وضع الخيمة، راجع CloudEvents HTTP structured con وضع الخيمة المواصفات .
con مجمعة وضع الخيمة
تدعم Event Grid حاليا con مجمعة من JSON وضع الخيمة عند نشر CloudEvents إلى Event Grid. يستخدم هذا con وضع الخيمة مصفوفة JSON مليئة ب CloudEvents في con وضع الخيمة منظمة. على سبيل المثال، يمكن لتطبيقك نشر حدثين باستخدام صفيف مثل ما يلي. وبالمثل، إذا كنت تستخدم وحدة بيانات Event Grid SDK، فإن هذه الحمولة هي أيضا ما يتم إرساله:
[
{
"specversion": "1.0",
"id": "E921-1234-1235",
"source": "/mycontext",
"type": "com.example.someeventtype",
"time": "2018-04-05T17:31:00Z",
"data": "some data"
},
{
"specversion": "1.0",
"id": "F555-1234-1235",
"source": "/mycontext",
"type": "com.example.someeventtype",
"time": "2018-04-05T17:31:00Z",
"data": {
"somekey" : "value",
"someOtherKey" : 9
}
}
]
لمزيد من المعلومات، راجع CloudEvents Batched Content Mode specs.
الدفعات
يجب أن يجمع تطبيقك عدة أحداث معا في صفيف لتحقيق كفاءة أكبر ومعدل نقل أعلى مع طلب نشر واحد. يمكن أن تصل الدفعات إلى 1 ميغابايت ويكون الحد الأقصى لحجم الحدث 1 ميغابايت.
مخروط ثنائي وضع الخيمة
يحتوي CloudEvent في con ثنائي وضع الخيمة على سمات السياق الموصوفة كعناوين HTTP. أسماء رؤوس HTTP هي اسم سمة السياق مسبوقة ب ce-
.
Content-Type
يعكس الرأس نوع الوسائط الذي يتم فيه ترميز بيانات الحدث.
هام
عند استخدام con الثنائي وضع الخيمة ce-datacontenttype
يجب ألا يكون رأس HTTP موجودا أيضا.
هام
إذا كنت تخطط لتضمين السمات الخاصة بك (أي سمات الملحق) عند استخدام con الثنائي وضع الخيمة، فتأكد من أن أسمائها تتكون من أحرف صغيرة ('a' إلى 'z') أو أرقام ('0' إلى '9') من حرف ASCII وأنها لا تتجاوز 20 حرفا في الطول. أي أن اصطلاح التسمية لتسمية سمات سياق CloudEvents أكثر تقييدا من أسماء عناوين HTTP الصالحة. ليس كل اسم عنوان HTTP صالح هو اسم سمة ملحق صحيح.
حمولة HTTP هي بيانات الحدث المشفرة وفقا لنوع الوسائط في Content-Type
.
يمكن أن يبدو طلب HTTP المستخدم لنشر CloudEvent في الوضع الثنائي للمحتوى مثل هذا المثال:
POST / HTTP/1.1
HOST mynamespace.eastus-1.eventgrid.azure.net/topics/mytopic
ce-specversion: 1.0
ce-type: com.example.someevent
ce-source: /mycontext
ce-id: A234-1234-1234
ce-time: 2018-04-05T17:31:00Z
ce-comexampleextension1: value
ce-comexampleothervalue: 5
content-type: application/protobuf
Binary data according to protobuf encoding format. No context attributes are included.
متى تستخدم مخروطا ثنائيا أو منظما في CloudEvents وضع الخيمة
يمكنك استخدام con منظم وضع الخيمة إذا كنت تريد نهجا بسيطا لإعادة توجيه CloudEvents عبر القفزات والبروتوكولات. نظرا لأن CloudEvent في con منظم وضع الخيمة يحتوي على الرسالة مع بيانات التعريف الخاصة به، فمن السهل على العملاء استهلاكها ككل وإعادة توجيهها إلى أنظمة أخرى.
يمكنك استخدام con ثنائي وضع الخيمة إذا كنت تعرف أن تطبيقات انتقال البيانات من الخادم تتطلب الرسالة فقط دون أي معلومات إضافية (أي سمات السياق). بينما مع con منظم وضع الخيمة لا يزال بإمكانك الحصول على بيانات الحدث (الرسالة) من CloudEvent، فمن الأسهل إذا كان تطبيق المستهلك يحتوي عليها فقط في حمولة HTTP. على سبيل المثال، يمكن للتطبيقات الأخرى استخدام بروتوكولات أخرى وقد تكون مهتمة فقط برسالتك الأساسية، وليس بيانات التعريف الخاصة بها. في الواقع، يمكن أن تكون بيانات التعريف ذات صلة فقط بالوثبة الأولى الفورية. في هذه الحالة، فإن وجود البيانات التي تريد تبادلها بصرف النظر عن بيانات التعريف الخاصة بها يسهل التعامل معها وإعادة توجيهها.
المحتوى ذو الصلة
- للحصول على مقدمة Event Grid، راجعEvent Grid.
- للبدء في استخدام مواضيع مساحة الاسم، راجع نشر الأحداث باستخدام مواضيع مساحة الاسم.