سجلات المخططات المدعومة لـ Kafka ClickPipes
- السجلات المتوافقة مع Confluent: أي سجل متوافق مع واجهة برمجة تطبيقات Confluent Schema Registry، مثل Confluent Schema Registry نفسه وRedpanda Schema Registry. يدعم Avro وProtobuf.
- AWS Glue Schema Registry: لبيانات Avro المُسلسلة باستخدام AWS Glue SerDe، والتي تأتي عادةً من Amazon MSK.
السجلات المتوافقة مع Confluent
الإعداد
- توفير مسار كامل إلى موضوع المخطط (مثل:
https://registry.example.com/subjects/events)- اختياريًا، يمكن الإشارة إلى إصدار محدد بإضافة
/versions/[version]إلى URL (وإلا سيسترجع ClickPipes أحدث إصدار).
- اختياريًا، يمكن الإشارة إلى إصدار محدد بإضافة
- توفير مسار كامل إلى معرّف المخطط (مثل:
https://registry.example.com/schemas/ids/1000) - توفير URL الجذر لسجل مخططات (مثل:
https://registry.example.com)
اتصال الشبكة
- يجب أن يستخدم عنوان URL لسجل مخططات
https://. - إذا كان اسم مضيف السجل يُحل إلى عنوان خاص، فيجب أن يكون الوصول إليه ممكنًا عبر نقطة نهاية خاصة عكسية محددة لـ ClickPipe؛ وإلا فسيفشل فحص الاتصال أثناء الإعداد.
كيف يعمل ذلك
- إذا كان هناك معرّف المخطط مضمن في قيمة السجل، فسيستخدمه لاسترجاع المخطط.
- إذا لم يكن هناك معرّف المخطط مضمن في قيمة السجل، فسيستخدم معرّف المخطط أو اسم الموضوع المحدد في إعداد ClickPipe لاسترجاع المخطط.
- إذا كُتبت قيمة السجل بدون معرّف المخطط مضمن، ولم يتم تحديد معرّف المخطط أو اسم الموضوع في إعداد ClickPipe، فلن يتم استرجاع المخطط وسيتم تخطي الرسالة مع تسجيل
SOURCE_SCHEMA_ERRORفي جدول الأخطاء الخاص بـ ClickPipes. - إذا لم تكن قيمة السجل مطابقة للمخطط، فسيتم تخطي الرسالة مع تسجيل
DATA_PARSING_ERRORفي جدول الأخطاء الخاص بـ ClickPipes. - بالنسبة إلى مخططات Protobuf فقط: سيحمّل ClickPipes أي مخططات مستوردة مُعرّفة كتبعيات. أما مخططات Avro ذات المراجع الخارجية فليست مدعومة بعد.
_key.id، يحل ClickPipes معرّف المخطط المضمن في مفتاح Kafka بشكل مستقل عن قيمة السجل. يمكن للمفتاح استخدام معرّف مخطط مختلف، ولكن يجب أن يستخدم عائلة السجل نفسها وتنسيق التسلسل نفسه المستخدمين للقيمة. تُخزّن مخططات المفاتيح المحلولة مؤقتًا وتُكتشف تغييرات المخطط تلقائيًا.
AWS Glue Schema Registry
AWSKafkaAvroSerializer مع topic في Amazon MSK)، فيمكن لـ ClickPipes حلّ هذه المخططات مباشرةً من AWS Glue Schema Registry. يستخدم Glue تنسيق wire مختلفًا وواجهة برمجة تطبيقات مختلفة عن السجلات المتوافقة مع Confluent، لذا يُهيَّأ بشكل منفصل.
يتوفر إعداد AWS Glue Schema Registry حاليًا عبر ClickHouse Cloud console فقط. ولا يُدعم عبر واجهة برمجة تطبيقات ClickPipes أو Terraform provider.
Avro فقط. تُدعم سجلات AWS Glue لتنسيق Avro فقط. يمكن لـ Glue SerDe أيضًا تأطير JSON وProtobuf، لكن ClickPipes لا يدعمهما، ويُرفضان عند إنشاء pipe.
الإعداد
لا يوجد URL لسجل لتكوينه. يحمل كل سجل تنتجه Glue SerDe معرّف إصدار مخططه الخاص، ويحلّه ClickPipes باستخدام
glue:GetSchemaVersion ويخزّنه مؤقتًا، بإجراء استدعاء واحد لواجهة برمجة التطبيقات لكل إصدار مخطط مميز. يُعالَج تطور المخطط تلقائيًا: فعندما تنتقل السجلات إلى إصدار مخطط جديد أثناء التدفق، يُحلّ عند ظهوره أول مرة.
إعداد IAM
الخيار أ: إعادة استخدام هوية IAM الخاصة بالوسيط
- IAM role: أضف العبارة إلى سياسة الأذونات الخاصة بالدور المُعدّ لـ MSK.
- IAM credentials: أضف العبارة إلى سياسة أذونات كيان IAM المرتبط بمفتاح الوصول.
الخيار ب: استخدام دور مخصص للسجل
للنشرات على AWS فقط. يتطلب هذا الخيار خدمة ClickHouse Cloud منشورة على AWS، لأنه يعتمد على دور AWS IAM الخاص بالخدمة. إذا كانت خدمتك تعمل على GCP أو Azure ولم يكن الوسيط يستخدم مصادقة IAM، فلن تتمكن من تكوين دور مخصص للسجل.
1
الحصول على ARN لدور IAM لخدمة ClickHouse
افتح الخدمة، وحدد علامة التبويب الإعدادات، ثم مرر إلى قسم معلومات أمان الشبكة، وانسخ قيمة معرّف دور الخدمة (IAM)، وهي ARN بالصيغة
arn:aws:iam::123456789012:role/CH-S3-example-service-Role. يُشار إلى هذه القيمة أدناه باسم {ClickHouse_IAM_ARN}. لكل خدمة ClickHouse منشورة على AWS دور خاص بها، لذا تختلف هذه القيمة من خدمة إلى أخرى.2
إنشاء دور IAM للسجل
أنشئ دور IAM في حساب AWS الخاص بك. يجب أن يبدأ اسم الدور بـ تكوين سياسة الأذونات
ClickHouseAccessRole-.تكوين سياسة الثقةاستبدل {ClickHouse_IAM_ARN} بالقيمة من الخطوة السابقة.3
تكوين ClickPipe
الصق ARN للدور الجديد في حقل ARN لدور IAM في المعالج.
نطاق موارد IAM. تتبع هذه الأمثلة سياسة AWS الموثقة لمكونات إلغاء التسلسل وسياسة AWS المُدارة
AWSGlueSchemaRegistryReadonlyAccess، وكلتاهما تمنح الإذن glue:GetSchemaVersion على "*". يتحقق ClickPipes بشكل مستقل من مطابقة كل مخطط تم حله مع اسم السجل الذي كوّنته، ويرفض الإصدارات الواردة من أي سجل آخر.استكشاف الأخطاء وإصلاحها
القيود
- Avro فقط. لا يُدعم JSON Schema وProtobuf عبر Glue SerDe.
- مصادر Kafka فقط. لا يمكن لـ ClickPipes في Kinesis استخدام سجل Glue.
مواءمة المخطط
_key.:
- إذا كان المخطط يحتوي على حقل غير مُدرَج في مواءمة وجهة ClickHouse، فسيتم تجاهل هذا الحقل.
- إذا كان المخطط يفتقد حقلاً مُعرَّفًا في مواءمة وجهة ClickHouse، فسيُملأ عمود ClickHouse بقيمة “صفرية”، مثل 0 أو سلسلة فارغة. لاحظ أن تعبيرات
DEFAULTغير مدعومة. - إذا كان حقل المخطط وعمود ClickHouse غير متوافقين، فستفشل عمليات إدراج ذلك الصف/تلك الرسالة، وسيُسجَّل الفشل في جدول الأخطاء الخاص بـ ClickPipes. لاحظ أن بعض التحويلات الضمنية مدعومة (على سبيل المثال، بين الأنواع الرقمية)، ولكن ليس جميعها (على سبيل المثال، لا يمكن إدراج حقل سجل Avro في عمود ClickHouse من النوع
Int32).