Skip to main content

نظرة عامة

تتيح البروتوكولات القابلة للتركيب إعدادًا أكثر مرونة للوصول عبر TCP إلى خادم ClickHouse. ويمكن أن يتعايش هذا الإعداد مع الإعداد التقليدي، أو يحلّ محلّه.

إعداد البروتوكولات القابلة للتركيب

يمكن إعداد البروتوكولات القابلة للتركيب في ملف تهيئة بتنسيق XML. ويُحدَّد قسم البروتوكولات بوسوم protocols في ملف تهيئة XML:

إعداد طبقات البروتوكول

يمكنك تحديد طبقات البروتوكول باستخدام وحدات أساسية. على سبيل المثال، لتحديد طبقة HTTP، يمكنك إضافة وحدة أساسية جديدة إلى قسم protocols:
يمكن تهيئة الوحدات وفقًا لما يلي:
  • plain_http - اسم يمكن الرجوع إليه من طبقة أخرى
  • type - يشير إلى معالج البروتوكول الذي سيُنشأ لمعالجة البيانات. وتتوافر له معالجات البروتوكول المعرّفة مسبقًا التالية:
    • tcp - معالج بروتوكول ClickHouse الأصلي
    • http - معالج بروتوكول HTTP لـ ClickHouse
    • tls - طبقة تشفير TLS
    • proxy1 - طبقة PROXYv1
    • mysql - معالج بروتوكول التوافق مع MySQL
    • postgres - معالج بروتوكول التوافق مع PostgreSQL
    • prometheus - معالج بروتوكول Prometheus
    • interserver - معالج الاتصال الداخلي بين خوادم ClickHouse
لم يُنفَّذ معالج بروتوكول gRPC في Composable protocols

تكوين نقاط النهاية

يُشار إلى نقاط النهاية (منافذ الاستماع) بالوسمين <port> و<host> الاختياريين. على سبيل المثال، لتكوين نقطة نهاية على طبقة HTTP التي أُضيفت سابقًا، يمكننا تعديل التكوين كما يلي:
إذا أُهمِل الوسم <host>، فسيُستخدم <listen_host> من إعدادات الجذر.

تهيئة تسلسلات الطبقات

تُعرَّف تسلسلات الطبقات باستخدام الوسم <impl>، مع الإشارة إلى وحدة أخرى. على سبيل المثال، لتهيئة طبقة TLS فوق وحدة plain_http الخاصة بنا، يمكننا تعديل الإعدادات على النحو التالي:

إرفاق نقاط النهاية بالطبقات

يمكن إرفاق نقاط النهاية بأي طبقة. على سبيل المثال، يمكننا تحديد نقاط نهاية لكلٍّ من HTTP (المنفذ 8123) وHTTPS (المنفذ 8443):

تعريف نقاط نهاية إضافية

يمكن تعريف نقاط نهاية إضافية بالإشارة إلى أي وحدة مع حذف الوسم <type>. على سبيل المثال، يمكننا تعريف نقطة النهاية another_http لوحدة plain_http كما يلي:

معالجات HTTP مخصّصة لكل نقطة نهاية

بشكل افتراضي، تشترك جميع إدخالات البروتوكول type=http في الإعداد <http_handlers> نفسه. يمكنك تجاوز ذلك بإضافة وسم <handlers> يشير إلى قسم إعدادات مختلف. يتيح هذا لكل منفذ HTTP أن يقدّم مجموعة مختلفة من قواعد توجيه HTTP. على سبيل المثال، لتشغيل واجهة برمجة تطبيقات HTTP بديلة على المنفذ 8124 مع معالجاتها الخاصة:
في هذا المثال، تستخدم الطلبات الواردة إلى المنفذ 8123 قواعد <http_handlers> القياسية، بينما تستخدم الطلبات الواردة إلى المنفذ 8124 قواعد <http_handlers_alt>. وإذا حُذف <handlers> فإن نقطة النهاية تعود إلى <http_handlers> الافتراضي. يتبع قسم المعالِجات المخصّصة التنسيق نفسه المستخدم في <http_handlers>. ويُكتشف أي تغيير في قسم المعالِجات المخصّصة أثناء إعادة تحميل config، وتُعاد تشغيل نقطة النهاية المقابلة تلقائيًا.

مستخدم الجلسة الافتراضي لكل نقطة نهاية

عندما يتصل عميل دون تحديد اسم مستخدم (على سبيل المثال، طلب HTTP دون المعلَمة user، أو حزمة Hello من البروتوكول الأصلي ذات اسم مستخدم فارغ)، يصادقه الخادم بصفته مستخدم الجلسة الافتراضي، وهو إعداد الخادم default_session_user إعداد الخادم الذي قيمته الافتراضية هي default. يتجاوز الوسم <default_session_user> هذا الإعداد لنقطة نهاية واحدة. يتيح ذلك لمنافذ الاستماع المختلفة خدمة مستخدمين مجهولين مختلفين:
في هذا المثال، تُصادَق الطلبات التي لا تتضمن بيانات اعتماد على المنفذ 8123 باستخدام مستخدم الجلسة الافتراضي المُهيأ عموميًا، بينما تُصادَق الطلبات على المنفذ 8124 باستخدام readonly_user. ولا يتأثر العميل الذي يمرر اسم مستخدم صراحةً. يُبحث عن الوسم بدءًا من وحدة نقطة نهاية وصولًا إلى الوحدات (impl) المشار إليها، وتُعتمد القيمة الأقرب إلى نقطة نهاية. وينطبق ذلك على معالجات البروتوكولات tcp وhttp وmysql وpostgres، وعلى معالجات prometheus التي تُصادِق الطلبات (remote_write وremote_read وquery وapi_v1)؛ أما نقاط نهاية عرض المقاييس (بما في ذلك نقاط نهاية Keeper المخصصة للمقاييس فقط) فتُخدَم دون مصادقة وتتجاهل هذا الإعداد. وتُصادِق المعالجات ذات المستخدم الثابت (مفتاح user داخل handler في قاعدة http_handlers، أو مفتاح user داخل handler في قاعدة prometheus.handlers) باستخدام مستخدمها المُهيأ، وتتجاهل هذا الإعداد أيضًا - وعلى نحو خاص، لا يؤدي ترك default_session_user فارغًا إلى رفض هذه المعالجات. ولا يمكن استخدامه مع بروتوكول interserver: إذ تُصادَق اتصالات الاتصال الداخلي بين خوادم ClickHouse بواسطة secret الخاص بـ cluster والمستخدم الأولي، ولا تستخدم أبدًا مستخدم الجلسة الافتراضي.

تحديد معلمات إضافية للطبقة

قد تتضمن بعض الوحدات معلمات إضافية للطبقة. على سبيل المثال، تتيح طبقة TLS تحديد مفتاح خاص (privateKeyFile) وملفات الشهادة (certificateFile) كما يلي:
آخر تعديل في ٢٦ أغسطس ٢٠٢٦