GH GambleHub

شحن قاعدة البيانات وتكرارها

(القسم: التكنولوجيا والهياكل الأساسية)

موجز

بالنسبة لمنصات iGaming، نمو حركة المرور (الرهانات والودائع وخطافات الويب PSP وأحداث الألعاب) ومتطلبات التوافر (≈99. 9–99. 99٪) وصل بسرعة إلى حد DB واحد. وتتيح النسخ المتماثلة قياس القراءة الأفقية وتحمل الأخطاء ؛ الشق - القياس الأفقي للسجل والبيانات. المفتاح هو التنازلات الواعية لـ PACELC (بعد الفشل: CA/P، وإلا: Latency vs Consoldency)، و SLOs الواضحة والمخطط/الانضباط الرئيسي.


المصطلحات والنماذج

النسخ - نسخ البيانات بين المواقع.

Leader-Follower (Primary-Replica): يقرأ إدخال واحد → العديد.
Multi-Leader (Active-Active): مداخل في عدة مناطق، نزاعات/دمج.
تكرار الإجماع (Raft/Paxos، NewSQL): سجلات النصاب (Cassandra/Scylla - AP النصاب القانوني، CockroachDB/Yugabyte - CP النصاب).
المزامنة/شبه المزامنة/Async: توازن التأخير مقابل RPO.
التشظي - التقسيم الأفقي للجداول/المفاتيح حسب الشظايا.

Hash-sharding (التوحيد، النطاقات الصعبة).
شحن المدى (النطاقات الرئيسية، مخاطر النهاية الساخنة).
تجزئة ثابتة.
الشحن الجغرافي (حسب المنطقة/الولاية القضائية).
الشحن الوظيفي (حسب المجال: المدفوعات/الأسعار/إدارة العلاقة مع العملاء).


متى وماذا تختار في iGaming

التكرار فقط (بدون شحن) - عندما تكون المشكلة الرئيسية هي القراءة: تغذية الأحداث والتقارير والأدلة العامة. يتم وضع السجلات في قائد واحد، كما يقرأ من النسخ المتماثلة.
الشحن - عندما يكون عنق الزجاجة الكتابي/عنق الزجاجة: تدفق الأسعار، معاملات الميزانية العمومية، الأحداث المحفزة.

متعدد المناطق:
  • كمون اللاعب/PSP → يقرأ محليًا من النسخ المتماثلة.
  • التنظيم (تحديد مواقع البيانات) → الشحن الجغرافي.
  • DR الأقاليمي → نسخة طبق الأصل غير متزامنة + خطة التبديل.

PACELC وخصائص الضمان

CAP: مع شبكة مقسمة، حدد C (الاتساق) أو A (التوافر).
PACELC: إذا لم تكن هناك إخفاقات، اختر بين الكمون (L) والاتساق (C).
الطرق النقدية: عادة ما تكون موجهة نحو C (CP/strict serializable أو Serializable + business impempotency).
نظم فرعية أقل أهمية (نقرات لوغاريتم، أدلة): موجهة نحو L (AP/EC، في نهاية المطاف).


ممارسات التكرار

القائد-المتابع

