وثائق أصول Core

توثيق محرك حالة العالم الحتمي ومراجع API.

وثائق بوابة القرار

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

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

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

تأكد من أنه يمكنك تشغيل كلا الخادمين مع تخزين دائم وأن لديك الأذونات اللازمة للكتابة إلى الدلائل المستهدفة. في الإنتاج، يجب أن تكون هذه الدلائل مدعومة ومراقبة.

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

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

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

mkdir -p /var/lib/assetcore/{data,logs,auth/tokens}

سجل الالتزام، ونقاط التحقق، وملفات الرموز ستُخزن هنا. اعتبر هذا الدليل حرجًا من الناحية التشغيلية.

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

أنشئ ملف تكوين write.toml:

[paths]
base_dir = "/var/lib/assetcore"

[server]
host = "0.0.0.0"
port = 8080

[commit_log]
path = "data/commit_log.log"

[commit_log_driver]
checkpoint_path = "data/write.checkpoint.json"

[namespaces]
catalog_backend = "sqlite"
catalog_path = "data/namespace_catalog.sqlite"

[auth]
directory = "auth/tokens"

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

الإعداداتالوصف
server.host/server.portالعنوان والمنفذ للربط
commit_log.pathمكان تخزين سجل الأحداث
commit_log_driver.checkpoint_pathنقطة تفتيش كتابة الديمون
auth.directoryدليل رمز الحامل
namespaces.catalog_pathملف كتالوج مساحة الأسماء SQLite

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

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

[paths]
base_dir = "/var/lib/assetcore"

[server]
address = "0.0.0.0:8081"

[storage]
commit_log_path = "data/commit_log.log"
checkpoint_path = "data/read.checkpoint.json"

[auth]
directory = "auth/tokens"
namespace_catalog_path = "data/namespace_catalog.sqlite"
namespace_catalog_read_only = true

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

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

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

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

curl -H "Authorization: Bearer $ASSETCORE_ADMIN_TOKEN" \
  http://localhost:8080/v1/write/health

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

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

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

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

curl -H "Authorization: Bearer $ASSETCORE_READ_TOKEN" \
  -H "x-assetcore-namespace: $ASSETCORE_NAMESPACE_ID" \
  http://localhost:8081/v1/read/health

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

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

curl -X POST http://localhost:8080/v1/write/namespaces/${ASSETCORE_NAMESPACE_ID}/lifecycle \
  -H "Authorization: Bearer $ASSETCORE_ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"target_state":"provisioned","reason":"deployment bootstrap"}'

curl -X POST http://localhost:8080/v1/write/namespaces/${ASSETCORE_NAMESPACE_ID}/commit \
  -H "Authorization: Bearer $ASSETCORE_WRITE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "operations": [
      {"op": "CreateContainer", "args": {"container_id": 1, "kind": {"type": "balance"}, "owner": null, "policies": null}}
    ]
  }'

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

curl -H "Authorization: Bearer $ASSETCORE_READ_TOKEN" \
  http://localhost:8081/v1/read/namespaces/${ASSETCORE_NAMESPACE_ID}/containers/1

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

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

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

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

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

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

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

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

curl -H "Authorization: Bearer $ASSETCORE_READ_TOKEN" \
  http://localhost:8081/v1/read/namespaces/${ASSETCORE_NAMESPACE_ID}/freshness

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

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

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

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