يُوزَّع HTTP Connector بموجب Confluent Enterprise License.
خطوات البدء السريع
1
اجمع تفاصيل الاتصال الخاصة بك
للاتصال بـ ClickHouse باستخدام HTTP(S)، تحتاج إلى المعلومات التالية:
اختر HTTPS. ستظهر تفاصيل الاتصال في مثال لأمر 
إذا كنت تستخدم ClickHouse مُدارًا ذاتيًا، فسيُحدِّد مسؤول ClickHouse لديك تفاصيل الاتصال.
تتوفر تفاصيل خدمة ClickHouse Cloud الخاصة بك في ClickHouse Cloud console.
حدِّد خدمة ثم انقر على Connect:

curl.
2
شغّل Kafka Connect وموصل HTTP sink
لديك خياران:
-
Self-managed: نزّل حزمة Confluent وثبّتها محليًا. اتبع تعليمات التثبيت الخاصة بتثبيت الموصل كما هو موثق هنا.
إذا استخدمت طريقة التثبيت
confluent-hub، فسيتم تحديث ملفات التكوين المحلية لديك. - Confluent Cloud: يتوفر إصدار مُدار بالكامل من HTTP Sink لمن يستخدمون Confluent Cloud لاستضافة Kafka لديهم. ويتطلب ذلك أن تكون بيئة ClickHouse الخاصة بك قابلة للوصول من Confluent Cloud.
تستخدم الأمثلة التالية Confluent Cloud.
3
أنشئ جدول الوجهة في ClickHouse
قبل اختبار الاتصال، لنبدأ بإنشاء جدول اختبار في ClickHouse Cloud. سيتلقى هذا الجدول البيانات من Kafka:
4
تكوين HTTP Sink
أنشئ Kafka topic ومثيلاً من موصل HTTP Sink:
كوّن موصل HTTP Sink:
كوّن موصل HTTP Sink:
- أدخل اسم الـ topic الذي أنشأته
- المصادقة
HTTP Url- عنوان URL الخاص بـ ClickHouse Cloud مع تحديد query من نوعINSERTبالشكل<protocol>://<clickhouse_host>:<clickhouse_port>?query=INSERT%20INTO%20<database>.<table>%20FORMAT%20JSONEachRow. ملاحظة: يجب ترميز الـ query.Endpoint Authentication type- BASICAuth username- اسم مستخدم ClickHouseAuth password- كلمة مرور ClickHouse
هذا
HTTP Url عرضة لوقوع الأخطاء. تأكد من أن التحويلات الهروبية دقيقة لتجنب المشكلات.- الإعدادات
Input Kafka record value format- يعتمد ذلك على بيانات المصدر لديك، لكن في معظم الحالات يكون JSON أو Avro. نفترض استخدامJSONفي الإعدادات التالية.- في قسم
advanced configurations:HTTP Request Method- اضبطه على POSTRequest Body Format- jsonBatch batch size- وفقًا لتوصيات ClickHouse، اضبط هذا على 1000 على الأقل.Batch json as array- trueRetry on HTTP codes- 400-500، ولكن عدّله حسب الحاجة. على سبيل المثال، قد يتغير ذلك إذا كان لديك HTTP proxy أمام ClickHouse.Maximum Reties- القيمة الافتراضية (10) مناسبة، لكن لا تتردد في تعديلها للحصول على retries أكثر موثوقية.
5
اختبار الاتصال
أنشئ رسالة في topic الذي أعددته لـ HTTP Sink
وتحقق من أن الرسالة التي أُنشئت قد كُتبت إلى مثيل ClickHouse الخاص بك.
وتحقق من أن الرسالة التي أُنشئت قد كُتبت إلى مثيل ClickHouse الخاص بك.
استكشاف الأخطاء وإصلاحها
لا يُجري HTTP Sink تجميعًا للرسائل على دفعات
لا يقوم موصل HTTP Sink بتجميع الطلبات على دفعات للرسائل التي تختلف قيم ترويسات Kafka فيها.
- تحقّق من أن سجلات Kafka لديك تستخدم المفتاح نفسه.
- عند إضافة معلمات إلى عنوان URL الخاص بواجهة برمجة تطبيقات HTTP، قد ينتج عن كل سجل عنوان URL فريد. ولهذا السبب، يُعطَّل التجميع على دفعات عند استخدام معلمات URL إضافية.
400 طلب غير صالح
CANNOT_PARSE_QUOTED_STRING
String:
input_format_json_read_objects_as_strings=1 في عنوان URL كسلسلة مُرمَّزة SETTINGS%20input_format_json_read_objects_as_strings%3D1
تحميل مجموعة بيانات GitHub (اختياري)
github في الأمثلة، ونستخدم kcat لإدراج الرسائل في Kafka.
1
تحضير الإعداد
اتبع هذه التعليمات لإعداد Connect بما يناسب نوع التثبيت لديك، مع الانتباه إلى الفروق بين عنقود standalone وعنقود موزّع. وإذا كنت تستخدم Confluent Cloud، فالإعداد الموزّع هو المقصود هنا.أهم معلَمة هي تُعدّ المعلمات الإضافية التالية ذات صلة باستخدام HTTP Sink مع ClickHouse. يمكن العثور على قائمة كاملة بالمعلمات هنا:
http.api.url. تتطلب واجهة HTTP في ClickHouse ترميز عبارة INSERT كمعلَمة ضمن عنوان URL. ويجب أن يتضمن ذلك التنسيق (JSONEachRow في هذه الحالة) وقاعدة البيانات الهدف. كما يجب أن يكون التنسيق متوافقًا مع بيانات Kafka، التي ستُحوَّل إلى سلسلة نصية ضمن حمولة HTTP. ويجب أيضًا إجراء URL escaping لهذه المعلَمات. يوضّح المثال أدناه هذا التنسيق لمجموعة بيانات Github (على افتراض أنك تشغّل ClickHouse محليًا):request.method- اضبطها على POSTretry.on.status.codes- اضبطها على 400-500 لإعادة المحاولة عند أي رموز خطأ. حسّن هذا الإعداد بناءً على الأخطاء المتوقعة في البيانات.request.body.format- في معظم الحالات، ستكون هذه القيمة JSON.auth.type- اضبطها على BASIC إذا كنت تستخدم authentication مع ClickHouse. لا تتوفر حاليًا آليات authentication الأخرى المتوافقة مع ClickHouse.ssl.enabled- اضبطها على true إذا كنت تستخدم SSL.connection.user- اسم المستخدم لـ ClickHouse.connection.password- كلمة المرور لـ ClickHouse.batch.max.size- عدد الصفوف التي سيتم إرسالها في Batch واحد. تأكد من ضبطه على عدد كبير مناسب. ووفقًا لتوصيات ClickHouse، ينبغي اعتبار القيمة 1000 حدًا أدنى.tasks.max- يتيح connector الخاص بـ HTTP Sink تشغيل task واحدة أو أكثر. ويمكن استخدام ذلك لتحسين الأداء. وإلى جانب حجم Batch، يُعد هذا الوسيلة الأساسية لتحسين الأداء.key.converter- اضبطها وفقًا لـ types الخاصة بالمفاتيح لديك.value.converter- اضبطها بناءً على نوع البيانات الموجودة في topic لديك. لا تحتاج هذه البيانات إلى schema. يجب أن يكون format هنا متسقًا مع FORMAT المحدد في المعلمةhttp.api.url. أبسط خيار هنا هو استخدام JSON وconverter org.apache.kafka.connect.json.JsonConverter. ويمكن أيضًا التعامل مع value على أنها string عبر converter org.apache.kafka.connect.storage.StringConverter، رغم أن ذلك سيتطلب من المستخدم استخراج value في statement الخاص بـ insert باستخدام functions. كما أن Avro format مدعوم أيضًا في ClickHouse عند استخدام converter io.confluent.connect.avro.AvroConverter.
2
إنشاء جدول ClickHouse
تأكد من إنشاء الجدول. يُعرض أدناه مثال لمجموعة بيانات GitHub مصغّرة تستخدم محرك MergeTree القياسي.
3
أضف البيانات إلى Kafka
أرسل رسائل إلى Kafka. نستخدم أدناه kcat لإرسال 10 آلاف رسالة.يجب أن يؤكد استعلام بسيط على الجدول الهدف “Github” إدراج البيانات.