> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Replica-aware routing

> وجّه الطلبات ذات الصلة إلى النسخة المتماثلة نفسها في ClickHouse Cloud لاستخدام الجداول المؤقتة والجلسات وإعادة استخدام ذاكرة التخزين المؤقت واتساق القراءة بعد الكتابة

export const PrivatePreviewBadge = () => {
  return <div className="privatePreviewBadge">
            <div className="privatePreviewIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M5.33301 6.66667V4.66667V4.66667C5.33301 3.194 6.52701 2 7.99967 2V2C9.47234 2 10.6663 3.194 10.6663 4.66667V4.66667V6.66667" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path d="M8.00033 9.33337V11.3334" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path fillRule="evenodd" clipRule="evenodd" d="M11.333 14H4.66634C3.92967 14 3.33301 13.4033 3.33301 12.6666V7.99996C3.33301 7.26329 3.92967 6.66663 4.66634 6.66663H11.333C12.0697 6.66663 12.6663 7.26329 12.6663 7.99996V12.6666C12.6663 13.4033 12.0697 14 11.333 14Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            {'معاينة خاصة في ClickHouse Cloud'}
        </div>;
};

<PrivatePreviewBadge />

يوجّه التوجيه المراعي للنسخ المتماثلة، المعروف أيضًا باسم الجلسات اللاصقة أو التوجيه اللاصق أو تقارب الجلسة، الطلبات ذات الصلة إلى النسخة المتماثلة نفسها من ClickHouse. استخدمه عندما تحتاج إلى أن تظل [الجداول المؤقتة](/docs/ar/reference/statements/create/table/temporary-table) أو [حالة الجلسة المسمّاة](/docs/ar/concepts/features/interfaces/http#using-clickhouse-sessions-in-the-http-protocol) متاحة عبر الاستعلامات، أو عندما تريد أن تعيد الاستعلامات ذات الصلة استخدام الذاكرات المؤقتة المحلية للنسخة المتماثلة نفسها، أو عندما تحتاج إلى [اتساق القراءة بعد الكتابة](#read-after-write-consistency) بين عملية كتابة وعمليات القراءة التي تليها.

هذه الميزة تعمل وفق أفضل جهد ولا تضمن العزل. يربط الوكيل كل قيمة توجيه بنسخة متماثلة واحدة. ويظل هذا الربط ثابتًا ما دام عدد النسخ المتماثلة دون تغيير؛ لكن تغيير سعة الخدمة قد يربط القيمة بنسخة متماثلة مختلفة.

<Warning>
  **يتطلب واجهة HTTP**

  يُطبَّق التوجيه المراعي للنسخ المتماثلة في طبقة الوكيل عبر [واجهة HTTP/HTTPS](/docs/ar/concepts/features/interfaces/http). ينتقل ClickHouse Cloud بالتوجيه المراعي للنسخ المتماثلة من `session_id` إلى الترويسة `X-ClickHouse-Replica-Tag`. تصف علامات التبويب أدناه الطريقتين خلال مرحلة الطرح.

  التوجيه المراعي للنسخ المتماثلة **غير متاح حاليًا عبر البروتوكول الأصلي** (المنفذ الأصلي، مثل برنامج التشغيل [clickhouse-go](/docs/ar/integrations/language-clients/go/index) في وضعه الأصلي الافتراضي). يجب على عملاء البروتوكول الأصلي التبديل إلى HTTP وإرسال قيمة التوجيه مع كل طلب.
</Warning>

<div id="prerequisites">
  ## المتطلبات الأساسية
</div>

* تحتاج خدمتك إلى **نسختين متماثلتين أو أكثر**. في خدمة ذات نسخة متماثلة واحدة، لا توجد نسخة يمكن التثبيت عليها.
* تكون متاحة على **Enterprise** افتراضيًا عندما تصبح الميزة في مرحلة GA.
* مدعومة في خدمات ClickHouse Cloud القياسية. أما [BYOC](/docs/ar/products/cloud/guides/infrastructure/deployment-options/byoc/overview) فغير مدعوم بعد.

<div id="configuring-replica-aware-routing">
  ## تهيئة التوجيه المراعي للنسخ المتماثلة
</div>

افتح تذكرة [دعم](https://clickhouse.com/support/program) واطلب تمكين التوجيه اللاصق للنسخ المتماثلة المستند إلى HTTP. ضمّن معرّف الخدمة وسبب حاجتك إليه (الجداول المؤقتة، أو حالة الجلسة، أو إعادة استخدام ذاكرة التخزين المؤقت، أو اتساق القراءة بعد الكتابة). قبل ترحيل خدمة موجودة، اطلب من الدعم تأكيد تمكين التوجيه المستند إلى الترويسة لها. واصل استخدام `session_id` حتى تتلقى التأكيد؛ لن يوفر `X-ClickHouse-Replica-Tag` توجيهًا لاصقًا حتى يصل النشر التدريجي إلى خدمتك. لا يلزم إجراء أي إعادة تشغيل.

<div id="http-based-routing">
  ## التوجيه المستند إلى HTTP
</div>

<Tabs>
  <Tab title="X-ClickHouse-Replica-Tag (المفضَّل)">
    لتثبيت عبء عمل على نسخة متماثلة، أرسل ترويسة `X-ClickHouse-Replica-Tag` عبر [واجهة HTTPS](/docs/ar/concepts/features/interfaces/http). يستخدم الوكيل التجزئة المتسقة لقيمة الترويسة، لذا تُوجَّه الطلبات التي تحمل القيمة نفسها إلى النسخة المتماثلة ذاتها ما دام عدد النسخ المتماثلة لم يتغير. وتُجزَّأ القيمة المختلفة بصورة مستقلة، وقد تُوجَّه إلى النسخة المتماثلة نفسها أو إلى نسخة أخرى، لكن لا يمكنك اختيار *أيّ* نسخة متماثلة تُعيَّن لها قيمة معيّنة.

    استخدم اسم مضيف الخدمة الحالي. لا تحتاج إلى أسماء مضيفين مثبتة خاصة أو إلى إجراء تغييرات على DNS. يمكن أن تكون قيمة الترويسة أي سلسلة تختارها، مثل اسم التطبيق أو معرّف المستخدم أو تسمية عبء العمل. وتستمر الطلبات التي لا تتضمن الترويسة في استخدام موازنة التحميل العادية.

    عيّن ترويسة `X-ClickHouse-Replica-Tag` في كل طلب:

    ```bash theme={null}
    echo 'SELECT hostName()' | curl \
      -H 'X-ClickHouse-Replica-Tag: my-workload-1' \
      -H 'X-ClickHouse-User: default' \
      -H 'X-ClickHouse-Key: <password>' \
      'https://<host>:8443/' -d @-
    ```

    بالنسبة إلى clickhouse-go (v2)، اضبط `Protocol: clickhouse.HTTP` ومرّر الترويسة عبر [خيار الاتصال `HttpHeaders`](/docs/ar/integrations/language-clients/go/configuration#connection-settings).

    <Info>
      توفّر `X-ClickHouse-Replica-Tag` ارتباطًا بنسخة متماثلة محددة دون إنشاء جلسة HTTP في ClickHouse. ويمكن للطلبات المتزامنة إعادة استخدام الوسم نفسه دون ظهور الخطأ `SESSION_IS_LOCKED`.
    </Info>

    ### اتساق القراءة بعد الكتابة

    في خدمة تضم عدة نسخ متماثلة، قد لا تظهر الكتابة على إحدى النسخ في النسخ الأخرى إلى أن تلحق بها عملية النسخ المتماثل. أرسل عملية الكتابة مع ترويسة `X-ClickHouse-Replica-Tag`، ثم أعد استخدام قيمة الترويسة نفسها في عمليات القراءة اللاحقة. يوجّه الوكيل العمليتين إلى النسخة المتماثلة نفسها، لذا يمكنك قراءة البيانات التي كتبتها حتى عندما تكون النسخ المتماثلة الأخرى متأخرة. يناسب هذا النمط أعباء العمل التي تكتب البيانات ثم تقرؤها فورًا، مثل التطبيقات التفاعلية أو مهام ETL التي تتحقق من عمليات الإدراج قبل المتابعة.

    ولضمانات أوسع عبر جميع النسخ المتماثلة، يمكنك أيضًا ضبط [`select_sequential_consistency`](/docs/ar/reference/settings/session-settings#select_sequential_consistency) على `1` في ClickHouse Cloud.

    ### تحقّق من النسخة المتماثلة التي وصل إليها طلبك

    شغّل مثال `SELECT hostName()` مرة أخرى باستخدام قيمة `X-ClickHouse-Replica-Tag` نفسها. ينبغي أن تحصل على اسم المضيف نفسه ما دام عدد النسخ المتماثلة لم يتغير. وقد تُعيَّن قيمة ترويسة مختلفة إلى نسخة متماثلة مختلفة.
  </Tab>

  <Tab title="session_id (القديم)">
    <Warning>
      يحلّ `X-ClickHouse-Replica-Tag` محل `session_id` في التوجيه المراعي للنسخ المتماثلة. واصل استخدام `session_id` إلى أن يؤكد فريق الدعم تفعيل التوجيه المستند إلى الرأس لخدمتك.
    </Warning>

    **فشل الطلبات المتزامنة مع `SESSION_IS_LOCKED`**

    * لأن `session_id` ينشئ جلسة HTTP في ClickHouse، لا يمكن تشغيل أكثر من استعلام واحد ضمن الجلسة نفسها في الوقت ذاته.
    * بعد تفعيل التوجيه المستند إلى الرأس لخدمتك، يمكن لأحمال العمل التي تحتاج فقط إلى الارتباط بنسخة متماثلة الانتقال إلى `X-ClickHouse-Replica-Tag`. ويمكن للطلبات المتزامنة مشاركة وسم النسخة المتماثلة نفسه.
    * إذا كنت تحتاج إلى حالة جلسة HTTP في ClickHouse، فنفّذ الطلبات التي تشترك في `session_id` بشكل متسلسل.

    لتثبيت حمل عمل على نسخة متماثلة، أرسل مَعلمة الاستعلام `session_id` عبر [واجهة HTTPS](/docs/ar/concepts/features/interfaces/http). يستخدم الوكيل التجزئة المتسقة لقيمة المَعلمة، لذا تُوجَّه الطلبات التي تشترك في القيمة نفسها إلى النسخة المتماثلة نفسها ما دام عدد النسخ المتماثلة لم يتغير. وتُجزَّأ القيمة المختلفة بشكل مستقل، وقد تصل إلى النسخة المتماثلة نفسها أو إلى نسخة أخرى، لكن لا يمكنك اختيار *أي* نسخة متماثلة تُعيَّن لها قيمة معينة.

    استخدم اسم مضيف خدمتك الحالي. لا حاجة إلى أسماء مضيفين مثبتة خاصة أو إلى تغييرات في DNS. يمكن أن يكون `session_id` أي سلسلة تختارها، مثل اسم تطبيق أو معرّف مستخدم أو تسمية حمل عمل. أما الطلبات التي لا تتضمن `session_id` فتستمر في استخدام موازنة التحميل العادية.

    عيّن مَعلمة الاستعلام `session_id` في كل طلب:

    ```bash theme={null}
    echo 'SELECT hostName()' | curl \
      -H 'X-ClickHouse-User: default' \
      -H 'X-ClickHouse-Key: <password>' \
      'https://<host>:8443/?session_id=my-workload-1' -d @-
    ```

    بالنسبة إلى clickhouse-go ‏(v2)، اضبط `Protocol: clickhouse.HTTP` ومرّر `session_id` كـ[إعداد](/docs/ar/integrations/language-clients/go/database-sql-api#sessions). يرسله برنامج التشغيل كمعلمة استعلام في URL.

    ### اتساق القراءة بعد الكتابة باستخدام `session_id`

    في خدمة تضم عدة نسخ متماثلة، قد لا تظهر عملية كتابة على إحدى النسخ في النسخ الأخرى إلى أن تلحق بها عملية النسخ المتماثل. أرسل عملية الكتابة مع `session_id`، ثم أعد استخدام `session_id` نفسه في عمليات القراءة اللاحقة. يوجّه الوكيل كليهما إلى النسخة المتماثلة نفسها، لذا يمكنك قراءة البيانات التي كتبتها حتى عندما تكون النسخ المتماثلة الأخرى متأخرة. يناسب هذا النمط أحمال العمل التي تكتب البيانات ثم تقرأها فورًا، مثل التطبيقات التفاعلية أو مهام ETL التي تتحقق من عمليات الإدراج قبل المتابعة.

    للحصول على ضمانات أوسع عبر جميع النسخ المتماثلة، يمكنك أيضًا ضبط [`select_sequential_consistency`](/docs/ar/reference/settings/session-settings#select_sequential_consistency) على `1` في ClickHouse Cloud.

    ### تحقّق من النسخة المتماثلة التي تصل إليها باستخدام `session_id`

    شغّل مثال `SELECT hostName()` مرة أخرى باستخدام `session_id` نفسه. يُفترض أن تحصل على اسم المضيف نفسه ما دام عدد النسخ المتماثلة لم يتغير. قد يُربط `session_id` مختلف بنسخة متماثلة مختلفة.
  </Tab>
</Tabs>

<div id="subdomain-based-routing-deprecated">
  ## التوجيه القديم المستند إلى النطاق الفرعي
</div>

لم يعد التوجيه المستند إلى النطاق الفرعي مُمكّنًا في الخدمات الجديدة. إذا كنت تستخدم بالفعل نطاقات فرعية مثبتة، فتواصل مع [Support](https://clickhouse.com/support/program) للترحيل إلى [طريقة رأس HTTP](#http-based-routing).

<Accordion title="كيفية عمل التوجيه القديم المستند إلى النطاق الفرعي">
  سابقًا، كان تمكين التوجيه المراعي للنسخ المتماثلة يتيح استخدام نطاق فرعي عام (wildcard) فوق اسم مضيف الخدمة. بالنسبة إلى خدمة يكون اسم المضيف الخاص بها `abcxyz123.us-west-2.aws.clickhouse.cloud`، كان أي اسم مضيف يطابق `*.sticky.abcxyz123.us-west-2.aws.clickhouse.cloud` (مثل `aaa.sticky.abcxyz123.us-west-2.aws.clickhouse.cloud`) يُوجَّه بواسطة Envoy، باستخدام hash، إلى نسخة متماثلة ثابتة. أما اسم المضيف الأصلي فكان يستمر في استخدام موازنة التحميل `LEAST_CONNECTION`، وهي خوارزمية التوجيه الافتراضية.
</Accordion>

<div id="limitations-of-replica-aware-routing">
  ## قيود التوجيه المراعي للنسخ المتماثلة
</div>

<div id="replica-aware-routing-does-not-guarantee-isolation">
  ### يتغير الثبات عند تغير عدد النسخ المتماثلة
</div>

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

<div id="not-workload-isolation">
  ### التوجيه المراعي للنسخ المتماثلة ليس عزلًا لأعباء العمل
</div>

لا يحدد التوجيه اللاصق سوى *أي* نسخة متماثلة ستعالج الطلب. وقد تظل هذه النسخة المتماثلة تخدم حركة مرور أخرى. للحصول على موارد حوسبة مخصصة، استخدم [فصل الحوسبة-الحوسبة](/docs/ar/products/cloud/features/infrastructure/warehouses).

<div id="replica-aware-routing-does-not-work-out-of-the-box-with-private-link">
  ### Private Link وطريقة النطاق الفرعي القديمة
</div>

يعمل التوجيه المستند إلى HTTP مع [الشبكات الخاصة](/docs/ar/products/cloud/guides/security/connectivity/private-networking) على اسم مضيف الخدمة العادي لديك. ولا تحتاج إلى أي سجلات DNS إضافية.

أما طريقة النطاق الفرعي القديمة فلا تعمل: يجب عليك إضافة DNS لنمط اسم المضيف `*.sticky.*`، وقد يؤدي الإعداد غير الصحيح إلى عدم توازن الحمل بين النسخ المتماثلة.

<div id="replica-aware-routing-requires-http">
  ### يتطلب التوجيه المراعي للنسخ المتماثلة بروتوكول HTTP
</div>

يرتكز التوجيه اللاصق على ترويسة HTTP أو معلَمة استعلام، وفقاً لطريقة التوجيه المتاحة لخدمتك. لا يحمل البروتوكول الثنائي الأصلي أياً من القيمتين ليُجري وكيل HTTP `hash` عليها، لذا لا يتوفر التوجيه المراعي للنسخ المتماثلة عبر البروتوكول الأصلي. يجب على برامج العميل التي تستخدم البروتوكول الأصلي نقل عبء العمل المعني إلى واجهة HTTP لاستخدام هذه الميزة.

<div id="troubleshooting">
  ## استكشاف الأخطاء وإصلاحها
</div>

**لا تزال الاستعلامات تُوجَّه إلى نُسخ متماثلة مختلفة رغم استخدام قيمة التوجيه نفسها**

* تأكد من استخدام طريقة التوجيه المتاحة لخدمتك: الترويسة `X-ClickHouse-Replica-Tag` أو معلَمة استعلام URL القديمة `session_id`.
* تأكد من أن كل طلب يستخدم قيمة التوجيه نفسها تمامًا.
* انتظر قليلًا بعد التفعيل؛ فقد يستغرق سريان التغيير أقل من دقيقة.
* تحقق مما إذا كان عدد النسخ المتماثلة قد تغيّر مؤخرًا؛ إذ يُتوقع حدوث إعادة تعيين للربط بعد التوسعة. استخدم `SELECT hostName()` لاكتشاف الربط الجديد.
