مبني من المبادئ الأولى

بدون بيئة تشغيل. بدون جامع قمامة. بدون أعباء إطار عمل. كل سطر في Flashstor مكتوب بلغة C11 للتحكم الأقصى في الذاكرة والإدخال/الإخراج وموارد النظام.

الأساس التقني

أربع ركائز للتميز الهندسي

C11 (ISO/IEC 9899:2011)
معيار C حديث مع أنواع _Atomic وstatic_assert وstructs مجهولة. متوافق مع POSIX مع -Wall -Wextra -Wpedantic. مُجمَّع مع -fstack-protector-strong و-D_FORTIFY_SOURCE=3 وRELRO كامل.
Intel ISA-L & ISA-L Crypto
ترميز محو مُسرَّع بـ SIMD (Reed-Solomon على GF(2^8)) مع AVX2/AVX-512 وتشفير AES-256-GCM مُسرَّع بالعتاد عبر AESNI. أسرع حتى 65 مرة من C الصرف.
حلقة أحداث epoll / kqueue
إدخال/إخراج أصلي قائم على الأحداث: epoll على Linux وkqueue على BSD/macOS وevent ports على SunOS. مجموعة خيوط worker قابلة للتكوين (افتراضي: cpu_count × 2) مع مجموعة I/O مخصصة لعمليات الشظايا.
HTTP/2 عبر nghttp2
دعم كامل لـ HTTP/2 عبر TLS (h2 عبر ALPN) ونص واضح (h2c prior-knowledge). Keep-alive HTTP/1.1 مع عدد أقصى قابل للتكوين من الطلبات لكل اتصال (افتراضي: 1,000).

دورة حياة الطلب

كل طلب S3 يتبع خط أنابيب حتمي من أربع مراحل

1

القبول والتحليل

تقبل حلقة الأحداث الاتصال عبر epoll/kqueue. يتم تحليل رؤوس HTTP في مخازن arena مُخصصة مسبقاً. يُفرض مهلة anti-slowloris عند استلام الرؤوس. يتم توجيه الطلب إلى المعالج عبر جدول الإرسال.

2

المصادقة والتفويض

يتم التحقق من توقيع SigV4 باستخدام CRYPTO_memcmp الآمن زمنياً. يتم تقييم سياسة IAM في سياق الطلب مع ذاكرة تخزين مؤقت epoch لكل خيط (معدل إصابة قريب من 100% على اتصالات keep-alive). يتم التحقق من رموز STS.

3

التنفيذ والاستجابة

يتم إرسال العملية إلى المعالج. يتم تجزئة البيانات عبر توجيه CRC32، وترميزها بتقنية erasure coding ISA-L SIMD، وكتابتها على الأقراص بالتوازي عبر مجموعة خيوط I/O. يتم تجميع الاستجابة بإرسال zero-copy عبر writev().

4

التنظيف وإعادة التدوير

يقوم مُخصص arena بتحرير جميع ذاكرة الطلب دفعة واحدة في عملية واحدة — صفر استدعاءات free() فردية. يُعاد الاتصال إلى حلقة الأحداث لإعادة استخدام keep-alive. يتم وضع إدخال سجل التدقيق غير المتزامن في ring buffer SPSC الخالي من الأقفال.

الذاكرة

تخصيص Arena: صفر تجزئة بالتصميم

كل اتصال يحصل على مُخصص arena مخصص بكتل قابلة لإعادة الاستخدام بحجم 64 KiB. جميع التخصيصات لكل طلب تحدث داخل الـ arena. عند اكتمال الطلب، يتم إعادة تعيين الـ arena بالكامل في O(1) — بدون استدعاءات free() لكل كائن، بدون تجزئة، بدون GC.

  • كتل arena بحجم 64 KiB — تُعاد استخدامها عبر الطلبات، ولا تُعاد أبداً لنظام التشغيل
  • ~75 KiB أساسي لكل اتصال (arena + مخازن I/O)
  • تحرير جماعي عند اكتمال الطلب — إعادة تعيين مؤشر واحد
  • وضع التصحيح: تتبع لكل تخصيص مع كشف التسريبات
// مُخصص arena — مبسّط
arena_t *a = arena_create(65536);
// Fast bump allocation
void *buf = arena_alloc(a, size);
void *hdr = arena_alloc(a, hdr_sz);
// Request complete — free everything
arena_reset(a); // O(1), no free()

بنية الكتلة الموزعة

مجموعات erasure موزعة عبر العقد مع إجماع قائم على النصاب

عقدة البوابة

تقبل طلبات S3 API، وتُجري مصادقة SigV4، وتوجه العمليات إلى مجموعة erasure الصحيحة عبر التجزئة الحتمية المبنية على CRC32.

عقدة التخزين

تدير الأقراص المحلية مع تنفيذ vtable xl_storage. تتعامل مع erasure coding والتحقق من bitrot وعمليات I/O على مستوى الشظايا مع عمليات قرص متوازية.

عقدة النظير

تخزين بعيد يمكن الوصول إليه عبر vtable rest_storage عبر HTTP. يشارك في القفل الموزع ونصاب البيانات الوصفية والنسخ المتماثل عبر العقد.

قنوات الاتصال

Port 9000
S3 API
واجهة S3 REST API المواجهة للعميل مع دعم HTTP/1.1 وHTTP/2.
Port 9001
Admin API
واجهة إدارة مع مصادقة رمز حامل HMAC-SHA256 لعمليات الكتلة.
Port Internal
Peer RPC
اتصال REST بين العقد للقفل الموزع ومزامنة البيانات الوصفية والنسخ المتماثل للبيانات.
الأمان

نموذج فصل الامتيازات

يتبع Flashstor مبدأ أقل الامتيازات مع دورة حياة أمنية من أربع مراحل تُقلل سطح الهجوم أثناء التشغيل.

Phase 1

التهيئة كـ Root

  • • ربط المنفذ المميز (مثل 443 لـ HTTPS)
  • • تحميل شهادات TLS من --certs-dir
  • • تهيئة جداول إرسال ISA-L SIMD
Phase 2

إسقاط الامتيازات

  • • التبديل إلى FLASHSTORE_RUN_USER / FLASHSTORE_RUN_GROUP
  • • تعيين PR_SET_NO_NEW_PRIVS على Linux (يمنع إعادة التصعيد)
  • • استخدام نموذج القدرات على SunOS/illumos
Phase 3

تقوية وقت التشغيل

  • • RELRO كامل — لا توجد إدخالات GOT قابلة للكتابة بعد بدء التشغيل
  • • -fstack-protector-strong مع حماية كناري المكدس
  • • سلامة تدفق التحكم (-fcf-protection على x86_64)
  • • -D_FORTIFY_SOURCE=3 لكشف تجاوز المخزن المؤقت
Phase 4

التدقيق والمراقبة

  • • سجلات تدقيق JSON غير متزامنة عبر ring buffer SPSC خالٍ من الأقفال
  • • معرّفات تتبع لكل طلب مع توقيت العمليات
  • • مقاييس Prometheus للأحداث المتعلقة بالأمان

أسئلة تقنية؟ دعنا نتحدث عن البنية.

فريقنا الهندسي متاح لمناقشات تقنية معمقة حول إدارة الذاكرة ونماذج الإدخال/الإخراج وتقوية الأمان وتصميم الأنظمة الموزعة.