يكتب → القائد، يقرأ، → يقرأ التحجيم.
اقرأ بعد الكتابة: لعمليات المستخدم، اقرأ من القائد أو انتظر التأخير (تحقق من "آخر _ ملتزم _ lsn'/" انتظر _ لإعادة _ lag").
شبه مزامنة في المسارات الحرجة (تخفيض عدد الموظفين الفنيين المقيمين على حساب زمن الوصول).
Failover: automatic (patroni/raft Council) + سياج (بحيث لا يكون هناك قائد مزدوج).

متعدد القادة

مناسب للمجالات المقسمة والمنازعات المنخفضة (على سبيل المثال المحتوى/الإعدادات)، ولكن ليس لحساب لاعب واحد بدون تدابير خاصة.
دمج السياسات: آخر مكاسب الكتابة، CRDT، قواعد توحيد المجال.

توافق الآراء/قواعد بيانات النصاب

كتابة النصاب (على سبيل المثال «اكتب النصاب القانوني»)، اقرأ النصاب («اقرأ النصاب القانوني») → اتساق قوي/قابل للتكوين.
النظر في زمن الوصول بين المناطق/المناطق وتكلفة النصاب القانوني.


الشحن: الاستراتيجيات والخيارات الرئيسية

كيفية اختيار المفتاح

التوزيع المستقر حسب player_id/ account_id/ bet_id.
تجنب المفاتيح الرتيبة (الزيادة التلقائية) في شحن المدى - الذيل «الساخن».
بالنسبة للمدفوعات - غالبًا «لاعب _ معرف» أو «حساب _ معرف» ؛ للسجلات - 'event _ time' + bucking; للمحتوى - 'المستأجر _ id'.

الاستراتيجية

تجزئة الأرصدة حسب player_id: رصيد تدفق الأسعار/الأرصدة.
الشحن القائم على المدى الزمني للتحليلات/المحفوظات.
الشحن الجغرافي: لاعبو الاتحاد الأوروبي → الاتحاد الأوروبي (الامتثال للقوانين المحلية).
الهجين: التجزئة داخل المنطقة + الجغرافيا حسب الولاية القضائية.

محاربة المفاتيح الساخنة

تمليح المفتاح (أضف الملح/الدلو إلى المفتاح).
خنق الكتابة هو في الأساس طابور أمر (منفذ متسلسل).
تجسيد «المجاميع» (التوازن) في صف منفصل مع قائمة انتظار متسلسلة.


عمليات الشظايا المتقاطعة

تحويل الأموال/التعويض: تجنب 2PC على المسارات الساخنة.
نمط الملحمة: مقسم إلى معاملات محلية + إجراءات تعويضية، وفطنة صعبة وصندوق خارجي.
البروتوكولات 2PC/commit: النقطة المسموح بها (دفعات المكتب الخلفي)، ولكنها باهظة الثمن في زمن الوصول وتحمل الأخطاء.
الإسقاطات: اقرأ نماذج الشاشات عبر النطاقات، محدثة من البث.


المخططات والمؤشرات والتطور

إصدار المخطط: الهجرات من الكومبات الخلفية، والأعلام المميزة على الكود.
فهارس مفاتيح الشحن والاستفسارات المتكررة ؛ تجنب الانضمام المتقاطع (الانضمام المسبق/نزع الطابع الطبيعي).
بالنسبة لمستودعات JSON/الرسو - التحقق من صحة المخططات (JSON-Schema/Protobuf) و TTL للمجموعات «الصاخبة».


التوسع وإعادة التحصين عبر الإنترنت

خطط N≫tekushcheye عدد الشظايا الافتراضية (الفتحات) → إعادة التوازن المرنة.
التجزئة المتسقة أو «العقد الافتراضية» لإضافة العقدة اللينة.

إعادة الشحن عبر الإنترنت:
  • الإدخال المزدوج (القديم + الجديد)، التحقق من الاتساق ؛
  • نسخ خلفية من القطع (النفاية المنطقية/نقل الجدول/استنساخ البث) ؛
  • التبديل بواسطة «علامة» + نافذة المراقبة، ثم التسجيل المزدوج.
  • نقل القائد دون توقف: تبديل الأدوار، واستنزاف الاتصالات.

SLO، إمكانية الملاحظة والتنبيه

SLO كتابة/قراءة: p99 ≤ X ms على الطاولات الساخنة، نسخ متماثلة صالحة ≤ Y ثانية، توافر ≥ Z.
المقاييس: TPS، p95/p99، تأخر النسخ، تعدد القادة، معدل إعادة التجربة، الجمود، انتظار القفل، نسبة إصابة المخبأ، قرص IOPS/زمن الانتظار.
تتبع: «تتبع _ معرف» في طلبات قاعدة البيانات، ارتبط بحافلة الوسيط/الحدث.
استفسارات الكناري والمعاملات الاصطناعية للكشف المبكر عن التحلل.


الأمن والامتثال

التشفير في الراحة والعبور (TLS)، تناوب المفتاح.
RBAC/ACL، التجزئة حسب المجال/المستأجر، مجموعات منفصلة للمدفوعات/LCC.
توطين البيانات (EU/TR/LATAM) - يجمع بين سياسات شحن الأرض والاحتفاظ بها.
مراجعة الحسابات: من والقراءة/القواعد ؛ إخفاء PII ؛ مراجعة حسابات الصادرات.


النسخ الاحتياطية، PITR، DR

نسخ احتياطية كاملة + تدريجية، تخزين خارج الموقع.
PITR (استرداد نقطة زمنية) لمجموعات القادة.

RPO/RTO:
  • المجالات الحرجة (الرصيد/الدفع) - RPO≈0-30 (شبه مزامنة أو شحن متكرر WAL)، RTO ≤ دقيقة مع فشل تلقائي.
  • أقل أهمية - RPO حتى دقائق/ساعات.
  • تمارين DR (يوم اللعبة) ودفتر تشغيل مفتاح موثق.

الأداء والضبط (موجز)

الذاكرة/ذاكرة التخزين المؤقت: زيادة المخازن الاحتياطية (المخازن المؤقتة المشتركة/المسبح المؤقت)، مراقبة ≥ 95٪.
مجلة/محرك: NVMe سريع، حجم منفصل تحت WAL/redo.
تجمع الاتصال (PgBouncer/Hikari).
المخطط/الإحصاء: التحليل التلقائي/الفراغ التلقائي (Postgres)، ضغط/ضبط GC (محركات LSM).
عامل النصاب/النسخة المتماثلة: التوازن بين p99 وتحمل الخطأ.


طوبولوجيات نموذجية للألعاب

1) الأرصدة والمدفوعات (CP-loop)

القائد-المتابع في منطقة اللاعب، شبه متزامن مع نسخة طبق الأصل.
Hash-sharing by 'account _ id'.
القراءات «بعد الكتابة» - من القائد ؛ التوقعات إلى Redis لوقت وصول واجهة برمجة التطبيقات.
Outbox → event bus للحسابات/التحليلات.

