تسلط سلسلة المقالات الضوء على محاولة إنشاء نظام تفاعلي من قِبل شخص واحد بأقل ميزانية ممكنة وفي أقصر وقت ممكن.
أهداف التجربة:
- فهم أعمق للمجال الموضوع وتحسين الخبرة التقنية
- تحديد نقاط القوة والضعف في استخدام اللغات الوظيفية ومشاريع المصادر المفتوحة في تطوير النظم التجارية
تقدم هذه المقالة الجزء التحفيزي من المشروع وتحلل المهمة.
لقد خططت لبدء التجربة في ربيع عام 2019 ، لكن الظروف تحركت في المواعيد النهائية. لذلك ، أعتذر للمشتركين القلائل الذين كانوا ينتظرون مقالات حول هذا الموضوع.
كيف وصلت إلى هذه الحياة؟
عندما أدركت أنني سئمت من روتين مشاريع العمل ، أردت أن أفعل شيئًا غير عادي. لقد نظرت في العديد من الموضوعات والاتجاهات ، والتي كانت عملية تنفيذها بمثابة تحدٍ لي. تمت صياغة المتطلبات الرئيسية للمشروع:
- مجال المعرفة التي تهمني ؛
- الطبيعة الموزعة والمتاحة للغاية للتطبيق ؛
- سعة معلومات عالية وكميات كبيرة من البيانات المخزنة المميزة للتطبيقات كثيفة الاستخدام للبيانات ؛
- الاستفادة القصوى من المشاريع مفتوحة المصدر.
نظرًا لوجود بعض الخبرة بالفعل في تطوير مستودعات بيانات الكائنات ، فقد ولدت الفكرة لتطوير سمة وكتابة تطبيق جديد للتخزين المتوافق مع s3 باستخدام الترميز المتكرر ووظائف التجزئة السريعة. لكنني أردت شيئا أكثر إثارة للاهتمام. من وجهة نظر المطور ، تشعر الأنظمة المالية بالفضول حول عملها في وضع قرب الوقت الحقيقي ، وعدد كبير من التحديثات وكمية البيانات المخزنة. لذلك قررت أن أجعل تطبيقي لنظام التبادل.
حول التبادلات
بمعنى واسع ، البورصة (من lat. Bursa - wallet) هي سوق يقوم فيها البائعون والمشترين بإجراء المعاملات. بناءً على ما هو الأصل المتداول (أداة) ، يتم تحديد تفاصيل البورصة:
- السلع ، بما في ذلك تبادل العمل
- الأوراق المالية
- عملة
- العقود الآجلة
من الناحية التاريخية ، كانت البورصات في الواقع المكان الذي اجتمع فيه المشترون والبائعون والوسطاء (الوسطاء) في الوقت المحدد الذي تتم من خلاله المعاملات.
المهام الرئيسية للتبادل ما يلي:
- تنظيم عملية التبادل التجاري:
- تعريف قواعد التجارة وفقا للقانون المعمول به
- وضع معايير المنتج
- المواد والموظفين
- نشاط المعلومات. توفير معلومات عن أسعار الأدوات والأسواق والشركات ؛
- تطوير العقود النموذجية ؛
- تسوية المنازعات (التحكيم) ؛
- توفير بعض الضمانات لتنفيذ المعاملات.
البورصات الحديثة عبارة عن أرضيات تجارية منظمة تعمل وفقًا لقواعد محددة وتركز على العرض والطلب. كما أن اقتصاد البورصة واضح للغاية ، فكلما زاد حجم المعاملات في البورصة ، ارتفعت مكافأة البورصة مقابل الخدمات المقدمة.
لذا ، فإن السمات العامة للحل مفهومة ، والآن من الضروري الحد من حجم العمل بحيث يمكن تنفيذ الفكرة في غضون فترة زمنية معقولة.
MVP
من الموارد المحدودة يتبع وظائف محدودة من النموذج الأولي. لكن الأمور الحيوية والأساسية تحتاج إلى التنفيذ الكامل.
مشكلة التحلل واختيار العمارة
على الجانب الفني ، فإن التبادل هو نظام انتظار يقوم فيه المشاركون بإنشاء دفق من المكالمات - يقوم النظام ، وفقًا للقواعد المعروفة سابقًا ، بتنفيذ إجراءات عليها.
يجب تنفيذ أوامر التقديم بأقل قدر من الوقت. يجب أن يكون تبادل التسامح مع خطأ ويمكن الوصول إليها للغاية.
نقسم المشروع إلى الخدمة والأجزاء العامة. سيسمح لك جزء الخدمة بإدارة مكونات المنصة وعملية تداول البورصة. يتضمن الجزء العام واجهات تفاعل العملاء: واجهة برمجة تطبيقات الويب ، واجهة برمجة تطبيقات التداول ، نظام الإخطار الفرعي. يعتمد كلا الجزأين على منصة تطبيق موزعة مسؤولة عن قابلية التوسع وموثوقية النظام ككل.
نظرًا لأننا مقيدون بالميزانية ، فسوف نستخدم فقط حلولاً مفتوحة المصدر مجربة لتنظيم تخزين البيانات. بالنسبة لبيانات النظام الساخنة ، يكون Tarantool قابلاً للتطبيق وللبريد PostgreSQL البارد.
سنصور التكوين المخطط للنظام (الصورة قابلة للنقر):
يشعر المرء أن الهندسة المعمارية والتصميم لا يختلفان عن النظم التقليدية. أين التحدي؟ للإجابة ، خذ بعين الاعتبار عملية إنشاء أوامر وإغلاق الصفقات لتبادل العملات.
ترتيب الخلق
- تحقق إذن
- تأكد من أن المستخدم لديه حاليًا أموال كافية لإنشاء طلب.
- إنشاء النظام
- أبلغ المستخدم بالنجاح أو الخطأ
إغلاق الصفقة
- العثور على ترتيب الزوج
- تحقق من كفاية الأموال في ميزانيات الأطراف لإغلاق الصفقة
- إصلاح المعاملة: التحويل بين الحسابات + تحويل عمولة الصرف إلى حساب عمولة الصرف.
- حفظ محفوظات الأوامر المنفذة.
- تحديث بيانات المعلومات: بيانات التداول الخام والبيانات المجمعة للمخططات.
- إخطار جميع الأطراف المهتمة بالمعاملة.
تبدأ الصعوبات عندما ننتقل من متراصة تعمل على نفس الجهاز إلى نظام متسامح للتسامح مع الأخطاء يتم نشره على كتلة. أضع الحد الأدنى من أداء النظام عند مستوى 5 - 7 آلاف معاملة مغلقة في الثانية لكل سوق. هذا يفرض قيودًا إضافية على البنية والتعامل مع البيانات.
وفقًا لمبدأ KISS ، يجب أن يؤدي كل تطبيق فقط تلك الوظائف الضرورية لمعالجة الكيان الذي تم تنفيذه فيه: السوق والحساب والتفويض وما إلى ذلك.
VTrade مبنية على مبادئ القياس الأفقي. يمكن تشغيل كل تطبيق في صيغة الجمع. هذا يتيح لك تحقيق التسامح مع الخطأ والمستوى المطلوب من الأداء.
كومة التكنولوجية
من أجل عدم مضاعفة الانتروبيا ، فإننا نقيّد اللغات والتقنيات المستخدمة.
بالنسبة للخادم ، ستتضمن هذه المجموعة:
- إرلانج. في رأيي ، اللغة المثالية لبناء أشياء البنية التحتية.
- الصدأ. عظيم لأشياء النظام وقضايا التحسين.
- كيو. كقاعدة رئيسية لتخزين البيانات على المدى الطويل
- Tarantool. كتخزين ساخن للبيانات (فقط لوقت MVP)
- Clickhouse. لتحليل السجلات وقدرات التحليل العميق.
- لينكس. يجب أن يدعم النظام التوزيعات الحديثة.
يتم تنفيذ برنامج العميل باستخدام إطار عمل Vue باستخدام Vuex.
نظرًا لأن المشروع يتضمن في البداية عددًا كبيرًا من المكونات ، لضمان المستوى المناسب لجودة الحل النهائي ، سنقوم بكتابة عدد كبير من الاختبارات القائمة على الملكية واختبارات التكامل.
عن الخطط
في المستقبل القريب ، أخطط لتحليل أساسيات النظرية والتعمق في المجالات التالية:
- مذكرات. أنواع ومعالجة الميزات. جوانب تخزين المعلومات التجارية.
- كتاب أوامر. التمثيل المرئي للسوق.
- تاريخ المناقصة. المطبوعات والرسومات والتاريخ الشخصي.
كما يقولون ... إذا كانت مهتمة ، مثل ، الاشتراك)