يمكن ضبط كل عنصر في ticketing.toml (اختياري) أيضًا عبر متغير بيئة. الأولوية هي متغير البيئة > ticketing.toml > القيمة الافتراضية، ولا تُفرَّق المفاتيح والقيم المنطقية (boolean) بين حروف كبيرة وصغيرة. صورة Docker مبنية على scratch لذا حقن الإعدادات عبر متغيرات البيئة هو الأسلوب الافتراضي (لاستخدام ملف إعدادات بدلًا من ذلك، اربطه (mount) وحدّد مساره عبر CONFIG).
| متغير البيئة | القيمة الافتراضية | الوصف |
|---|---|---|
PORT (SERVER_PORT) | 5225 | منفذ الاستماع عبر TCP. يُتجاهل في وضع العنقود، حيث يُستخدم بدلًا منه المنفذ الوارد في CLUSTER_SELF |
DEBUG (SERVER_DEBUG) | يعتمد على البناء (build) | تفعّل القيمة 1/true سجلّات debug |
SOCKET_BIND | 0.0.0.0 | عنوان الاستماع |
SOCKET_NODELAY | true | TCP_NODELAY |
SOCKET_READ_BUF_LEN | 4096 | حجم مخزن القراءة لكل اتصال (بايت) |
SOCKET_REPLY_QUEUE | 1024 | طول قائمة انتظار الاستجابات لكل اتصال |
SOCKET_REPLY_BATCH | 64 | أقصى عدد استجابات تُجمَّع في عملية كتابة واحدة |
SWEEP_INTERVAL_SECS | 5 | فترة تنظيف المفاتيح المنتهية الصلاحية (بالثواني) |
CLUSTER_SELF | (لا شيء) | العنوان المُعلَن لهذه العقدة، بصيغة host:port. وجوده يفعّل وضع العنقود |
CLUSTER_PEERS | (لا شيء) | قائمة عناوين العقد مفصولة بفواصل. الترتيب = أولوية الترقية، ويجب أن تتضمن self، بحدّ أدنى عنصرين |
CONFIG | ./conf/ticketing.toml | مسار ملف الإعدادات |
[cluster] (أو CLUSTER_*)، تعمل العقدة بشكل مستقل. الأسرع، لكن يحدث انقطاع قصير عند إعادة التشغيل، وتُفقَد الحالة المخزّنة في الذاكرة عند إعادة التشغيل (lease هي شبكة الأمان).CLUSTER_PEERS (بترتيب الأولوية) و**CLUSTER_SELF** الخاص بها الذي يشير إلى نفسها. من بين العقد الحية، تصبح العقدة ذات الأعلى أولوية نشطة، وتصبح البقية عقدًا احتياطية تتلقى نسخًا مطابقة في الوقت الفعلي. للتفاصيل، راجع آلية العمل والبروتوكول — خادم ↔ خادم.يستخدم نشر العنقود على Kubernetes StatefulSet + خدمة بلا رأس (headless Service). امنح كل pod اسم DNS ثابتًا (
ticketing-0.ticketing…،ticketing-1.ticketing…)، وأدرج هذه الأسماء فيCLUSTER_PEERSبترتيب الأولوية، واحقنCLUSTER_SELFالخاص بكل pod تلقائيًا عبر downward API (metadata.name).
Ctrl+C) — يؤدي التسليم (handoff) إلى ترقية عقدة احتياطية وانتقال العملاء إليها.sarolab/ticketing · Github: saro-lab/ticketing