يستخدم سليديشار ملفات تعريف الارتباط لتحسين الأداء الوظيفي والأداء، ولتزويدك بالإعلانات ذات الصلة. إذا تابعت تصفح الموقع، فإنك توافق على استخدام ملفات تعريف الارتباط على هذا الموقع. راجع اتفاقية المستخدم وسياسة الخصوصية. يستخدم سليديشار ملفات تعريف الارتباط لتحسين الأداء الوظيفي والأداء، ولتزويدك بالإعلانات ذات الصلة. إذا تابعت تصفح الموقع، فإنك توافق على استخدام ملفات تعريف الارتباط على هذا الموقع. راجع سياسة الخصوصية واتفاقية المستخدم للحصول على التفاصيل. استكشاف جميع المواضيع المفضلة لديك في التطبيق سليديشار الحصول على التطبيق سليديشار إلى حفظ لفي وقت لاحق حتى متواجد حاليا متابعة إلى موقع الجوال تحميل تسجيل الدخول الاشتراك انقر نقرا مزدوجا للتصغير نظام تجارة الدخل الثابت هندسة مشاركة هذا سليديشار لينكيدين كوربوراتيون كوبي 2017 ذي لماكس العمارة على مدى السنوات القليلة الماضية سنوات نستمر في السمع أن الغداء مجانا هو over1 - نحن لا يمكن أن نتوقع زيادات في سرعة وحدة المعالجة المركزية الفردية. لذلك لكتابة رمز سريع نحن بحاجة إلى استخدام صراحة معالجات متعددة مع البرمجيات المتزامنة. هذه ليست أخبار جيدة - كتابة رمز المتزامنة من الصعب جدا. الأقفال و سيمافوريس من الصعب أن العقل حول ويصعب اختبار - وهذا يعني أننا ننفق المزيد من الوقت القلق حول إرضاء الكمبيوتر من نحن حل مشكلة المجال. وتهدف نماذج التزامن المختلفة، مثل الممثلين وذاكرة المعاملات البرمجية، إلى جعل هذا الأمر أسهل - ولكن لا يزال هناك عبء يقدم الخلل والتعقيد. لذلك كنت مفتونا لسماع الحديث في كيوكون لندن في مارس من العام الماضي من لماكس. لماكس هو منصة التداول المالي التجزئة الجديدة. الابتكار في مجال الأعمال هو أنه هو منصة التجزئة - السماح لأي شخص للتجارة في مجموعة من المنتجات المشتقة المالية 2. منصة التداول مثل هذا يحتاج الكمون المنخفض جدا - الصفقات يجب معالجتها بسرعة لأن السوق يتحرك بسرعة. وتضيف منصة التجزئة تعقيدا لأنه عليه أن يفعل ذلك لكثير من الناس. وبالتالي فإن النتيجة هي عدد أكبر من المستخدمين، مع الكثير من الصفقات، وكلها تحتاج إلى معالجة بسرعة. ونظرا للتحول إلى التفكير متعددة النوى، وهذا النوع من الأداء تطلبا من الطبيعي أن تشير إلى نموذج البرمجة المتزامنة صراحة - وكان هذا في الواقع نقطة البداية. ولكن الشيء الذي حصل على اهتمام الناس في كيوكون كان هذا ليس حيث انتهى بهم المطاف. في الواقع أنها انتهى بها القيام بكل منطق الأعمال لمنصاتهم: جميع الصفقات، من جميع العملاء، في جميع الأسواق - على موضوع واحد. خيط سنقوم بمعالجة 6 مليون طلب في الثانية باستخدام أجهزة السلع .4 معالجة الكثير من المعاملات مع الكمون المنخفض وأي من تعقيدات التعليمات البرمجية المتزامنة - كيف يمكنني مقاومة الحفر إلى ذلك لحسن الحظ اختلاف آخر لماكس له للشركات المالية الأخرى هو أن فهم سعداء جدا للحديث عن قراراتهم التكنولوجية. حتى الآن وقد تم لماكس في الإنتاج لفترة من الوقت وقتها لاستكشاف تصميمها رائعة. الهيكل العام الشكل 1: الهندسة المعمارية لماكس في ثلاث النقط على مستوى أعلى، والهندسة المعمارية ثلاثة أجزاء منطق منطق المعالج 5 المدخلات ديسروبتور الإخراج الناتج كما يوحي اسمها، معالج منطق الأعمال يعالج كل منطق الأعمال في التطبيق. كما أشرت أعلاه، فإنه يفعل هذا كبرنامج جافا ترابط واحد الذي يتفاعل مع يدعو المكالمات وتنتج أحداث الإخراج. وبالتالي برنامج جافا بسيط الذي لا يتطلب أي أطر منصة لتشغيل أخرى من جفم نفسها، والذي يسمح لها أن تكون تشغيلها بسهولة في بيئات الاختبار. على الرغم من أن منطق الأعمال المعالج يمكن تشغيل في بيئة بسيطة للاختبار، وهناك الكوريغرافيا بدلا أكثر تشارك للحصول عليه لتشغيل في إعداد الإنتاج. تحتاج رسائل الإدخال إلى أن يتم إيقاف تشغيلها من بوابة شبكة وغير مقسمة، ومكررة، و جورنالد. ويلزم تنظيم رسائل المخرجات للشبكة. يتم التعامل مع هذه المهام من قبل المخرجات المدخلات والمخرجات. على عكس معالج منطق الأعمال، وهذه هي عناصر متزامنة، لأنها تنطوي على عمليات إو التي هي على حد سواء بطيئة ومستقلة. صممت وصنعت خصيصا ل لماكس، ولكنها (مثل العمارة الشاملة) قابلة للتطبيق في مكان آخر. معالج منطق الأعمال حفظ كل شيء في الذاكرة معالج منطق الأعمال يأخذ رسائل الإدخال بالتتابع (في شكل استدعاء الأسلوب)، ويدير منطق الأعمال على ذلك، وتنبعث أحداث الإخراج. وهي تعمل تماما في الذاكرة، لا توجد قاعدة بيانات أو غيرها من مخزن دائم. حفظ جميع البيانات في الذاكرة اثنين من الفوائد الهامة. أولا لها سريع - ثيريس أي قاعدة بيانات لتوفير إو بطيئة للوصول، كما لا يوجد أي سلوك المعاملات لتنفيذ منذ يتم كل معالجة بالتتابع. والميزة الثانية هي أنه يبسط البرمجة - ثيريس لا رسم الخرائط أوبجكتريلاتيونال القيام به. يمكن كتابة كافة التعليمات البرمجية باستخدام نموذج كائن جافا دون الحاجة إلى تقديم أي تنازلات لرسم الخرائط إلى قاعدة بيانات. استخدام بنية في الذاكرة له نتيجة مهمة - ماذا يحدث إذا تعطل كل شيء حتى النظم الأكثر مرونة هي عرضة لشخص سحب القوة. قلب التعامل مع هذا هو مصادر الحدث - وهو ما يعني أن الحالة الراهنة من منطق منطق المعالج هو مشتق تماما من خلال معالجة الأحداث المدخلات. طالما يتم الاحتفاظ تيار الحدث المدخلات في مخزن دائم (الذي هو واحد من الوظائف من تعطيل ديسروبتور) يمكنك دائما إعادة الحالة الراهنة لمحرك منطق الأعمال عن طريق إعادة الأحداث. وهناك طريقة جيدة لفهم هذا هو التفكير في نظام التحكم في الإصدار. أنظمة التحكم في النسخة هي سلسلة من الإلتزامات، في أي وقت يمكنك بناء نسخة عمل بتطبيق تلك الالتزامات. فس أكثر تعقيدا من منطق منطق المعالج لأنه يجب دعم المتفرعة، في حين أن منطق منطق المعالج هو تسلسل بسيط. لذلك، من الناحية النظرية، يمكنك دائما إعادة بناء حالة المعالج منطق الأعمال عن طريق إعادة معالجة جميع الأحداث. في الممارسة العملية، ومع ذلك، فإن ذلك سوف يستغرق وقتا طويلا إذا كنت بحاجة إلى تدور واحدة تصل. لذلك، تماما كما هو الحال مع أنظمة التحكم الإصدار، يمكن لماكس جعل لقطات من حالة منطق منطق الأعمال واستعادة من لقطات. أنها تأخذ لقطة كل ليلة خلال فترات النشاط المنخفض. إعادة تشغيل "منطق المنطق المعالج" سريع، إعادة التشغيل الكامل - بما في ذلك إعادة تشغيل جفم، تحميل لقطة الأخيرة، واعادتها قيمة أيام من المجلات - يستغرق أقل من دقيقة. لقطات تجعل بدء جديد منطق منطق المعالج أسرع، ولكن ليس بسرعة كافية يجب تحطم منطق منطق الأعمال في 2pm. ونتيجة لماكس يحافظ على متعددة منطق منطق المعالجات تشغيل كل time6. تتم معالجة كل حدث الإدخال من قبل معالجات متعددة، ولكن كل معالج واحد ولكن لديها الإخراج تجاهلها. في حالة فشل المعالج المباشر، يتحول النظام إلى جهاز آخر. هذه القدرة على التعامل مع الفشل عبر هو فائدة أخرى من استخدام مصادر الحدث. من خلال مصادر مصادر في النسخ المتماثلة يمكن التبديل بين المعالجات في مسألة الدقيقة ثانية. فضلا عن أخذ لقطات كل ليلة، فإنها أيضا إعادة تشغيل منطق منطق المعالجات كل ليلة. النسخ المتماثل يسمح لهم للقيام بذلك مع أي وقت التوقف عن العمل، حتى أنها لا تزال في التعامل مع الصفقات 247. لمزيد من الخلفية على إيفنت سورسينغ، راجع مشروع النموذج على موقعي منذ بضع سنوات. المادة هي أكثر تركيزا على التعامل مع العلاقات الزمنية بدلا من الفوائد التي استخدام لماكس، لكنه لا يفسر الفكرة الأساسية. مصدر الحدث هو قيمة لأنه يسمح المعالج لتشغيل تماما في الذاكرة، ولكن لديه ميزة كبيرة أخرى للتشخيص. في حالة حدوث بعض السلوك غير المتوقع، يقوم الفريق بنسخ تسلسل الأحداث إلى بيئتهم التطويرية واعادتها هناك. وهذا يسمح لهم بفحص ما حدث بسهولة أكبر مما هو ممكن في معظم البيئات. وتمتد هذه القدرة التشخيصية لتشخيص الأعمال. هناك بعض المهام التجارية، مثل إدارة المخاطر، التي تتطلب حساب كبير لا حاجة لمعالجة الطلبات. ومن الأمثلة على ذلك الحصول على قائمة بأهم 20 عميلا من خلال بيان المخاطر استنادا إلى مراكز التداول الحالية. يتعامل الفريق مع ذلك من خلال تدور نموذج نطاق مكرر وإجراء الحساب هناك، حيث لن يتداخل مع معالجة النظام الأساسي. يمكن أن يكون لنماذج تحليل البيانات هذه نماذج بيانات بديلة، وأن تبقي مجموعات بيانات مختلفة في الذاكرة، وأن تعمل على أجهزة مختلفة. ضبط الأداء حتى الآن أوضح إيف أن المفتاح لسرعة منطق منطق المعالج يفعل كل شيء بالتتابع، في الذاكرة. مجرد القيام بذلك (ولا شيء حقا غبي) يسمح للمطورين لكتابة التعليمات البرمجية التي يمكن معالجة 10K TPS7. ثم وجدوا أن التركيز على عناصر بسيطة من شفرة جيدة يمكن أن يحقق هذا في نطاق 100K تبس. هذا يحتاج فقط رمز فاكتوريد جيدا والأساليب الصغيرة - وهذا أساسا يسمح هوت سبوت للقيام بعمل أفضل من التحسين و لوحدات المعالجة المركزية لتكون أكثر كفاءة في التخزين المؤقت رمز تشغيله. استغرق الأمر المزيد من الذكاء قليلا لترتفع ترتيب آخر من حيث الحجم. هناك العديد من الأشياء التي وجد فريق لماكس مفيدة للوصول إلى هناك. واحد كان لكتابة تطبيقات مخصصة من مجموعات جافا التي تم تصميمها لتكون صديقة للتخزين المؤقت والحذر مع القمامة 8. مثال على ذلك هو استخدام جافا البدائية الأطوال مفاتيح هاشماب مع مجموعة مكتوبة خصيصا بدعم خريطة تنفيذ (لونغتوبجيكاشماب). وبصفة عامة وجدوا أن اختيار هياكل البيانات غالبا ما يحدث فرقا كبيرا، ومعظم المبرمجين مجرد الاستيلاء على أي قائمة كانوا يستخدمون في المرة الأخيرة بدلا من التفكير في التنفيذ هو الصحيح واحد لهذا السياق .9 تقنية أخرى للوصول إلى هذا المستوى الأعلى من الأداء ووضع الاهتمام في اختبار الأداء. لقد لاحظت منذ فترة طويلة أن الناس يتحدثون كثيرا عن تقنيات لتحسين الأداء، ولكن الشيء الوحيد الذي يحدث فرقا حقا هو لاختبار ذلك. حتى المبرمجين الجيدين جيد جدا في بناء الحجج الأداء التي في نهاية المطاف يجري الخطأ، وبالتالي فإن أفضل المبرمجين يفضلون الدارسين وحالات الاختبار للمضاربة. 10 وقد وجد فريق لماكس أيضا أن كتابة الاختبارات أولا هو الانضباط الفعال جدا لاختبارات الأداء. نموذج البرمجة هذا النمط من المعالجة لا يعرض بعض القيود في طريقة كتابة وتنظيم منطق الأعمال. الأول من ذلك هو أن لديك ندف أي التفاعل مع الخدمات الخارجية. ستكون مكالمة خدمة خارجية بطيئة، ومع وجود مؤشر ترابط واحد سيوقف آلة معالجة الطلب بأكملها. ونتيجة لذلك لا يمكنك إجراء مكالمات إلى الخدمات الخارجية ضمن منطق الأعمال. بدلا من ذلك تحتاج إلى إنهاء هذا التفاعل مع حدث الإخراج، وانتظر حدث إدخال آخر لاستعادته مرة أخرى. سوء استخدام مثال بسيط غير لماكس لتوضيح. تخيل أنك جعل النظام ل هلام الفول عن طريق بطاقة الائتمان. نظام البيع بالتجزئة بسيط من شأنه أن يأخذ معلومات طلبك، واستخدام خدمة التحقق من صحة بطاقة الائتمان للتحقق من رقم بطاقة الائتمان الخاصة بك، ومن ثم تأكيد طلبك - كل ذلك في إطار عملية واحدة. معالجة مؤشر الترابط الخاص بك سيتم حظر أثناء انتظار بطاقة الائتمان إلى أن يتم التحقق، ولكن هذه الكتلة لن تكون طويلة جدا للمستخدم، ويمكن ملقم تشغيل دائما مؤشر ترابط آخر على المعالج أثناء انتظاره. في الهندسة المعمارية لماكس، يمكنك تقسيم هذه العملية إلى اثنين. العملية الأولى سوف التقاط المعلومات النظام والانتهاء عن طريق إخراج الحدث (التحقق من صحة بطاقة الائتمان المطلوبة) لشركة بطاقة الائتمان. ومن ثم سيعمل "معالج منطق الأعمال" على معالجة الأحداث للعملاء الآخرين حتى يحصل على حدث التحقق من بطاقة الائتمان في تيار الحدث المدخلات. عند معالجة هذا الحدث فإنه سيتم تنفيذ مهام التأكيد لهذا الطلب. العمل في هذا النوع من نمط يحركها الحدث، غير متزامن، هو غير عادي إلى حد ما - على الرغم من أن استخدام عدم التزامن لتحسين استجابة التطبيق هو أسلوب مألوف. كما أنه يساعد عملية الأعمال تكون أكثر مرونة، كما يجب أن تكون أكثر وضوحا في التفكير في الأشياء المختلفة التي يمكن أن يحدث مع التطبيق البعيد. وهناك سمة ثانية لنموذج البرمجة تكمن في معالجة الأخطاء. النموذج التقليدي للجلسات والمعاملات قاعدة البيانات يوفر قدرة معالجة الخطأ مفيدة. إذا كان أي شيء على غير ما يرام، من السهل أن رمي بعيدا كل ما حدث حتى الآن في التفاعل. بيانات الدورة عابرة، ويمكن التخلص منها، على حساب بعض تهيج للمستخدم إذا كان في منتصف شيء معقد. إذا حدث خطأ على جانب قاعدة البيانات يمكنك التراجع عن المعاملة. هياكل لماكس في الذاكرة هي مستمرة عبر أحداث الإدخال، لذلك إذا كان هناك خطأ من المهم أن لا تترك تلك الذاكرة في حالة غير متناسقة. ومع ذلك ثيريس لا منشأة التراجع الآلي. ونتيجة لذلك يضع فريق لماكس الكثير من الاهتمام في ضمان الأحداث المدخلات صالحة تماما قبل القيام بأي طفرة في حالة ثابتة في الذاكرة. وقد وجدوا أن الاختبار هو أداة رئيسية في إزالة هذه المشاكل قبل الدخول إلى الإنتاج. المدخلات والمخرجات تعطيل على الرغم من أن منطق الأعمال يحدث في مؤشر ترابط واحد، هناك عدد المهام التي يتعين القيام به قبل أن نتمكن من استدعاء أسلوب عنصر الأعمال. المدخل الأصلي للتجهيز يأتي من السلك في شكل رسالة، يجب أن تكون هذه الرسالة غير مقننة في شكل مناسب ل منطق الأعمال المعالج لاستخدامها. يعتمد إيفنت سورسينغ على الحفاظ على مجلة دائمة لجميع الأحداث المدخلات، لذلك كل رسالة إدخال يحتاج إلى أن يكون دفتر اليومية على متجر دائم. وأخيرا تعتمد الهندسة المعمارية على مجموعة من معالجات منطق الأعمال، لذلك علينا أن نكرر رسائل الإدخال عبر هذه المجموعة. وبالمثل على جانب المخرجات، يتعين تنظيم أحداث الإخراج للإرسال عبر الشبكة. الشكل 2: الأنشطة التي قام بها مضطرب المدخلات (باستخدام أومل النشاط الرسم التخطيطي تدوين) المكرر و جورنالر تنطوي إو، وبالتالي بطيئة نسبيا. بعد كل الفكرة المركزية من منطق منطق المعالج هو أنه يتجنب القيام أي إو. أيضا هذه المهام الثلاث مستقلة نسبيا، كل منهم تحتاج إلى القيام به قبل الأعمال منطق المنطق يعمل على رسالة، ولكن يمكن القيام به في أي أمر. لذلك على خلاف مع منطق منطق المعالج، حيث كل التجارة يغير السوق لحركات لاحقة، هناك تناسب الطبيعي لالتزامن. للتعامل مع هذا التزامن قام فريق لماكس بتطوير مكون التزامن خاص، الذي يطلق عليه ديسروبتور 11. وقد أصدر فريق لماكس شفرة المصدر لل ديسروبتور مع رخصة مفتوحة المصدر. على مستوى الخام يمكن أن نفكر في ديسروبتور كرسم بياني المتعدد من طوابير حيث وضع المنتجين الكائنات على أن يتم إرسالها إلى جميع المستهلكين للاستهلاك الموازي من خلال طوابير المصب منفصلة. عندما تنظر في الداخل ترى أن هذه الشبكة من طوابير هو في الحقيقة بنية بيانات واحدة - المخزن المؤقت الدائري. كل منتج ومستهلك لديه عداد تسلسل للإشارة إلى أي فتحة في المخزن المؤقت الذي يعمل حاليا على. كل برودوسركونسومر يكتب عداد تسلسل الخاصة به ولكن يمكن قراءة عدادات تسلسل الآخرين. بهذه الطريقة يمكن للمنتج قراءة عدادات المستهلكين لضمان فتحة يريد أن يكتب في متاح دون أي أقفال على العدادات. وبالمثل يمكن للمستهلك أن يضمن أنه يعالج الرسائل فقط مرة واحدة يتم المستهلك الآخر معها من خلال مشاهدة العدادات. الشكل 3: تعطل المدخلات ينسق منتج واحد وأربعة مستهلكين مشابهات الإخراج متشابهة ولكن ليس لديهم سوى مستهلكين متتابعين للتنظيم والإخراج (12). وتنظم أحداث الإخراج في عدة مواضيع، بحيث يمكن إرسال الرسائل إلى المستقبلات المهتمة فقط فيهم. كل موضوع ديسروبتور الخاصة بها. وتستخدم المعطلين إيف وصفها في نمط مع منتج واحد ومتعددة المستهلكين، ولكن هذا ليس حد من تصميم ديسروبتور. يمكن أن يعمل المعطل مع العديد من المنتجين أيضا، في هذه الحالة فإنه لا يزال لا يحتاج الأقفال. 13 فائدة من تصميم ديسروبتور هو أنه يجعل من الأسهل بالنسبة للمستهلكين للحاق بسرعة إذا واجهت مشكلة وتتخلف. إذا كان لدى المشكل مشكلة عند المعالجة على الفتحة 15 وتعود عندما يكون المستقبل على الفتحة 31، يمكنه قراءة البيانات من الفواصل الزمنية 16-30 في دفعة واحدة للحاق بالركب. هذه القراءة دفعة من البيانات من ديسروبتور يجعل من السهل على المستهلكين المتخلفة للحاق بسرعة، وبالتالي تقليل الكمون العام. لقد وصفت أشياء هنا، مع كل واحد من جورنالر، المكرر، ونمارشالر - هذا هو في الواقع ما لاكس يفعل. لكن التصميم سيسمح بتشغيل العديد من هذه المكونات. إذا قمت بتشغيل اثنين من الصحفيين ثم واحد سوف تأخذ الفواصل حتى و جورنالر الأخرى سوف تأخذ فتحات غريبة. ويتيح ذلك المزيد من التزامن عمليات إو هذه إذا ما أصبح ذلك ضروريا. المخازن المؤقتة حلقة كبيرة: 20 مليون فتحات العازلة المدخلات و 4 ملايين فتحات لكل من مخازن الإخراج. عدادات تسلسل هي 64 بت طويلة الأعداد الصحيحة التي تزيد مونوتونيكالي حتى كما حلقة فتحات التفاف. 14 يتم تعيين المخزن المؤقت إلى حجم الذي هو قوة اثنين بحيث يمكن للمترجم إجراء عملية معامل فعالة لتعيين من رقم عداد تسلسل إلى رقم الفتحة . ومثل بقية النظام، ارتدت الاضطرابات بين عشية وضحاها. ويتم هذا الارتداد أساسا للقضاء الذاكرة بحيث هناك فرصة أقل من الحدث جمع القمامة باهظة الثمن خلال التداول. (وأعتقد أيضا أنها عادة جيدة لإعادة تشغيل بانتظام، بحيث يمكنك تكرار كيفية القيام بذلك لحالات الطوارئ). وظيفة جورنالرز هو لتخزين جميع الأحداث في شكل دائم، بحيث يمكن أن يعاد استخدامها إذا كان أي شيء على ما يرام. لاكس لا تستخدم قاعدة بيانات لهذا، مجرد نظام الملفات. أنها تيار الأحداث على القرص. من الناحية الحديثة، الأقراص الميكانيكية بطيئة بشكل فظيع للوصول العشوائي، ولكن سريع جدا لتدفق - وبالتالي القرص خط العلامة هو الشريط الجديد. 15 في وقت سابق على ذكر أن لماكس يدير نسخ متعددة من نظامها في مجموعة لدعم الفشل السريع . يحتفظ المكرر هذه العقد متزامنة. جميع الاتصالات في لماكس يستخدم إب المتعدد، لذلك العملاء لا تحتاج إلى معرفة أي عنوان إب هو العقدة الرئيسية. فقط العقدة الرئيسية تستمع مباشرة إلى أحداث الإدخال وتشغيل نسخة متماثلة. يبث المكرر أحداث الإدخال لعقد الرقيق. إذا كانت العقدة الرئيسية تنخفض، سيتم ملاحظة عدم وجود ضربات القلب، عقدة أخرى يصبح سيد، يبدأ معالجة أحداث الإدخال، ويبدأ النسخ المتماثل. كل عقدة لديها ديسروبتور المدخلات الخاصة بها، وبالتالي لديها مجلة خاصة بها ولا يفعله غير النمطية الخاصة بها. وحتى مع تعدد الإرسال إب، لا تزال هناك حاجة إلى النسخ المتماثل لأن رسائل بروتوكول الإنترنت يمكن أن تصل إلى ترتيب مختلف على عقد مختلفة. توفر العقدة الرئيسية تسلسل حتمي لبقية المعالجة. يحول أونمارشالر بيانات الحدث من السلك إلى كائن جافا التي يمكن استخدامها لاستدعاء السلوك على "معالج منطق الأعمال". لذلك، خلافا للمستهلكين الآخرين، فإنه يحتاج إلى تعديل البيانات في المخزن المؤقت الدائري بحيث يمكن تخزين هذا الكائن أونمارشاليد. القاعدة هنا هي أنه يسمح للمستهلكين بالكتابة إلى المخزن المؤقت الدائري، ولكن يمكن لكل حقل قابل للكتابة أن يكون لديه مستهلك مواز واحد يسمح له بالكتابة إليه. وهذا يحافظ على مبدأ وجود كاتب واحد فقط. 16 الشكل 4: العمارة لماكس مع الاضطرابات الموسعة ديسروبتور هو مكون للأغراض العامة التي يمكن استخدامها خارج نظام لماكس. عادة ما تكون الشركات المالية سرية للغاية حول أنظمتها، والحفاظ على الهدوء حتى عن العناصر التي أرينت مرتبطة بأعمالهم. ليس فقط لمكس كان مفتوحا حول العمارة الشاملة، لديهم مفتوحة المصدر رمز ديسروبتور - وهو عمل يجعلني سعيدا جدا. ليس فقط سوف يسمح هذا للمنظمات الأخرى الاستفادة من ديسروبتور، وسوف تسمح أيضا لمزيد من اختبار خصائص التزامن. الطوابير وانعدام التعاطف الميكانيكي اشتهرت الهندسة المعمارية لماكس اهتمام الناس لأنها طريقة مختلفة جدا من الاقتراب من نظام عالي الأداء لما يفكر فيه معظم الناس. حتى الآن تحدث إيف عن كيفية عمله، ولكن خافت دافع كثيرا في لماذا تم تطويره بهذه الطريقة. هذه القصة مثيرة للاهتمام في حد ذاتها، لأن هذا العمارة لم تظهر فقط. استغرق الأمر وقتا طويلا في محاولة بدائل أكثر تقليدية، وإدراك حيث كانت معيبة، قبل أن يستقر الفريق على هذا واحد. معظم أنظمة الأعمال في هذه الأيام لديها بنية أساسية تعتمد على جلسات نشطة متعددة منسقة من خلال قاعدة بيانات المعاملات. وكان فريق لماكس على دراية بهذا النهج، واثقة من أنها لن تعمل لماكس. وقد تم تأسيس هذا التقييم في تجارب بيتفير - الشركة الأم التي أنشأت لماكس. بيتفير هو موقع الرهان الذي يسمح للناس للمراهنة على الأحداث الرياضية. فهو يعالج كميات كبيرة جدا من حركة المرور مع الكثير من الخلاف - الرهانات الرياضية تميل إلى انفجار حول أحداث معينة. لجعل هذا العمل لديهم واحدة من أهم المنشآت قاعدة البيانات في جميع أنحاء وكان عليها أن تفعل العديد من الأعمال غير طبيعية من أجل جعلها تعمل. واستنادا إلى هذه التجربة كانوا يعرفون مدى صعوبة الحفاظ على أداء بيتفايرس وكانوا على يقين من أن هذا النوع من العمارة لن يعمل من أجل الكمون المنخفض جدا الذي يتطلبه موقع تجاري. ونتيجة لذلك كان عليهم أن يجدوا نهجا مختلفا. كان نهجهم الأولي لمتابعة ما يقوله الكثيرون في هذه الأيام - أن للحصول على الأداء العالي تحتاج إلى استخدام التزامن صريح. بالنسبة لهذا السيناريو، يعني هذا السماح بالطلبات التي سيتم معالجتها بواسطة سلاسل عمليات متعددة بالتوازي. ومع ذلك، كما هو الحال في كثير من الأحيان مع التزامن، تأتي صعوبة لأن هذه المواضيع يجب أن التواصل مع بعضها البعض. معالجة أمر تغيير ظروف السوق وهذه الشروط تحتاج إلى أن يتم إبلاغ. وكان النهج الذي استكشفه في وقت مبكر نموذج الممثل وابن عمه سيدا. يعتمد نموذج الممثل على كائنات مستقلة، نشطة مع خيط الخاصة بهم التي تتصل مع بعضها البعض عبر طوابير. كثير من الناس يجدون هذا النوع من نموذج التزامن أسهل بكثير للتعامل مع من محاولة القيام بشيء على أساس تأمين الأوليات. وقد قام الفريق ببناء نموذج نموذجي باستخدام نموذج الممثل وفعل اختبارات الأداء عليه. ما وجدوه هو أن المعالجات قضى المزيد من الوقت إدارة قوائم الانتظار من القيام المنطق الحقيقي للتطبيق. كان الوصول إلى قائمة الانتظار عنق الزجاجة. عند دفع الأداء من هذا القبيل، فإنه يصبح من المهم أن تأخذ في الاعتبار الطريقة التي يتم بناؤها الأجهزة الحديثة. عبارة مارتن طومسون يحب استخدام التعاطف الميكانيكي. هذا المصطلح يأتي من سباق السيارات القيادة ويعكس السائق وجود شعور فطري للسيارة، لذلك هم قادرون على الشعور كيفية الحصول على أفضل للخروج منه. العديد من المبرمجين، وأنا أعترف أنني تقع في هذا المخيم، ليس لديهم الكثير من التعاطف الميكانيكية لكيفية البرمجة تتفاعل مع الأجهزة. ما هو أسوأ من ذلك أن العديد من المبرمجين يعتقدون أن لديهم التعاطف الميكانيكية، ولكن بنيت على مفاهيم كيف الأجهزة المستخدمة في العمل التي هي الآن سنوات عديدة من التاريخ. واحدة من العوامل المهيمنة مع وحدات المعالجة المركزية الحديثة التي تؤثر على الكمون، هو كيف تتفاعل وحدة المعالجة المركزية مع الذاكرة. هذه الأيام الذهاب إلى الذاكرة الرئيسية هي عملية بطيئة جدا في وحدة المعالجة المركزية شروط. وحدات المعالجة المركزية لديها مستويات متعددة من ذاكرة التخزين المؤقت، كل منها هو أسرع بكثير. لذلك لزيادة السرعة التي تريد الحصول على التعليمات البرمجية والبيانات في تلك المخابئ. على مستوى واحد، نموذج الممثل يساعد هنا. يمكنك التفكير في الفاعل ككائن الخاصة التي تتجمع التعليمات البرمجية والبيانات، التي هي وحدة طبيعية للتخزين المؤقت. ولكن الجهات الفاعلة تحتاج إلى التواصل، والتي تفعل من خلال طوابير - ولاحظ فريق لماكس أن طوابير التي تتداخل مع التخزين المؤقت. تفسير يعمل مثل هذا: من أجل وضع بعض البيانات على قائمة الانتظار، تحتاج إلى الكتابة إلى قائمة الانتظار هذه. وبالمثل، لأخذ البيانات من قائمة الانتظار، تحتاج إلى الكتابة إلى قائمة الانتظار لتنفيذ الإزالة. هذا هو الكتابة الخلاف - أكثر من عميل واحد قد تحتاج إلى الكتابة إلى بنية البيانات نفسها. للتعامل مع الكتابة الخلاف طابور غالبا ما تستخدم الأقفال. ولكن إذا تم استخدام قفل، يمكن أن يؤدي إلى تبديل السياق إلى النواة. عندما يحدث هذا المعالج من المرجح أن تفقد البيانات في مخابئ لها. الاستنتاج الذي جاءوا إليه هو أن للحصول على أفضل سلوك التخزين المؤقت، تحتاج إلى تصميم يحتوي على واحد فقط الكتابة الأساسية إلى أي مكان الذاكرة 17. القراء متعددة على ما يرام، والمعالجات غالبا ما تستخدم روابط عالية السرعة الخاصة بين مخابئ الخاصة بهم. ولكن طوابير تفشل مبدأ الكاتب واحد. قاد هذا التحليل فريق لماكس إلى استنتاجين. أولا أنها أدت إلى تصميم ديسروبتور، الذي يتبع بحزم القيد واحد الكاتب. وثانيا أدى إلى فكرة استكشاف نهج منطق الأعمال مترابطة واحد، يسأل عن مدى سرعة خيط واحد يمكن أن تذهب إذا كان تحريرها من إدارة التزامن. جوهر العمل على موضوع واحد، هو التأكد من أن لديك موضوع واحد يعمل على جوهر واحد، مخابئ الاحماء، والوصول إلى الذاكرة قدر الإمكان يذهب إلى مخابئ بدلا من الذاكرة الرئيسية. وهذا يعني أن كل من الشفرة ومجموعة العمل يجب أن تكون على النحو المتواصل. أيضا حفظ الكائنات الصغيرة مع التعليمات البرمجية والبيانات معا يسمح لهم لتبادلها بين مخابئ كوحدة، وتبسيط إدارة ذاكرة التخزين المؤقت ومرة أخرى تحسين الأداء. وكان جزء أساسي من المسار إلى العمارة لماكس استخدام اختبار الأداء. وکان النظر في النهج القائم علی الفاعلین والتخلي عنھ من بناء واختبار الأداء نموذجا أولیا. وبالمثل، تم إجراء الكثير من الخطوات في تحسين أداء المكونات المختلفة من خلال اختبارات الأداء. التعاطف الميكانيكي هو قيمة جدا - فإنه يساعد على تشكيل فرضيات حول ما التحسينات التي يمكن أن تجعل، ويرشدك إلى إعادة توجيه الخطوات بدلا من الخلف - ولكن في نهاية الاختبار يعطي لك أدلة مقنعة. ومع ذلك، فإن اختبار الأداء في هذا النمط ليس موضوعا مفهوما جيدا. بانتظام فريق لماكس يؤكد أن الخروج مع اختبارات الأداء ذات مغزى غالبا ما يكون أصعب من تطوير رمز الإنتاج. مرة أخرى التعاطف الميكانيكية مهم لتطوير الاختبارات الصحيحة. اختبار مكون التزامن منخفض المستوى لا معنى له إلا إذا كنت تأخذ في الاعتبار سلوك التخزين المؤقت لوحدة المعالجة المركزية. درس معين هو أهمية كتابة الاختبارات ضد مكونات فارغة لضمان اختبار الأداء سريع بما فيه الكفاية لقياس حقا ما المكونات الحقيقية تقوم به. كتابة رمز الاختبار السريع ليس أسهل من كتابة رمز الإنتاج السريع و من السهل جدا للحصول على نتائج خاطئة لأن الاختبار ليس بالسرعة التي يحاول المكون في قياس. يجب عليك استخدام هذه العمارة للوهلة الأولى، يبدو أن هذه العمارة لتكون صغيرة جدا. بعد كل السائق الذي أدى إلى أنه كان قادرا على تشغيل الكثير من المعاملات المعقدة مع الكمون المنخفض جدا - معظم التطبيقات لا تحتاج إلى تشغيل في 6 ملايين تبس. ولكن الشيء الذي يفتخر لي حول هذا التطبيق، هو أنها قد انتهى مع التصميم الذي يزيل الكثير من تعقيد البرمجة التي تعاني العديد من مشاريع البرمجيات. النموذج التقليدي من الجلسات المتزامنة المحيطة قاعدة بيانات المعاملات ليست خالية من المتاعب. ثريس عادة جهد غير تافهة الذي يذهب إلى العلاقة مع قاعدة البيانات. أدوات رسم الخرائط أوبجكتيراتيونال يمكن أن تساعد كثيرا من ألم التعامل مع قاعدة بيانات، لكنها لا تتعامل مع كل شيء. معظم ضبط الأداء من تطبيقات المؤسسة ينطوي فوتزينغ حولها مع سكل. في هذه الأيام، يمكنك الحصول على المزيد من الذاكرة الرئيسية في الخوادم الخاصة بك مما يمكن لنا الرجال القديمة الحصول على مساحة القرص. المزيد والمزيد من التطبيقات هي قادرة تماما على وضع كل عملهم في الذاكرة الرئيسية - وبالتالي القضاء على مصدر كل من التعقيد والبطء. يوفر الحدث مصادر وسيلة لحل مشكلة المتانة لنظام في الذاكرة، تشغيل كل شيء في موضوع واحد يحل مشكلة التزامن. تجربة لماكس تشير إلى أنه طالما كنت بحاجة إلى أقل من بضعة ملايين تبس، سيكون لديك ما يكفي من الأداء الارتفاع. هناك تداخل كبير هنا مع الاهتمام المتزايد في ككرس. الحدث مصدرها، في الذاكرة المعالج هو خيار طبيعي للجانب الأوامر من نظام كرس. (على الرغم من أن فريق لماكس لا يستخدم حاليا سكرس). لذلك ما يدل على أنك لا ينبغي أن تنخفض هذا المسار هذا هو دائما أسئلة صعبة للأساليب غير معروفة مثل هذا، منذ مهنة يحتاج الى مزيد من الوقت لاستكشاف حدوده. ولكن نقطة البداية هي التفكير في الخصائص التي تشجع على الهندسة المعمارية. أحد السمات المميزة هو أن هذا المجال متصل حيث معالجة معاملة واحدة لديها دائما القدرة على تغيير كيفية معالجة التالية. مع المعاملات التي هي أكثر استقلالية عن بعضها البعض، ثيريس أقل حاجة إلى التنسيق، وذلك باستخدام المعالجات منفصلة تعمل في موازاة يصبح أكثر جاذبية. يركز لماكس على معرفة عواقب كيف تغير الأحداث العالم. العديد من المواقع هي أكثر حول اتخاذ مخزن القائمة من المعلومات وتقديم مجموعات مختلفة من تلك المعلومات إلى العديد من مقل العيون كما يمكن أن تجد - على سبيل المثال التفكير في أي موقع وسائل الإعلام. هنا التحدي المعماري غالبا ما يركز على الحصول على مخابئ الخاصة بك الحق. سمة أخرى من لماكس هو أن هذا هو نظام الخلفية، لذلك من المعقول النظر في مدى قابلية للتطبيق على شيء يعمل في وضع تفاعلي. ويساعدنا تطبيق الويب بشكل متزايد على التعود على أنظمة الخادم التي تتفاعل مع الطلبات، وهو جانب لا يتلاءم بشكل جيد مع هذه البنية. حيث يذهب هذا العمارة أبعد من معظم هذه الأنظمة هو استخدامه المطلق للاتصالات غير المتزامنة، مما أدى إلى تغييرات على نموذج البرمجة التي أوضحت سابقا. وستستغرق هذه التغييرات بعض التعود على معظم الفرق. معظم الناس يميلون إلى التفكير في البرمجة في شروط متزامنة ولا تستخدم للتعامل مع أسينكروني. ومع ذلك، فمن الطبيعي أن يكون التواصل غير المتزامن أداة أساسية للاستجابة. سيكون من المثير للاهتمام معرفة ما إذا كان الاستخدام الأوسع للاتصالات غير المتزامنة في عالم جافا سكريبت، مع أجاكس و node. js، سيشجع المزيد من الأشخاص على التحقيق في هذا النمط. ووجد فريق لمكس أنه في حين استغرق قليلا من الوقت للتكيف مع نمط غير متزامن، سرعان ما أصبحت طبيعية وغالبا ما تكون أسهل. كان التعامل مع الأخطاء بشكل خاص أسهل بكثير للتعامل مع هذا النهج. فريق لماكس يشعر بالتأكيد أن أيام قاعدة بيانات المعاملات التنسيق مرقمة. حقيقة أن يمكنك كتابة البرامج بسهولة أكبر باستخدام هذا النوع من الهندسة المعمارية وأنه يعمل بسرعة أكبر يزيل الكثير من التبرير لقاعدة البيانات المركزية التقليدية. من جهتي، أجد هذه قصة مثيرة جدا. الكثير من هدفي هو التركيز على البرمجيات التي نماذج المجالات المعقدة. الهندسة المعمارية مثل هذا يوفر فصل جيد من المخاوف، مما يسمح للناس للتركيز على تصميم يحركها المجال والحفاظ على الكثير من تعقيد منصة فصل جيدا. وكان اقتران وثيقة بين كائنات المجال وقواعد البيانات دائما تهيج - نهج مثل هذا يشير إلى وسيلة للخروج. إذا وجدت هذه المقالة مفيدة، يرجى تقاسمها. وأنا أقدر ردود الفعل والتشجيع هناك في الواقع سوى 3 كتل رئيسية في نظام ألغو التجارية. 1. معالج بيانات السوق (على سبيل المثال، معالج فاست) 2. وحدة الإستراتيجية (مثل استراتيجية كروسوفر) 3. موجه التوجيه (على سبيل المثال موجه فيكس) يمكنك إضافة عمليات فحص المخاطر إما في وحدة الإستراتيجية أو وحدة موجه الطلب أو كليهما. طالما تدفق البيانات الخاصة بك هو الصحيح، يجب أن تكون جيدة للذهاب. تذكر أنك تصميم المنشطات الأمفيتامينية للحد الأدنى من الكمون، وإضافة المزيد من الطبقات أو التعقيد سيأتي على حساب الكمون. الحد الأدنى من الهندسة المعمارية أتس وإذا قمت بإضافة أجراس وصفارات، فإنه سيكون على النحو التالي: إذا كنت مهتما أيضا في نيتي-غريت من تنفيذ الهندسة المذكورة أعلاه، يجب أن تبقي الأمور التالية في الاعتبار. تجنب لوكسموتكسس. في حال كان لديك لاستخدامه، في محاولة استبدالها مع هياكل لا قفل باستخدام الذرات. There are couple of libraries available for lockless data structures ( e. g. libcds, concurrency kit etc). C-11 supports std::atomic. and you should strive to use them as well. Avoid whats done in QuickFIX. Its written for safetyflexibilityreusability as object (lock) creation and destruction is done for each invocation of any message to router. Surely no way to write a latency sensitive code. No runtime memory allocation. runtime pathway should use customized and lock-free memory management with pre-allocated memory pool. All the initialization can be done in constructors. Tight coupling. Threading model, IO model and memory management should be designed to collaborate with each other to achieve best overall performance. This goes against the OOP concept of loose coupling, but its necessary to avoid runtime cost of dynamic polymorphism. Use Templates. In the same vein, I would also suggest you look at C templatization to achieve flexibility of code. OSHardware optimization: Finally, you should look to work with Linux RT Kernel and Solarflare network card with OpenOnLoad driver for achieving minimum latency. you can further look to isolate the cpu and run your program on that particular core. And finally the public API which you would need to expose to strategy developers. I would like this to be the minimal set which would encapsulate all the complexity of that particular exchangedestination. class OrderRouter public: virtual bool sendNewOrd(OrderInfo) 0 virtual bool sendRplOrd(OrderInfo) 0 virtual bool sendCxlOrd(OrderInfo) 0 virtualBut this means that the OrderInfo Class needs to have ALL the details required by the destinationexchange. In general, the exchanges requires the same kind of information, but as you go along and support more exchangesdestinations you would find yourself adding more variables in this class. The following are the important questionschallenges you would need to ask yourself : 1. Multi-process architecture or Multi-Threaded architecture . whether to build one monolithic process with multiple threads, or write several processes. The cost of multiple process is message passing latency, while the cost for multiple threaded single process is that any failure may bring down the whole system. 2. Message passing : while you can choose from plethora of options, you are restricted by latency consideration. Fastest IPC would be shared memory, but then how would you do the synchronization spend some time with these two questions because they would be the building block on which your architecture stands. Edit: FIX and FAST Regarding popularstandard protocol, FIX is for sending orders and FAST is for market data. Having said that, most exchanges have their own native protocol which is faster than FIX, because FIX is generally implemented on top of their native protocol. But they still support FIX adds to speed of deployment. On the other hand, while FIX is adopted by most of exchanges, FAST does not enjoy such wide acceptance. If anything, there would be only a handful of exchange adopting it. Most of them either send over FIX itself ( low latency ), or use their own native binary protocol. مثلا In India, NSE, BSE and MCXMCXSX, all the three exchanges gives you FIX protocol in addition to native protocol, but only BSE gives you FAST for market data. And that is also moving from FAST to native with introduction of EOBI. you can extrapolate the same thing to other exchanges. 3.7k Views middot View Upvotes middot Not for Reproduction As John mentioned, OMS is the crux of any trading platform and you should start from researching about it. You would have to spend time to determine your trade lifecycle, events and features you want to embed on the OMS and the ones you want your Algo Engine to handle. Metcetera offers an open source OMS, I haven039t used it personally but it039s one of the few in the market. The next thing you should look at is providing an interface to source data in and push it out. This is for a client order entry system to throw in the order details and Algo engine to source it. A lot of Sell Side OMS039s use a combination of proprietary programs written in JavaC using FIX. FIX protocol allows you to communicate realtime across systems in a simplified amp pre-defined message format laid down by the FIX protocol community. Go to The FIX Protocol Organization gt Home page to read more about it. Also looks at Open Source FIX Engine. an open source implementation of the FIX engine. Next comes a Market Data interface to source realtime time security market information, data ranging from HighLowOpenClose to Best BidBest Ask, Total traded volume, Last price, Last volume, Bid quotes, Ask quotes etc. The information you seek really depends upon the type of strategy you wish to implement. I believe Interactive Broker provides a realtime data feed via FIX. Exchange connectivity is next where your Algo interprets the signals, create an order and routes to an Exchange or ECN. Developing it in-house could be tough as you would need to work out Exchange membership, certify your platform and pay a regular membership fee. A cheaper way is to use a broker API (like IB) and route the order through them. Historical data is of essence too as you might want to compare the current market behavior with its historical values. Parameters like average spread, VWAP profiles, average daily volume etc may be required to influence decision making. You can have it on database (preferred) but if speed of the essence then download it on the server cache when you begin your program. Once your peripheral systems are setup, you can start developing your algo program the way you want it to work. This basic infrastructure would allow you to input a parent algo order, read market data, react to the signals but generating child orders and placing it on the exchange order book and historical data to influence decision making. The OMS holds the linkage between the parent amp child order, their realtime statuses and updates by the algo or exchange connectivity platform. What you want to implement inside the Algo is completely up to you. 2.1k المشاهدات ميدوت عرض أوبفوتس ميدوت ليس للاستنساخ
No comments:
Post a Comment