تدفقات البيانات بين العقد
(القسم: النظام الإيكولوجي والشبكة)
1) الجوهر والأهداف
تدفقات البيانات بين العقد هي قنوات مُدارة للأحداث والحالات والقطع الأثرية بين أدوار النظام الإيكولوجي (المعتمدون/القراء/الفهارس/الجسور/البوابات/المخازن/التحليلات). الأهداف:- القدرة على التنبؤ: التكنولوجيات المستدامة المستقرة حسب التأخير/النجاح/النضارة.
- الموثوقية: مقاومة الخسائر، التكرارات، إعادة التنظيم.
- الأمن والامتثال: التشفير والتوقيعات والإقامة.
- قابلية التوسع: التوزيع الجغرافي، التقسيم، QoS.
2) تصنيف التدفق
1. مستوى التحكم: التكوينات، phicheflags، سياسات التوجيه/الحد.
2. Data Plane - event: domain events ('deposit. '،' دفع تعويضات. «،» الجسر. ').
3. مستوى البيانات - التدفق: تدفقات طويلة العمر (gRPC/WebSocket) للإشارات والمقاييس الحية.
4. الدفعة/الردم: تنزيلات الشرائح التاريخية، والإعادة، واللقطات.
5. التكرار/مضاد الإنتروبيا: مزامنة الحالة، التركيز، تيارات CRDT.
6. القياس عن بُعد/إمكانية الرصد: لا يتداخل النطاق الجانبي للأشعة فوق البنفسجية الرئيسية.
يحتوي كل نوع على فئات QoS وقواعد إعادة/طلب خاصة به.
3) الطوبولوجيا والتوجيه
Hub-and-Speak: محاور إقليمية كإطارات ؛ - عقد الأدوار.
Mesh/P2P: شبكة جزئية للتكرار/النميمة.
Edge-Tiered: بوابات رفيعة الحافة (حد المعدل/ذاكرة التخزين المؤقت) → مجموعات إقليمية سميكة.
التوجيه الجغرافي: قواعد الإقامة Anycast/Latency-Aware LB +.
المفتاح - التقسيم: «التقسيم _ المفتاح = معرف السلسلة» موضوع «الكيان» يعطي ترتيبًا وحجمًا يمكن التنبؤ بهما.
4) النقل والأشكال
HTTP/2/3، gRPC/QUIC - زمن انتقال منخفض، تعدد الإرسال، حافظ.
كافكا/بولسار/ناتس - طوابير مع المثابرة/الأطراف/مجموعات المستهلكين.
WebSocket - ادفع الأحداث والبث المباشر.
التنسيقات: Protobuf/Avro (مخططات ذات تطور)، JSON لواجهات برمجة التطبيقات الخارجية.
عنوان الهاش وإيصالات ميركل للتحقق من النزاهة.
5) الطلب والتسليم والانتهاء
نموذج التسليم:- مرة واحدة على الأقل (الافتراضي ؛ الفراغ/الوفاة المطلوبة).
- تأثير مرة واحدة بالضبط عبر Outbox/Inbox + المستهلك اللطيف.
- الأمر: مضمون داخل الحزب ؛ النظام بين الأحزاب غير مضمون.
- وضع اللمسات الأخيرة: الحالات 'المرصودة → المؤكدة (K) → → غير صالحة (إعادة ترتيب)' ؛ للتفاؤل - نافذة النزاع.
6) الفراغ والتخلص
مفتاح الاختصاص للأحداث:- «الفراغ _ المفتاح = ${chainId}|${block}|${tx}|${logIndex}|${type}»
- مزعج بالمفتاح، TTL من نافذة التفريغ ≥ 72 ساعة.
- بالنسبة للنزاع، الحمولة هي سياسة «مصدر الحقيقة» (الأولوية، النسخة، التوقيع).
- بالنسبة لطلبات HTTP، فإن الرأس هو «Idempotency-Key» + سجل الاستجابة.
7) قوائم الانتظار والضغط الخلفي والحصص
الطوابير: الأطراف حسب المفتاح ؛ DLQ للرسائل «السامة».
الضغط الخلفي: الاعتمادات/الرموز، الحد الأقصى للطيران، قاطع الدائرة.
الحصص/QoS: P0 (حرج)، P1 (منتج)، P2 (سائب). المجمعات المقسمة/حدود RPS/bytes/s/الاشتراكات.
مراقبة القبول: الرفض المبكر للطلبات «باهظة الثمن»، والحراسة حسب النطاق/الحجم.
8) نماذج الاتساق والبيانات
اقرأ - تكتب داخل الحفلة/العقدة.
الاتساق بين الأقاليم/الأطراف.
CRDT لتكرار بعض المجموعات الخالية من النزاعات (العدادات والمجموعات).
لقطات + سجلات للحصول على تمهيد سريع وإعادة تشغيل حتمية.
9) الأمن والثقة
mTLS بين العقد، تثبيت المفتاح، الدوران.
توقيعات الرسائل/الخطاف الشبكي والنوافذ الزمنية والنوافذ المضادة لإعادة التشغيل.
التشفير أثناء التنقل/عند الراحة ؛ الفصل بين المفاتيح الإقليمية.
تقليل PII: الترميز، وحظر البيانات الشخصية في الملصقات/المقاييس.
10) الكفاءة: التغليف والضغط والذاكرة المخبأة
الدفعة: تجميع الرسائل الصغيرة لتقليل النفقات العامة.
الضغط: zstd/gzip مع قواميس آمنة.
النقد: الإجابات السلبية والأدلة «الساخنة» ؛ TTL والإعاقة حسب الحدث.
11) مخططات البيانات (المراجع)
سجل التدفق/القرعة
sql
CREATE TABLE streams (
name TEXT PRIMARY KEY,
partitions INT,
qos TEXT, -- P0 P1 P2 retention_days INT,
schema_version TEXT
);
CREATE TABLE offsets (
stream TEXT, partition INT, consumer_group TEXT,
offset BIGINT, updated_at TIMESTAMPTZ,
PRIMARY KEY (stream, partition, consumer_group)
);
سجل الأحداث (مزعج الخصوصية)
sql
CREATE TABLE events_core (
id UUID PRIMARY KEY,
idempotency_key TEXT UNIQUE,
ts TIMESTAMPTZ,
partition_key TEXT,
type TEXT,
payload JSONB,
status TEXT, -- observed confirmed finalized invalidated signature TEXT
);
DLQ/الحجر الصحي
sql
CREATE TABLE dlq (
id UUID PRIMARY KEY,
stream TEXT, partition INT, offset BIGINT,
reason TEXT, payload JSONB, ts TIMESTAMPTZ
);
12) السياسات (YAML)
QoS والحدود
yaml qos:
P0: { ack_timeout_ms: 2000, retries: 3, backoff_ms: [100,400,800], rps_per_org: 1500 }
P1: { ack_timeout_ms: 5000, retries: 2, rps_per_org: 800 }
P2: { best_effort: true, rps_per_org: 200 }
limits:
max_message_bytes: 1048576 max_stream_subscriptions_per_client: 20
الانتهاء والنوافذ
yaml finality:
eth-mainnet: { k: 12 }
polygon: { k: 256 }
optimistic: { k: 0, challenge_minutes: 20 }
التوجيه/الإقامة
yaml routing:
prefer_local_region: true fallback: [nearest_healthy, master_hub]
residency:
eu: ["eu"]
uk: ["uk"]
13) إمكانية الرصد: SLI/SLO
SLI (core):- Latency p95/p99 (ingress→egress, per-stream/QoS).
- معدل النجاح/معدل الانخفاض.
- قائمة الانتظار Lag p95 وتأخر المستهلك حسب الطرف.
- نضارة p95 (ingest→consume).
- Reorg/Invalid Rate (if onchain).
- Dedup Effective (٪ من المأكولات يتم امتصاصها بشكل غبي).
- نسبة الضربات الأرضية (مخدومة محليا).
- P0 latency p95 ≤ 400 mm ؛ النجاح ≥ 99. 95%; Loue-lag p95 ≤ 2 с; النضارة p95 ≤ 60 с.
- كفاءة التخلص ≥ 99٪ ؛ DLQ ≤ 0. 1٪ من حركة المرور.
لوحات القيادة: Streams Core/Lag & Freshness/QoS & Errors/Geo/Security (mTLS/signations).
14) أنماط المستهلك
Outbox/Inbox: النشر الذري والتطبيق الخفي.
تأثير مرة واحدة بالضبط: قم بتخزين آخر مفتاح وإصدار مطبق.
العلامات المائية: بيانات متأخرة.
Idempotent Side-Effects: external questions with only key and response log.
15) أنماط التحلل
الوضع النهائي فقط: نصدر الأحداث النهائية فقط.
مخبأ فقط للكتب المرجعية، تجميد الطرق الثقيلة.
خنق P2 و «وضع النظام الغذائي» للتدفقات (معدل تحديث منخفض).
اقرأ فقط لواجهات برمجة التطبيقات الثانوية.
16) الإطلاقات والهجرات الخالية من التوقف
الأزرق الأخضر/الكناري من قبل التدفقات والمستهلكين.
المخطط أولا: تضاف الحقول فقط ؛ MAJOR - نسخ متوازية من المواضيع.
هجرات التعويض: مستهلكو الظل، مقارنة التأخير/النجاح، التبديل.
17) لوائح التشغيل
يوميًا: تقرير SLO (زمن الوصول/النجاح/التأخير/النضارة)، تدقيق التوقيع، فحص DLQ.
أسبوعيًا: مراجعة الدفعات/الحصص، اختبار DR (bootstrap من لقطة)، تحليل كفاءة Dedup.
شهريًا: اختبارات الفوضى (فقدان/نفث، فشل سمسار، إعادة انفجار)، مراجعة النوافذ النهائية.
قبل الإصدار: كناري ≥120 دقيقة، بوابات SLO، خطة التراجع.
18) حوادث قواعد اللعبة
ألف - انفجار طابور التأخير/تأخر المستهلك
1. زيادة المستهلكين/KEDA ؛ (2) إعادة توزيع الأطراف ؛ 3) تجميد الوظائف برتبة ف-2 والوظائف بالجملة ؛ 4) تحليل المفاتيح «الساخنة».
B. Growth of P95 Latency P0
1. P2-throttle، تحديد أولويات الرتبة ف-0 ؛ 2) البوابات/السماسرة ؛ 3) مخبأ للكتب المرجعية فقط ؛ 4) الطرد الخارجي.
C. High DLQ/dembing
1. تحقق من مفتاح الخصوصية/TTL ؛ 2) تعزيز التخلص ؛ 3) الحد من صخب المنتج ؛ 4) إعادة التشغيل بعد الإصلاح.
دال - مخططات/عقود الانجراف
1. تمكين وضع صارم (قطع غير صحيح) ؛ 2) إخطار المنتج ؛ 3) تحرير المحول ؛ 4) تحديث البطانات.
هاء - انتهاك الإقامة/التوقيعات
1. وحدة التصدير/القناة ؛ (2) تناوب المفاتيح/السيرت ؛ (3) مراجعة الحسابات والتشريح ؛ 4) تحديث السياسات.
19) قائمة التنفيذ المرجعية
1. حدد أنواع التيار ومفتاح التقسيم.
2. تمكين التطرف/التخلص والانتهاء مع نوافذ K/النزاع.
3. ضبط قوائم الانتظار، QoS، الحصص، والضغط الخلفي.
4. تشغيل mTLS/التوقيعات وسياسة الإقامة.
5. أدخل المخططات/السجلات (التدفقات، التعويضات، dlq) والقياس عن بعد SLI/SLO.
6. تنظيم هجرات دائرة الكناري/الأزرق والأخضر والخالية من التوقف.
7. اعمل على أوضاع التحلل وكتب اللعب الخاصة بالحوادث.
20) مسرد
الضغط الخلفي - التحكم في حمل المدخلات (الاعتمادات/الرموز/الحدود).
DLQ - «قائمة انتظار ميتة» لرسائل المشكلة.
CRDT - هياكل البيانات مع حل النزاعات دون تنسيق.
النهاية - عدم الرجوع عن الحدث/الحالة.
تأثير مرة واحدة بالضبط - نتيجة آمنة متكررة على التسليم مرة واحدة على الأقل.
Watermark - علامة معالجة التقدم للأحداث المتأخرة.
الطرد الخارجي - استبعاد الحالات المتدهورة من المسبح.
خلاصة القول: تدفقات البيانات بين العقد ليست مجرد «قائمة انتظار ومستمع»، ولكنها نظام نظامي للنظام، والانتهاء، والخصوصية، والأمن، وقابلية المراقبة. تعطي مفاتيح التقسيم القياسية، وسجل الجودة/الحصص، والمخططات الصارمة، والمكاتب المحلية، جنبًا إلى جنب مع أنماط التدهور وكتيبات اللعب، قنوات نقل البيانات المستقرة للنظام الإيكولوجي على نطاق واسع وتحت المراجعة.