2) أحداث الرهان/الألعاب (سجل موجه إلى AP)

شحن المدى حسب الوقت أو التجزئة بواسطة «player _ id» في تخزين العمود/LSM.
نسخ متماثلة غير متزامنة للإبلاغ/مكتب المستشار القانوني.
الاتساق النهائي مقبول، وعرض النطاق الترددي أكثر أهمية.

3) موجزات/إدارة العلاقة مع الزبائن (قراءة متعددة المناطق، التوطين)

الشحن الجغرافي حسب الولاية القضائية، النسخ المتماثلة المحلية للقراءات.
الدخول من خلال أقرب قائد ؛ عبر المناطق - بشكل غير متزامن + حل النزاعات في الميادين غير الحرجة فقط.


أمثلة (مفاهيمية)

Postgres: شحن إعلاني بواسطة "player _ id'

sql
CREATE TABLE player_wallet (
player_id BIGINT NOT NULL,
balance_cents BIGINT NOT NULL,
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
PRIMARY KEY (player_id)
) PARTITION BY HASH (player_id);

CREATE TABLE player_wallet_p0 PARTITION OF player_wallet FOR VALUES WITH (MODULUS 32, REMAINDER 0);
--... p1..p31

-- Репликация: публикация WAL на реплики, синхронность для «горячего» региона.
ALTER SYSTEM SET synchronous_standby_names = 'FIRST 1 (replica_eu1, replica_eu2)';

تسجيل النصاب (زائف)


WRITE CL=QUORUM  -- запись подтверждена большинством реплик
READ CL=LOCAL_QUORUM -- локальный кворум для низкой задержки

ملحمة بدلا من 2PC (مبسطة)

1. شطب الوديعة إلى shard-A (idempotent).
2. إرسال الحدث «تمت إزالته» → خدمة الدفع (shard-B).
3. إذا فشلت الخطوة 2، عوض الخطوة 1 بحدث «العودة».


قائمة التنفيذ المرجعية

1. تحديد مجالات البيانات والمكاتب الإقليمية (p99، المكتب الإقليمي لسياسات الفضاء/المكتب الإقليمي للتكنولوجيا، سجل النسخ المتماثلة).
2. حدد نموذج النسخ المتماثل (القائد/المتابع، النصاب) واستراتيجية الشحن.
3. أصلح مفاتيح الشحن والمخطط (غير قابل للتغيير!).
4. اكتب سياسة القراءة بعد الكتابة واقرأ التوجيه.
5. تصميم إعادة التشخيص عبر الإنترنت (شظايا افتراضية، دخول مزدوج).
6. ضمان الخصوصية والخروج للأحداث/الأوامر.
7. قم بإعداد نسخ احتياطية و PITR و DR وتمارين منتظمة.
8. تشمل إمكانية الملاحظة: التأخر والنصاب القانوني والمفاتيح الساخنة والصراعات.
9. دفتر الوثائق: فشل، انقسام الدماغ، تدهور.
10. قم بإجراء اختبارات التحميل/الفوضى تحت ذروة المباراة.


الأنماط المضادة

قطعة عملاقة واحدة «لكل شيء» و «ثم قطع».
انضم كروس شارد في الطريق الساخن للطلب.
لا توجد سياسة للقراءة بعد الكتابة (الأخطاء العائمة).
هجرات المخططات «كسر» مفاتيح الشحن.
تعدد القادة للحسابات النقدية دون حل صارم للنزاعات.
لا يوجد PITR/DR - غير قادر على التعافي من الخطأ المنطقي.


النتائج

يحل النسخ المتماثل القراءة والمرونة، وتكتب محاليل الشحن والحجم. الهندسة المعمارية الناجحة في iGaming هي تنازلات SLO و PACELC الواضحة، ومفاتيح الشحن المستقرة، والحد الأدنى من التنسيق المتقاطع (ملحمة بدلاً من 2PC)، وانضباط القراءة بعد الكتابة، وإعادة التشغيل عبر الإنترنت بشكل جيد وتمارين DR المنتظمة. هذا النهج يتسع لذروة البطولة، ويتحمل القيود التنظيمية على توطين البيانات ويظل قابلاً للتنبؤ في التشغيل.

Contact

اتصل بنا

تواصل معنا لأي أسئلة أو دعم.نحن دائمًا جاهزون لمساعدتكم!

بدء التكامل

البريد الإلكتروني — إلزامي. تيليغرام أو واتساب — اختياري.

اسمك اختياري
البريد الإلكتروني اختياري
الموضوع اختياري
الرسالة اختياري
Telegram اختياري
@
إذا ذكرت تيليغرام — سنرد عليك هناك أيضًا بالإضافة إلى البريد الإلكتروني.
WhatsApp اختياري
الصيغة: رمز الدولة + الرقم (مثال: +971XXXXXXXXX).

بالنقر على الزر، فإنك توافق على معالجة بياناتك.