أساسيات النشر

هذا الدليل يشرح كيفية نشر عمليات الكتابة والقراءة لـ Asset Core على عقدة واحدة مع تخزين دائم.

المتطلبات المسبقة

  • تم بناء ملفات Asset Core الثنائية (cargo build --release)
  • دليل قابل للكتابة لسجل الالتزام ونقاط التحقق
  • المنافذ 8080 و 8081 متاحة (أو بدائل)

الخطوة 1 - إعداد الأدلة

إنشاء دلائل لحالة دائمة:

mkdir -p /var/lib/assetcore/{logs,checkpoints}

سوف يتم تخزين سجل الالتزام ونقاط التحقق هنا.

الخطوة 2 - تكوين خدمة الكتابة

إنشاء ملف تكوين write.toml:

إرشادات إضافية:

[server]
listen = "0.0.0.0:8080"

[commit_log]
path = "/var/lib/assetcore/logs/commit_log.log"
checkpoint_path = "/var/lib/assetcore/checkpoints/write.checkpoint.json"
flush_interval_ms = 100

[ingress]
queue_capacity = 1000
precheck_workers = 4
max_inflight_commits = 100

الإعدادات الرئيسية:

إرشادات إضافية:

الإعداداتالوصف
listenالعنوان والمنفذ للربط
commit_log.pathمكان تخزين سجل الأحداث
flush_interval_msمدى تكرار fsync (أقل = أكثر متانة)
precheck_workersعمال التحقق المتوازيين

الخطوة 3 - تكوين عملية القراءة

أنشئ ملف تكوين read.toml أو استخدم وسائط سطر الأوامر:

[server]
listen = "0.0.0.0:8081"

[tail]
commit_log = "/var/lib/assetcore/logs/commit_log.log"
checkpoint = "/var/lib/assetcore/checkpoints/read.checkpoint.json"
poll_interval_ms = 10

يجب أن يشير خادم القراءة إلى نفس سجل الالتزام مثل خادم الكتابة.

الخطوة 4 - بدء عملية الكتابة

./target/release/assetcored-write --config write.toml

تحقق من أنه يعمل:

إرشادات إضافية:

curl http://localhost:8080/v1/health

متوقع: {"status": "healthy", ...}

الخطوة 5 - بدء عملية القراءة

إرشادات إضافية:

./target/release/assetcored-read \
  --listen 0.0.0.0:8081 \
  --commit_log /var/lib/assetcore/logs/commit_log.log \
  --checkpoint /var/lib/assetcore/checkpoints/read.checkpoint.json

تحقق من أنه يعمل:

إرشادات إضافية:

curl http://localhost:8081/v1/health

الخطوة 6 - تحقق من الاتصال من النهاية إلى النهاية

أرسل التزام اختبار:

curl -X POST http://localhost:8080/v1/commit \
  -H "Content-Type: application/json" \
  -d '{
    "operations": [
      {"op": "CreateContainer", "args": {"container_id": 1, "kind": "Standard"}}
    ]
  }'

اقرأها مرة أخرى:

curl http://localhost:8081/v1/read/container/1

استكشاف الأخطاء وإصلاحها

”العنوان مستخدم بالفعل”

عملية أخرى تستخدم المنفذ. إما أن توقف تلك العملية أو تغير عنوان listen.

”تم رفض الإذن” في سجل الالتزام

لا يمتلك المستخدم الذي يقوم بتشغيل الـ daemon حق الوصول للكتابة إلى الدليل. تحقق من الملكية:

chown -R assetcore:assetcore /var/lib/assetcore

يظهر برنامج الـ daemon بيانات قديمة

تحقق من نقطة نهاية الانتعاش:

إرشادات إضافية:

curl http://localhost:8081/v1/read/freshness

إذا كان checkpoint_seq متأخراً عن commit_log_seq، فإن خدمة القراءة تتعقب. راقب مقياس التأخير.

استعادة من الأعطال

كلا الخادمين يستعيدان تلقائيًا من نقاط التحقق الخاصة بهما عند إعادة التشغيل. لا حاجة لتدخل يدوي.

الخطوات التالية