يمكن لـ Odyssey توسيع نطاق أداء المعالجة بشكل كبير من خلال تحديد عدد من سلاسل العمليات الإضافية. يكون كل مؤشر ترابط عامل مسؤولاً عن المصادقة والتفويض لطلبات العميل إلى الخادم ومن الخادم إلى العميل. تتشارك جميع سلاسل العمليات العاملة في تجمعات اتصال الخادم العالمية. يلعب التصميم متعدد الخيوط دورًا مهمًا في أداء SSL/TLS
.
يتتبع Odyssey حالة المعاملة الحالية وفي حالة قطع اتصال العميل بشكل غير متوقع، يمكنه إصدار Cancel
الاتصال تلقائيًا والقيام Rollback
المعاملة المهجورة، قبل إعادة اتصال الخادم مرة أخرى إلى تجمع الخادم لإعادة استخدامه. بالإضافة إلى ذلك، يتم تذكر آخر عميل مالك اتصال الخادم لتقليل الحاجة إلى إعداد خيارات العميل في كل تعيين من عميل إلى خادم.
يسمح Odyssey بتعريف تجمعات الاتصال كزوج من Database
User
. يمكن أن يكون لكل تجمع محدد مصادقة منفصلة ووضع تجميع وإعدادات حدود.
يتمتع Odyssey بدعم SSL/TLS
كامل المواصفات وطرق مصادقة شائعة مثل: md5
clear text
لمصادقة العميل والخادم. يدعم Odyssey مصادقة PAM وLDAP، وتعمل هذه الطرق بشكل مشابه clear text
باستثناء أنها تستخدم PAM/LDAP للتحقق من صحة أزواج اسم المستخدم/كلمة المرور. يتحقق PAM اختياريًا من اسم المضيف البعيد المتصل أو عنوان IP. بالإضافة إلى ذلك، فهو يسمح بحظر كل مستخدم لتجمع بشكل منفصل.
تقوم Odyssey بإنشاء معرفات فريدة عالميًا uuid
لاتصالات العميل والخادم. تتضمن أي أحداث سجل واستجابات لأخطاء العميل المعرف، والذي يمكن بعد ذلك استخدامه لتحديد إجراءات العميل وتتبعها بشكل فريد. يمكن لـ Odyssey حفظ أحداث السجل في ملف السجل واستخدام مسجل النظام.
يدعم Odyssey خيارات سطر الأوامر المتعددة. استخدم /path/to/odyssey
--help لرؤية المزيد
تتمتع Odyssey ببنية متطورة غير متزامنة ومتعددة الخيوط يتم تشغيلها بواسطة محرك كوروتين مصنوع خصيصًا: machinarium. الفكرة الرئيسية وراء تصميم coroutine هي جعل التطبيقات غير المتزامنة القائمة على الأحداث تبدو وكأنها مكتوبة بطريقة إجرائية متزامنة بدلاً من استخدام أسلوب رد الاتصال التقليدي.
كان أحد الأهداف الرئيسية هو جعل قاعدة التعليمات البرمجية مفهومة للمطورين الجدد وجعل البنية قابلة للتوسيع بسهولة للتطوير المستقبلي.
مزيد من المعلومات: الهندسة المعمارية والداخلية.
يعمل Odyssey حاليًا على نظام Linux فقط. الأنظمة الأساسية المدعومة هي x86/x86_64.
للبناء سوف تحتاج:
git clone git://github.com/yandex/odyssey.git
cd odyssey
make local_build
قم بتكييف odyssey-dev.conf بعد ذلك:
make local_run
بدلاً عن ذلك:
make console_run
make start-dev-env
قم بإعداد CLion الخاص بك لبناء المشروع في حاوية، يدويًا.