Monday 29 January 2018

السندات المتاجرة نظام العمارة


نظم التداول: تصميم النظام الخاص بك - الجزء 1 13 القسم السابق من هذا البرنامج التعليمي نظرت في العناصر التي تشكل نظام التداول وناقش مزايا وعيوب استخدام مثل هذا النظام في بيئة التداول الحية. في هذا القسم، نبني على تلك المعرفة من خلال دراسة الأسواق التي هي مناسبة بشكل خاص لتداول النظام. ثم سوف نلقي نظرة أكثر تعمقا على أنواع مختلفة من أنظمة التداول. التداول في أسواق األسواق المختلفة أسواق األسهم هي السوق األكثر شيوعا في التجارة، ال سيما بين المبتدئين. في هذه الساحة، اللاعبين الكبار مثل وارن بافيت وميريل لينش تهيمن، والقيم التقليدية واستراتيجيات النمو النمو هي إلى حد بعيد الأكثر شيوعا. ومع ذلك، فإن العديد من المؤسسات قد استثمرت كثيرا في تصميم نظم التجارة وتطويرها وتنفيذها. ينضم المستثمرون الأفراد إلى هذا الاتجاه، على الرغم من ببطء. في ما يلي بعض العوامل الرئيسية التي يجب أخذها في الاعتبار عند استخدام أنظمة التداول في أسواق الأسهم: 13 إن الكم الكبير من الأسهم المتاحة يسمح للمتداولين باختبار الأنظمة على العديد من أنواع الأسهم المختلفة - كل شيء من الأسهم المتقلبة للغاية دون وصفة طبية (أوتك) إلى رقائق غير متطايرة. فعالية أنظمة التداول يمكن أن تكون محدودة بسبب انخفاض السيولة في بعض الأسهم، وخاصة أوتك والورق ورقة القضايا. يمكن للجنة أن تأكل في الأرباح الناتجة عن الصفقات الناجحة، ويمكن أن تزيد الخسائر. غالبا ما تتكبد الأسهم المتداولة خارج البورصة والورق الورقي رسوم عمولات إضافية. والنظم التجارية الرئيسية المستخدمة هي تلك التي تبحث عن القيمة - أي النظم التي تستخدم معلمات مختلفة لتحديد ما إذا كان الأمن أقل من قيمتها مقارنة بأدائها السابق أو نظرائها أو السوق بشكل عام. أسواق الصرف الأجنبي سوق الصرف الأجنبي، أو النقد الأجنبي. هي أكبر وأكثر الأسواق سيولة في العالم. وتتجاوز حكومات العالم والبنوك والمؤسسات الكبيرة الاخرى تريليونات الدولارات فى سوق الفوركس كل يوم. تعتمد غالبية التجار المؤسساتيين في البورصة على أنظمة التداول. الشيء نفسه ينطبق على الأفراد في الفوركس، ولكن بعض التجارة على أساس التقارير الاقتصادية أو دفعات الفائدة. هنا بعض العوامل الرئيسية أن نأخذ في الاعتبار عند استخدام أنظمة التداول في سوق الفوركس: السيولة في هذا السوق - نظرا لحجم ضخم - يجعل أنظمة التداول أكثر دقة وفعالية. لا توجد عمولات في هذا السوق، ينتشر فقط. لذلك، أسهل بكثير لجعل العديد من المعاملات دون زيادة التكاليف. وبالمقارنة مع كمية الأسهم أو السلع المتاحة، فإن عدد العملات المتاحة للتجارة محدود. ولكن بسبب توفر أزواج العملات الغريبة - أي العملات من البلدان الصغيرة - فإن النطاق من حيث التقلب ليس بالضرورة محدودا. أنظمة التداول الرئيسية المستخدمة في الفوركس هي تلك التي تتبع الاتجاهات (قول مأثور في السوق هو الاتجاه هو صديقك)، أو الأنظمة التي تشتري أو تبيع على هروب. وذلك لأن المؤشرات الاقتصادية غالبا ما تسبب تحركات أسعار كبيرة في وقت واحد. العقود الآجلة للأسهم، الفوركس، والأسواق السلع كلها تقدم تداول العقود الآجلة. هذا هو وسيلة شعبية لتجارة النظام بسبب ارتفاع كمية من الرافعة المالية المتاحة وزيادة السيولة والتقلب. ومع ذلك، يمكن لهذه العوامل خفض كلتا الطريقتين: فإنها يمكن إما تضخيم المكاسب الخاصة بك أو تضخيم الخسائر الخاصة بك. ولهذا السبب، فإن استخدام العقود الآجلة يحتفظ عادة بتجار النظام الفردي والمؤسسي المتقدمين. وذلك لأن أنظمة التداول قادرة على الاستفادة من سوق العقود الآجلة تتطلب التخصيص أكبر بكثير، واستخدام مؤشرات أكثر تقدما وتستغرق وقتا أطول لتطوير. لذا، ما هو أفضل ما يصل إلى المستثمر الفردي أن تقرر أي السوق هو الأنسب لتداول النظام - لكل منها مزاياه وعيوبه. معظم الناس أكثر دراية بأسواق الأسهم، وهذا الألفة يجعل تطوير نظام التداول أسهل. ومع ذلك، يعتقد عادة أن الفوركس هو منصة متفوقة لتشغيل أنظمة التداول - وخاصة بين التجار الأكثر خبرة. وعلاوة على ذلك، إذا قرر المتداول الاستفادة من زيادة الرافعة المالية والتقلب، فإن البديل الآجل مفتوح دائما. في نهاية المطاف، فإن الخيار يكمن في أيدي المطور النظام. أنماط أنظمة التداول تريند-فولوينغ سيستمز الأسلوب الأكثر شيوعا من نظام التداول هو الاتجاه - نظام المتابعة. وفي شكله الأساسي، ينتظر هذا النظام ببساطة حركة سعرية كبيرة، ثم يشتري أو يبيع في هذا الاتجاه. هذا النوع من البنوك النظام على أمل أن تحركات الأسعار هذه سوف تحافظ على الاتجاه. موفينغ أفيراج سيستمز تستخدم بشكل متكرر في التحليل الفني. المتوسط ​​المتحرك هو مؤشر يبين ببساطة متوسط ​​سعر السهم على مدى فترة من الزمن. ويستمد جوهر الاتجاهات من هذا القياس. الطريقة الأكثر شيوعا لتحديد الدخول والخروج هي كروس أوفر. والمنطق وراء ذلك بسيط: حيث يتم تحديد اتجاه جديد عندما ينخفض ​​السعر فوق أو أدنى من متوسط ​​السعر التاريخي (الاتجاه). هنا هو الرسم البياني الذي يرسم كلا من السعر (الخط الأزرق) و 20 يوما ما (الخط الأحمر) من عب: أنظمة اندلاع المفهوم الأساسي وراء هذا النوع من النظام مشابه لمفهوم نظام المتوسط ​​المتحرك. والفكرة هي أنه عندما يتم إنشاء ارتفاع جديد أو منخفض جديد، فإن حركة السعر من المرجح أن تستمر في اتجاه الاختراق. أحد المؤشرات التي يمكن استخدامها في تحديد الهروب هو تراكب البولينجر باند بسيط. تظهر البولنجر باند متوسطات الأسعار المرتفعة والمنخفضة، وتحدث الانفجارات عندما يلتقي السعر بحافة العصابات. هنا الرسم البياني الذي يخطط السعر (الخط الأزرق) و بولينجر باندز (خطوط رمادية) من ميكروسوفت: عيوب أنظمة تريند التالية: اتخاذ القرار التجريبي المطلوبة - عند تحديد الاتجاهات، هناك دائما عنصر تجريبي للنظر: مدة الاتجاه التاريخي. على سبيل المثال، يمكن أن يكون المتوسط ​​المتحرك خلال ال 20 يوما الماضية أو خلال السنوات الخمس الماضية، لذلك يجب على المطور تحديد أي واحد هو الأفضل للنظام. ومن العوامل الأخرى التي يتعين تحديدها المتوسطات العالية والمنخفضة في أنظمة الاختراق. الطبيعة المتخلفة - المتوسطات المتحركة وأنظمة الاختراق سوف تكون دائما متخلفة. وبعبارة أخرى، فإنها لا يمكن أبدا ضرب أعلى أو أسفل بالضبط الاتجاه. وهذا يؤدي حتما إلى مصادرة الأرباح المحتملة، التي يمكن أن تكون كبيرة في بعض الأحيان. تأثير السياط - من بين قوى السوق التي تضر نجاح الأنظمة التالية الاتجاه، وهذا هو واحد من أكثر شيوعا. ويحدث التأثير السطحي عندما يولد المتوسط ​​المتحرك إشارة خاطئة - أي عندما ينخفض ​​المتوسط ​​إلى المدى، ثم ينعكس فجأة الاتجاه. ويمكن أن يؤدي ذلك إلى خسائر هائلة ما لم يتم استخدام أساليب فعالة لوقف الخسائر وتقنيات إدارة المخاطر. الأسواق الجانبية - النظم التي تتبع الاتجاه هي، بطبيعة الحال، قادرة على كسب المال فقط في الأسواق التي في الواقع الاتجاه. ومع ذلك، تتحرك الأسواق أيضا جانبيا. البقاء ضمن نطاق معين لفترة طويلة من الزمن. قد يحدث تقلب شديد في بعض الأحيان، قد تواجه الأنظمة التي تتبع الاتجاه بعض التقلب الشديد، ولكن يجب على التاجر التمسك بنظامه. إن عدم القدرة على القيام بذلك سيؤدي إلى فشل مؤكد. كونترترند سيستمز في الأساس، فإن الهدف مع نظام كونترترند هو شراء في أدنى مستوى منخفض وبيع على أعلى مستوى عال. والفرق الرئيسي بين هذا والنظام الذي يتبع الاتجاه هو أن نظام الاتجاه المعاكس ليس تصحيحا ذاتيا. وبعبارة أخرى، ليس هناك وقت محدد للخروج من المراكز، وهذا يؤدي إلى احتمال الهبوط غير محدود. أنواع أنظمة كونترترند تعتبر العديد من األنواع المختلفة من األنظمة أنظمة عكسية. والفكرة هنا هي لشراء عندما يبدأ الزخم في اتجاه واحد يتلاشى. وغالبا ما يتم حساب هذا باستخدام مؤشرات التذبذب. على سبيل المثال، يمكن إنشاء إشارة عند مؤشر ستوكاستيك أو مؤشرات القوة النسبية الأخرى تندرج تحت نقاط معينة. هناك أنواع أخرى من أنظمة التداول المعاكس، ولكن كل منهم يشتركون في نفس الهدف الأساسي - لشراء منخفضة وبيع عالية. عيوب كونترترند الأنظمة التالية: E مبيريكال ديسيسيون-ماكينغ ريكيرد - على سبيل المثال، أحد العوامل التي يجب على مطور النظام اتخاذ قرار بشأنها هي النقاط التي تتلاشى فيها مؤشرات القوة النسبية. قد يحدث تقلب شديد - قد تواجه هذه الأنظمة أيضا بعض التقلب الشديد، وعدم القدرة على التمسك بالنظام على الرغم من هذا التقلب سوف يؤدي إلى فشل مؤكد. غير محدود الجانب السلبي - كما ذكر سابقا، هناك احتمال الهبوط غير محدود لأن النظام ليس التصحيح الذاتي (ليس هناك وقت محدد للخروج من المواقف). خاتمة الأسواق الرئيسية التي هي أنظمة التداول المناسبة هي الأسهم، الفوركس والأسواق الآجلة. كل من هذه الأسواق له مزاياه وعيوبه. النوعان الرئيسيان لنظم التداول هما نظامي الاتجاه والاتجاه المعاكس. وعلى الرغم من خلافاتها، فإن كلا النوعين من الأنظمة، في مراحلها التنموية، يتطلبان اتخاذ قرار تجريبي من جانب المطور. كما أن هذه الأنظمة تخضع لتقلبات شديدة وقد يتطلب ذلك بعض القدرة على التحمل - من الضروري أن يلتزم تاجر النظام بنظامه أثناء هذه الأوقات. في الدفعة التالية، نلقي نظرة فاحصة على كيفية تصميم نظام التداول ومناقشة بعض البرامج التي يستخدمها تجار النظام لجعل حياتهم أسهل. أنظمة التداول: تصميم النظام الخاص بك - الجزء 2 أنماط التعلم 187 أنماط التكامل في الممارسة 187 دراسة حالة: نظام التداول السندات (جوناثان سيمون) فمن السهل أن المسافة نفسك من مجموعة كبيرة من أنماط أو لغة نمط. أنماط هي التجريد من فكرة في شكل قابلة لإعادة الاستخدام. في كثير من الأحيان، طبيعة عامة جدا من الأنماط التي تجعلها مفيدة جدا يجعل من الصعب فهم. في بعض الأحيان أفضل شيء للمساعدة في فهم أنماط هو مثال العالم الحقيقي. ليس سيناريو مفتعل لما يمكن أن يحدث ولكن ما يحدث فعلا وما سيحدث. هذا الفصل ينطبق على أنماط لحل المشاكل باستخدام عملية الاكتشاف. النظام الذي سنناقشه هو نظام تداول السندات الذي عملت معه لمدة عامين من التصميم الأولي من خلال الإنتاج. وسوف نستكشف السيناريوهات والمشاكل التي واجهتها وكيفية حلها مع أنماط. وهذا ينطوي على عملية اتخاذ القرار لاختيار نمط، وكذلك كيفية الجمع وضبط أنماط لتتناسب مع احتياجات النظام. ويتم هذا كله مع الأخذ بعين الاعتبار القوى التي واجهتها في النظم الحقيقية بما في ذلك متطلبات الأعمال، وقرارات العميل، والمتطلبات المعمارية والتقنية، فضلا عن تكامل النظام القديم. والقصد من هذا النهج هو توفير فهم أوضح للنماذج نفسها من خلال التطبيق العملي. بناء نظام يقوم بنك استثماري رئيسي في وول ستريت ببناء نظام تسعير السندات في محاولة لتبسيط سير عمل مكتب تداول السندات. حاليا، التجار السندات لديها لإرسال أسعار لعدد كبير من السندات إلى عدة أماكن تجارية مختلفة، ولكل منها واجهة المستخدم الخاصة بها. والهدف من هذا النظام هو تقليل الحد الأدنى من تسعير كل من سنداتهم جنبا إلى جنب مع وظائف تحليلية متقدمة محددة لسوق السندات في واجهة مستخدم مغلفة واحدة. وهذا يعني التكامل والتواصل مع عدة مكونات على مختلف بروتوكولات الاتصال. تدفق مستوى عال من النظام يشبه هذا: أولا، تأتي بيانات السوق في النظام. بيانات السوق هي البيانات المتعلقة بالسعر وغيرها من خصائص السندات التي تمثل ما هو الناس على استعداد لشراء وبيع السندات في السوق الحرة. يتم إرسال بيانات السوق على الفور إلى محرك تحليلات أن يغير البيانات. يشير أناليتيكش إلى الوظائف الرياضية للتطبيقات المالية التي تغير الأسعار وغيرها من سمات السندات. هذه هي الوظائف العامة التي تستخدم المتغيرات الإدخال لتكييف نتائج الدالة إلى رابطة معينة. سيقوم تطبيق العميل الذي سيتم تشغيله على كل سطح مكتب تاجر بتكوين محرك تحليلات على أساس التاجر، والتحكم في تفاصيل التحليلات لكل السندات التاجر هو التسعير. وبمجرد تطبيق التحليلات على بيانات السوق، يتم إرسال البيانات المعدلة إلى أماكن تجارية مختلفة حيث يمكن للمتداولين من الشركات الأخرى شراء أو بيع السندات. العمارة مع الأنماط مع هذه النظرة العامة لسير العمل في النظام، يمكننا أن نقترب من بعض المشاكل المعمارية التي نواجهها أثناء عملية التصميم. دعونا نلقي نظرة على ما نعرفه حتى الآن. يحتاج التجار إلى تطبيق سريع الاستجابة على كل من محطات عمل ويندوز نت و سولاريس. لذلك، قررنا تنفيذ تطبيق العميل كعميل جافا سميكة بسبب استقلالية منصة وقدرته على الاستجابة بسرعة لإدخال المستخدم وبيانات السوق. على جانب الخادم، نحن نرث مكونات C القديمة التي سيستعملها نظامنا. تتواصل مكونات بيانات السوق مع البنية التحتية لرسائل تيبكو إنفورماتيون باص (تيب). نحن نرث المكونات التالية: خادم تغذية بيانات بيانات السوق. ينشر بيانات السوق الواردة إلى تيب. محرك أناليتيكش. ينفذ تحليلات على بيانات السوق الواردة وتبث بيانات السوق المعدلة إلى تيب. خادم المساهمة. ينفذ جميع الاتصالات مع أماكن التداول. أما أماكن التداول فهي مكونات طرف ثالث غير خاضعة لسيطرة البنك. النظام الفرعي لبيانات السوق القديمة النظام الفرعي للمساهمة الموروثة نحن بحاجة إلى أن نقرر كيف ستتواصل الأنظمة الفرعية المنفصلة (عميل جافا السميك وبيانات السوق والمساهمة). يمكننا أن يكون العميل سميكة التواصل مباشرة مع خوادم القديمة، ولكن هذا يتطلب الكثير من منطق الأعمال على العميل. بدلا من ذلك، بناء جيدا زوج من بوابات جافا للتواصل مع الملقمات القديمة وبوابة التسعير لبيانات السوق بوابة مساهمة لإرسال الأسعار إلى أماكن التداول. وهذا سوف يحقق تغليف لطيفة للمنطق الأعمال المتعلقة بهذه المناطق. وفيما يلي المكونات الحالية في النظام. الاتصالات التي تم وضع علامة عليها ك. تشير إلى أننا ما زلنا غير متأكدين من كيفية توصيل بعض المكونات. النظام ومكوناته سؤال الاتصال الأول هو كيفية دمج عميل جافا سميكة ومكونات خادم جافا اثنين من أجل تبادل البيانات. دعونا ننظر إلى أنماط التكامل الأربعة المقترحة في هذا الكتاب: نقل الملفات. قاعدة البيانات المشتركة. استدعاء الإجراء البعيد. والرسائل. يمكننا استبعاد قاعدة البيانات المشتركة على الفور لأننا أردنا إنشاء طبقة من التجريد بين العميل وقاعدة البيانات ولا نريد أن يكون رمز الوصول إلى قاعدة البيانات في العميل. كما يمكن استبعاد نقل الملفات نظرا لأن الحد الأدنى من الكمون مطلوب لضمان إرسال الأسعار الحالية إلى أماكن التداول. هذا يترك لنا مع الاختيار بين الاستدعاء الإجراء البعيد أو الرسائل. توفر منصة جافا المدمج في دعم كل من الاستدعاء الإجراء البعيد والرسائل. يمكن تحقيق التكامل على غرار ريك باستخدام ريموت ميثود إنفوكاتيون (رمي)، كوربا، أو إنتيربريس جافا بينز (إجب). خدمة المراسلة جافا (جمس) هي واجهة برمجة التطبيقات المشتركة لتكامل أسلوب المراسلة. لذلك كلا من أساليب التكامل سهلة التنفيذ في جافا. لذلك سوف تعمل بشكل أفضل لهذا المشروع، استدعاء الإجراء البعيد أو الرسائل. ثيرس مثيل واحد فقط من بوابة التسعير ومثال واحد من بوابة المساهمة في النظام، ولكن عادة العديد من العملاء سميكة الاتصال في وقت واحد إلى هذه الخدمات (واحد لكل تاجر السندات التي يحدث أن يتم تسجيل الدخول في وقت معين). وعلاوة على ذلك، فإن البنك يود أن يكون هذا نظام التسعير العامة التي يمكن استخدامها في التطبيقات الأخرى. لذلك إلى جانب عدد غير معروف من عملاء التفكير، قد يكون هناك عدد غير معروف من التطبيقات الأخرى باستخدام بيانات التسعير الخروج من البوابات. يمكن لعميل سميك (أو تطبيق آخر باستخدام بيانات التسعير) استخدام ريك بسهولة إلى حد ما لإجراء مكالمات إلى البوابات للحصول على بيانات التسعير والاستدعاء للتجهيز. ومع ذلك، سيتم نشر بيانات التسعير باستمرار، وبعض العملاء مهتمون فقط ببعض البيانات، لذلك قد يكون من الصعب الحصول على البيانات ذات الصلة للعملاء المناسبين في الوقت المناسب. يمكن للعملاء استطلاع البوابات، ولكن ذلك سيخلق الكثير من النفقات العامة. وسيكون من الأفضل للبوابات أن تتيح البيانات للزبائن فور توافرها. ومع ذلك، سيتطلب هذا الأمر من كل بوابة تتبع العملاء الناشطين حاليا، والتي تريد بيانات معينة عندئذ، عندما تصبح قطعة جديدة من البيانات متوفرة (والتي ستحدث عدة مرات في الثانية)، سيتعين على البوابة ريك لكل عميل مهتم لتمرير البيانات إلى العميل. من الناحية المثالية، يجب إخطار جميع العملاء في وقت واحد، لذلك يجب أن يتم كل ريك في سلسلة الترابط المتزامنة الخاصة به. هذا يمكن أن تعمل، ولكن هو الحصول على معقدة جدا سريع جدا. الرسائل يبسط إلى حد كبير هذه المشكلة. مع الرسائل. يمكننا تحديد قنوات منفصلة لأنواع مختلفة من بيانات التسعير. ثم، عندما يحصل على بوابة جديدة قطعة من البيانات، فإنه سيتم إضافة رسالة تحتوي على تلك البيانات إلى قناة نشر الاشتراك لهذا النوع من البيانات. وفي الوقت نفسه، فإن جميع العملاء المهتمين في نوع معين من البيانات الاستماع على القناة لهذا النوع. وبهذه الطريقة، يمكن للبوابات بسهولة إرسال بيانات جديدة لمن يهتم، دون الحاجة إلى معرفة عدد تطبيقات المستمع هناك أو ما هي عليه. العملاء لا تزال بحاجة إلى أن تكون قادرة على استدعاء السلوك في بوابات كذلك. نظرا لوجود بوابات اثنين فقط، ويمكن للعميل منع على الأرجح أثناء استدعاء الأسلوب بشكل متزامن، يمكن بسهولة هذه الإدخالات من العميل إلى البوابة التي يمكن تنفيذها باستخدام ريك. ومع ذلك، لأننا نستخدم بالفعل الرسائل للاتصالات من عبارة إلى عميل، الرسائل هي على الأرجح مجرد جيدة وسيلة لتنفيذ الاتصالات من العميل إلى بوابة كذلك. ولذلك، سيتم تحقيق جميع الاتصالات بين البوابات والعملاء من خلال الرسائل. لأن جميع المكونات مكتوبة بلغة جافا، يقدم جمس خيارا سهلا لنظام الرسائل. هذا هو خلق فعال حافلة رسالة أو بنية من شأنها أن تجعل من الممكن لأنظمة المستقبل لدمج مع النظام الحالي مع تغييرات قليلة أو معدومة على البنية التحتية الرسائل. بهذه الطريقة، وظائف الأعمال من التطبيق يمكن استخدامها بسهولة من قبل تطبيق آخر البنك يتطور. مكونات جافا التواصل مع جمس جمس هو مجرد مواصفات ونحن بحاجة إلى اتخاذ قرار بشأن نظام الرسائل المتوافقة مع جمس. قررنا استخدام عب مكسيريز جمس لأن البنك هو متجر عب باستخدام خوادم تطبيقات وبسفهير والعديد من منتجات عب الأخرى. ونتيجة لذلك، سوف نستخدم مكسيريز لأن لدينا بالفعل بنية تحتية للدعم في مكان ورخصة الموقع للمنتج. والسؤال التالي هو كيفية توصيل نظام الرسائل مقسيريز مع خادم مساهمة C مستقل وخوادم بيانات السوق ومحرك أناليتيكش استنادا إلى تيبكو. نحن بحاجة إلى وسيلة للمستهلكين مكسيريز أن يكون الوصول إلى رسائل تيب. ولكن كيف يمكننا استخدام نمط مترجم الرسائل لترجمة رسائل تيب إلى رسائل مكسيريز. على الرغم من أن العميل C ل مكسيريز بمثابة المترجم رسالة. واستخدامه سوف تضحي استقلال خادم جمس. وعلى الرغم من أن شركة تيبكو تمتلك واجهة برمجة تطبيقات جافا، إلا أن المهندس المعماري ومدير العميل رفضوا ذلك. ونتيجة لذلك، يجب التخلي عن نهج "مترجم الرسائل". الجسر من خادم تيب إلى خادم مكسيريز يتطلب الاتصال بين C وجافا. يمكننا استخدام كوربا، ولكن بعد ذلك ماذا عن الرسائل نظرة فاحصة على نمط مترجم الرسائل يظهر أنه يرتبط محول القناة في استخدامه لبروتوكولات الاتصال. قلب محول قناة هو ربط أنظمة غير الرسائل إلى أنظمة المراسلة. زوج من محولات القناة التي تربط اثنين من أنظمة الرسائل هو جسر التراسل. الغرض من جسر الرسائل هو نقل الرسائل من نظام الرسائل واحد إلى آخر. هذا هو بالضبط ما نقوم به مع تعقيد اضافي من لغة جاوة إلى C الاتصالات. يمكننا تنفيذ جسر التراسل عبر لغة باستخدام مزيج من قناة محول s و كوربا. سنقوم ببناء اثنين من خوادم محول قناة خفيفة الوزن، واحدة في C إدارة الاتصالات مع تيب، وواحدة في إدارة الاتصال جافا مع جمس. هذين محول القناة. والتي هي نقطة النهاية رسالة أنفسهم، سوف التواصل مع بعضها البعض عبر كوربا. مثل خيارنا ل مكسيريز، وسوف نستخدم كوربا بدلا من جني لأنه هو معيار الشركة. جسر الرسائل تنفذ ترجمة الرسائل محاكاة فعالة بين أنظمة الرسائل التي تبدو غير متوافقة ولغات مختلفة. رسالة المترجم باستخدام محولات القناة يوضح الرسم البياني التالي تصميم النظام الحالي بما في ذلك البوابات والمكونات الأخرى. هذا مثال جيد على نمط التطبيق. نحن الجمع بين اثنين من قناة محول s مع بروتوكول غير الرسائل لتنفيذ نمط "مترجم الرسالة"، باستخدام نمط واحد فعال لتنفيذ نمط آخر. بالإضافة إلى ذلك، قمنا بتغيير سياق محول القناة لربط اثنين من أنظمة الرسائل مع بروتوكول الترجمة عبر لغة غير الرسائل بدلا من ربط نظام الرسائل إلى نظام غير الرسائل. النظام الحالي مع محولات القناة هيكلة القنوات إن مفتاح العمل مع الأنماط لا يعرف فقط متى يجب استخدام النمط، ولكن أيضا كيفية استخدامها بأقصى قدر من الفعالية. ويجب أن يأخذ كل نمط من أنماط التنفيذ بعين الاعتبار تفاصيل المنصة التكنولوجية فضلا عن معايير التصميم الأخرى. يطبق هذا القسم نفس عملية الاكتشاف للعثور على الاستخدام الأكثر كفاءة لقناة النشر-الاشتراك في سياق خادم بيانات السوق التواصل مع محرك تحليلات. بيانات السوق في الوقت الحقيقي تنشأ مع تغذية بيانات السوق، خادم C الذي يبث بيانات السوق على تيب. يستخدم تغذية بيانات السوق منفصلة نشر قناة الاشتراك لكل السندات هو نشر أسعار ل. قد يبدو هذا الأمر متطرفا قليلا لأن كل سند جديد يحتاج إلى قناة جديدة خاصة به. ولكن هذا ليس شديدا جدا لأنك لا تحتاج فعلا إلى إنشاء قنوات في تيبكو. بدلا من ذلك، يتم الإشارة إلى القنوات بواسطة مجموعة هرمية من أسماء الموضوعات تسمى الموضوعات. ثم يقوم خادم تيبكو بتصفية تدفق رسالة واحدة حسب الموضوع، وإرسال كل موضوع فريد إلى قناة افتراضية واحدة. والنتيجة هي قناة رسالة خفيفة الوزن جدا. يمكننا إنشاء نظام ينشر على عدد قليل من القنوات ويمكن للمشتركين الاستماع فقط للأسعار التي يهتمون بها. وهذا يتطلب من المشتركين استخدام فلتر الرسائل أو المستهلك الانتقائي لتصفية تدفق البيانات بأكمله لأسعار السندات مثيرة للاهتمام، وتحديد ما إذا كان كل رسالة يجب أن تتم معالجتها كما يتم استلامها. وبالنظر إلى أن بيانات السوق تنشر على قنوات مخصصة للسندات، يمكن للمشتركين التسجيل للحصول على التحديثات على سلسلة من السندات. ويسمح ذلك للمشتركين بالترشيح من خلال الاشتراك بشكل انتقائي في القنوات ولا يتلقون سوى تحديثات الاهتمام بدلا من اتخاذ قرار بعد تلقي الرسالة. من المهم أن نلاحظ أن استخدام قنوات متعددة لتجنب تصفية هو استخدام غير قياسي من قنوات الرسائل. في سياق تكنولوجيا تيبكو ومع ذلك، نحن حقا اتخاذ قرار بشأن تنفيذ أو مرشحات الخاصة أو الاستفادة من تصفية القناة في صلب تيبكو - بدلا من ما إذا كان لاستخدام الكثير من القنوات. والمكون التالي الذي نحتاج إلى تصميمه هو محرك التحليلات، وهو خادم كتيب آخر سيقوم بتعديل بيانات السوق وإعادة بثه إلى تيب. على الرغم من أنه خارج نطاق تطوير جافاجمس لدينا، ونحن نعمل عن كثب مع فريق C لتصميمه لأننا العملاء تحليلات العملاء الأساسي. والمشكلة المطروحة هي إيجاد بنية القناة التي تعيد بث بيانات السوق المعدلة حديثا بكفاءة أكبر. وبما أن لدينا بالفعل قناة رسالة مخصصة لكل سند موروثة من تغذية سعر بيانات السوق، سيكون من المنطقي تعديل بيانات السوق وإعادة بث بيانات السوق المعدلة على قناة رسالة مخصصة للسندات. ولكن هذا لن يعمل منذ تحليلات تعديل أسعار السندات هي التاجر محددة. إذا كنا إعادة بث البيانات المعدلة على قناة رسالة السندات. ونحن سوف تدمر سلامة البيانات عن طريق استبدال بيانات السوق العامة مع بيانات محددة التاجر. من ناحية أخرى، يمكن أن يكون لدينا نوع رسالة مختلفة لبيانات السوق الخاصة بالتاجر التي ننشرها على نفس القناة مما يسمح للمشتركين بتحديد الرسالة التي يهتمون بها لتجنب إتلاف سلامة البيانات. ولكن بعد ذلك سيكون على العملاء تنفيذ مرشحات الخاصة بهم لفصل الرسائل لغيرهم من التجار. وبالإضافة إلى ذلك، ستحدث زيادة كبيرة في الرسائل التي يتلقاها المشتركون، مما يضع عبئا لا لزوم له عليهم. هناك خياران: قناة واحدة لكل تاجر: كل تاجر لديه قناة محددة للبيانات السوق المعدلة. وبهذه الطريقة، لا تزال بيانات السوق الأصلي سليمة وكل تطبيق التاجر يمكن الاستماع إلى تجارها قناة رسالة محددة لتحديثات الأسعار المعدلة. قناة واحدة لكل تاجر لكل سند: إنشاء قناة رسالة واحدة لكل تاجر لكل سند فقط لبيانات السوق المعدلة لتلك السندات. على سبيل المثال، سيتم نشر بيانات السوق للسندات أبك على قناة بوند أبك بينما سيتم نشر بيانات السوق المعدلة للتاجر A على قناة قناة التاجر أ، بوند أبك، بيانات السوق المعدلة للتاجر ب على التاجر ب، بوند بوند، و هكذا. قناة واحدة لكل تاجر قناة واحدة لكل سند لكل تاجر هناك مزايا وعيوب لكل نهج. نهج كل السندات، على سبيل المثال، يستخدم الكثير من قناة الرسالة. في أسوأ السيناريوهات، فإن عدد قناة الرسائل سيكون عدد السندات الإجمالية مضروبا في عدد التجار. يمكننا وضع الحدود العليا على عدد من القنوات التي سيتم إنشاؤها لأننا نعرف أن هناك فقط حوالي 20 التجار وأنها أبدا السعر أكثر من بضع مئات من السندات. هذا يضع الحد الأعلى تحت نطاق 10،000، وهو ليس غريبا جدا بالمقارنة مع ما يقرب من 100،000 قناة رسالة تغذية السوق سعر البيانات يستخدم. أيضا، لأننا نستخدم تيب وقناة رسالة غير مكلفة للغاية، وعدد من قناة رسالة ق ليست قضية حادة. من ناحية أخرى، يمكن أن يكون العدد الهائل من قناة الرسائل s مشكلة من وجهة نظر الإدارة. في كل مرة يتم إضافة السندات يجب الحفاظ على قناة لكل تاجر. وقد يكون ذلك شديدا في نظام ديناميكي جدا. نظامنا، ومع ذلك، هو ثابت أساسا. كما أن لديها بنية تحتية لإدارة قناة الرسائل s تلقائيا. هذا جنبا إلى جنب مع العمارة الموروثة للمكون القديم باستخدام نهج مماثل يقلل من الجانب السلبي. هذا لا يعني أننا يجب أن تجعل عددا مفرطا بلا داع من قناة الرسائل ق. بدلا من ذلك، يمكننا تنفيذ نهج معماري يستخدم عددا كبيرا من قناة رسالة s عندما يكون هناك سبب. وهناك سبب في هذه الحالة أن يأتي إلى موقع المنطق. إذا طبقنا نهج التاجر، يحتاج محرك أناليتيكش إلى منطق لتجميع قنوات الإدخال والإخراج. ويرجع السبب في ذلك إلى أن قنوات الإدخال من محرك أناليتيكش هي لكل سند وأن قناة رسالة الإخراج ستكون لكل تاجر، مما يتطلب من محرك أناليتيكش توجيه جميع مدخلات أناليتيكش من السندات المتعددة لمتاجر معين إلى مخرجات محددة للمتداول قناة الرسالة. يؤدي هذا إلى تحويل محرك التحليلات بشكل فعال إلى جهاز توجيه يستند إلى المحتوى لتنفيذ منطق التوجيه المخصص لتطبيقنا. بعد بنية حافلة الرسائل، يعد محرك أناليتيكش خادما عاما يمكن استخدامه من قبل العديد من الأنظمة الأخرى في. لذلك نحن لا نريد أن سحابة مع وظيفة نظام معين. من ناحية أخرى، فإن النهج لكل السندات يعمل منذ فكرة التاجر امتلاك الناتج تحليلات أسعار السندات هي ممارسة مقبولة من قبل الشركة. يحتفظ النهج لكل السندات الفصل قناة رسالة من تغذية بيانات السوق سليمة، في حين إضافة عدة أكثر قناة رسالة ق. قبل أن نصل إلى العميل، نريد أن يقوم الموجه القائم على المحتوى بدمج هذه القنوات المتعددة في عدد من القنوات القابلة للإدارة. نحن لا نريد تطبيق العميل يعمل على سطح المكتب التجار أن يستمع إلى الآلاف أو عشرات الآلاف من قناة رسالة ق. الآن يصبح السؤال أين وضع جهاز التوجيه القائم على المحتوى. يمكن ببساطة أن يكون محول قناة كتيب إلى الأمام جميع الرسائل إلى بوابة التسعير على قناة رسالة واحدة. هذا أمر سيئ لسببين سنقوم بتقسيم منطق الأعمال بين C وجافا، وسوف نفقد فائدة قناة رسالة منفصلة s على الجانب تيب مما يسمح لنا لتجنب تصفية في وقت لاحق من تدفق البيانات. بالنظر إلى مكونات جافا لدينا، يمكننا إما وضعه في بوابة التسعير أو إنشاء مكون وسيط بين بوابة التسعير والعميل. من الناحية النظرية، إذا واصلنا الفصل القائم على السندات لقناة الرسالة ق وصولا إلى العميل، فإن بوابة التسعير إعادة بث معلومات التسعير مع بنية القناة نفسها مثل بوابة التسعير ومحرك أناليتيكش. وهذا يعني ازدواجية في جميع السندات مخصصة قنوات تيب في جمس. حتى إذا أنشأنا مكون وسيط بين بوابة التسعير والعميل، فسيظل على بوابة التسعير تكرار جميع القنوات في جمس. من ناحية أخرى، تنفيذ المنطق مباشرة في بوابة التسعير يسمح لنا لتجنب تكرار عدد كبير من القنوات في جمزالوينغ لنا لإنشاء عدد أقل بكثير من القنوات في ترتيب واحد لكل تاجر. تسجل بوابة التسعير نفسها من خلال محول قناة كتيب كمستهلك لكل سند من كل تاجر في النظام. ثم تقوم بوابة التسعير بإعادة توجيه كل عميل محدد فقط بالرسائل المتعلقة بهذا التاجر المعين. وبهذه الطريقة، نستخدم فقط عددا صغيرا من قناة الرسائل s في نهاية جمس، مع تحقيق أقصى فائدة للفصل في نهاية تيب. تدفق بيانات السوق الكامل إلى العميل الرسالة تخطيط تخطيط القناة هو مثال جيد لكيفية دمج الأنماط الهامة. وكان الهدف هنا هو معرفة كيفية استخدام قناة الرسائل بشكل فعال. قول استخدام نمط ليس كافيا. تحتاج إلى معرفة كيفية تنفيذ أفضل ودمج في النظام الخاص بك لحل المشاكل في متناول اليد. بالإضافة إلى ذلك، يوضح هذا المثال القوى التجارية في العمل. إذا تمكنا من تنفيذ منطق الأعمال في أي من مكوناتنا، كنا يمكن أن تذهب مع نهج التاجر وتنفيذ نهج أكثر بساطة عموما مع العديد من القنوات أقل. اختيار قناة رسالة الآن بعد أن نعرف آليات الاتصال بين مكونات جافاجمس ومكونات C تيبكو، ورأينا بعض بنية قناة الرسالة، ونحن بحاجة إلى أن تقرر أي نوع من قناة رسالة جمس s يجب أن تستخدم مكونات جافا للاتصال . قبل أن نستطيع الاختيار بين قنوات الرسائل المختلفة المتوفرة في جمس، لننظر إلى تدفق الرسائل على مستوى عال من النظام. لدينا اثنين من بوابات (التسعير والمساهمة) التواصل مع العميل. تدفقات بيانات السوق إلى العميل من بوابة التسعير التي ترسلها إلى بوابة المساهمة. تطبيق العميل يرسل رسالة إلى بوابة التسعير لتغيير التحليلات التي يتم تطبيقها على كل السندات. كما تقوم بوابة المساهمة بإرسال رسائل إلى تطبيق العميل ترحيل حالة تحديثات الأسعار إلى أماكن التداول المختلفة. تدفق رسالة النظام تصف مواصفات جمس نوعين من قنوات الرسائل وقناة من نقطة إلى نقطة (قائمة انتظار جمس) وقناة النشر-الاشتراك (موضوع جمس). تذكر بأن قضية استخدام الاشتراك في الاشتراك هي تمكين جميع المستهلكين المهتمين من تلقي رسالة، في حين أن حالة استخدام نقطة إلى نقطة هي التأكد من أن مستهلك مؤهل واحد فقط يتلقى رسالة معينة. ومن شأن العديد من الأنظمة ببساطة أن تبث رسائل إلى جميع تطبيقات العملاء، تاركة لكل طلب عميل فردي أن يقرر بنفسه ما إذا كان ينبغي معالجة رسالة معينة أم لا. وهذا لن يعمل لتطبيقنا منذ هناك عدد كبير من رسائل بيانات السوق يتم إرسالها إلى كل تطبيق العميل. إذا قمنا ببث تحديثات بيانات السوق للمتاجر غير المهتمين، فسوف نؤدي إلى إضاعة دورات معالج العميل بشكل غير ضروري لتحديد ما إذا كان سيتم معالجة تحديث بيانات السوق أم لا. قناة من نقطة إلى نقطة ق في البداية يبدو وكأنه خيار جيد لأن العملاء يرسلون رسائل إلى خوادم فريدة من نوعها والعكس بالعكس. ولكن كان من متطلبات العمل أن التجار قد يتم تسجيل الدخول إلى آلات متعددة في نفس الوقت. إذا كان لدينا تاجر تسجيل الدخول في محطتين عمل في وقت واحد ويتم إرسال تحديث سعر من نقطة إلى نقطة، واحد فقط من اثنين من تطبيقات العميل سوف تحصل على الرسالة. وذلك لأن مستهلك واحد فقط على قناة من نقطة إلى نقطة يمكن أن يتلقى رسالة معينة. لاحظ أن الأول فقط من كل مجموعة من تطبيقات العميل التجار يتلقى الرسالة. الرسائل من نقطة إلى نقطة لإرسال تحديثات الأسعار يمكننا حل هذه المشكلة باستخدام نمط قائمة المستلمين الذي ينشر الرسائل إلى قائمة بالمستلمين المقصودين، مما يضمن أن العملاء فقط في قائمة المستلمين سيتلقون الرسائل. باستخدام هذا النمط، يمكن للنظام إنشاء قوائم المستلمين مع كافة مثيلات تطبيق العميل المتعلقة بكل تاجر. إرسال رسالة ذات صلة إلى تاجر معين بدوره إرسال الرسالة إلى كل تطبيق في قائمة المستلمين. وهذا يضمن جميع الحالات تطبيق العميل المتعلقة تاجر معين تلقي الرسالة. الجانب السلبي لهذا النهج هو أنه يتطلب نوعا ما من منطق التنفيذ لإدارة المتلقين وإرسال الرسائل. قائمة المستلمين للحصول على تحديثات الأسعار على الرغم من أن نقطة إلى نقطة يمكن أن تكون مصنوعة للعمل، يتيح معرفة ما إذا كان هناك طريقة أفضل. وباستخدام قناة النشر والاشتراك، يمكن للنظام بث رسائل على قنوات محددة للتاجر بدلا من القنوات الخاصة بتطبيق العميل. وبهذه الطريقة، ستتلقى جميع تطبيقات العميل التي تعالج الرسائل لمتاجر واحد الرسالة وتعالجها. النشر-الاشتراك الرسائل للحصول على تحديثات الأسعار الجانب السلبي من استخدام قناة النشر-الاشتراك s هو أن معالجة رسالة فريدة من نوعها ليست مضمونة مع مكونات الخادم. سيكون من الممكن أن تكون مثيلات متعددة من مكون ملقم مثيل وكل مثيل معالجة نفس الرسالة، وربما إرسال أسعار غير صالحة. وإذ يشير إلى تدفق رسالة النظام، فإن اتجاه اتصال واحد فقط مرض مع كل قناة رسالة. الاتصالات من خادم إلى عميل مع نشر الاشتراك هو مرضية في حين أن الاتصال من العميل إلى الخادم ليس والتواصل مع العميل-نقطة مع نقطة إلى نقطة مرضية في حين ملقم العميل ليس كذلك. ونظرا لعدم الحاجة إلى استخدام نفس قناة الرسائل في كلا الاتجاهين، يمكننا استخدام كل قناة قناة اتجاه واحد فقط. سيتم تنفيذ الاتصالات من عميل إلى خادم مع نقطة إلى نقطة في حين سيتم تنفيذ الاتصالات من خادم إلى عميل مع نشر الاشتراك. وباستخدام هذا المزيج من قناة الرسائل s، يستفيد النظام من الاتصال المباشر مع مكونات الخادم باستخدام الرسائل من نقطة إلى نقطة وطبيعة البث المتعدد للنشر دون أي من العيوب. تدفق الرسالة مع أنواع القنوات حل المشكلات مع الأنماط الأنماط هي أدوات ومجموعات من الأنماط هي صناديق أدوات. أنها تساعد على حل المشاكل. يعتقد البعض أن الأنماط مفيدة فقط أثناء التصميم. بعد تشبيه الأدوات، وهذا هو مثل القول أن الأدوات مفيدة فقط عند بناء منزل، وليس عند إصلاحه. والحقيقة هي أن الأنماط هي أداة مفيدة في جميع مراحل المشروع عند تطبيقها بشكل جيد. في الأقسام التالية سوف نستخدم نفس نمط عملية الاستكشاف استخدمنا في القسم السابق لحل المشاكل في نظامنا العمل الآن. تحديثات بيانات السوق اللمعان يريد التجار أن تضيء خلايا الجدول عند تلقي بيانات سوق جديدة للحصول على سند، مما يشير بوضوح إلى التغييرات. يتلقى عميل جافا رسائل مع بيانات جديدة بتشغيل تحديث ذاكرة التخزين المؤقت لبيانات العميل ثم تومض في الجدول في نهاية المطاف. المشكلة هي أن التحديثات تأتي في كثير من الأحيان. كومة موضوع واجهة المستخدم الرسومية أصبحت مثقلة وتجميد في نهاية المطاف العميل لأنه لا يمكن الرد على تفاعل المستخدم. وسوف نفترض أن وامض هو الأمثل والتركيز على تدفق البيانات من الرسائل من خلال عملية التحديث. فحص بيانات الأداء يظهر تطبيق العميل يتلقى العديد من التحديثات الثانية حدثت بعض التحديثات أقل من ميلي ثانية واحدة وبصرف النظر. اثنين من أنماط التي تبدو وكأنها يمكن أن تساعد على إبطاء تدفق الرسالة هي مجمع ورسالة تصفية. الفكر الأول هو تنفيذ "تصفية الرسائل" للسيطرة على سرعة تدفق الرسالة عن طريق رمي التحديثات تلقت كمية صغيرة من الوقت بعد الرسالة المرجعية. على سبيل المثال، دعنا نقول أننا سنتجاهل الرسائل خلال 5 ميلي ثانية من بعضها البعض. يمكن للذاكرة تصفية ذاكرة التخزين المؤقت وقت آخر رسالة مقبولة وإزالة أي شيء وردت في غضون 5 ميلي ثانية. في حين قد لا تكون التطبيقات الأخرى قادرة على تحمل فقدان البيانات إلى حد ما، وهذا هو مقبول تماما في نظامنا بسبب تواتر التحديثات السعر. تصفية رسالة تستند إلى الوقت المشكلة مع هذا النهج هو أنه لم يتم تحديث كافة حقول البيانات في نفس الوقت. كل السندات لديها ما يقرب من 50 حقول البيانات المعروضة للمستخدم بما في ذلك السعر. ونحن ندرك أنه لا يتم تحديث كل حقل في كل رسالة. إذا كان النظام يتجاهل الرسائل المتتالية، قد يكون جيدا جدا رمي البيانات الهامة. النمط الآخر من الفائدة هو مجمع. يتم استخدام المجمع لإدارة تسوية العديد من الرسائل ذات الصلة في رسالة واحدة، مما يحتمل أن يقلل من تدفق الرسالة. يمكن أن يحتفظ المجمع بنسخة من بيانات السندات من الرسالة المجمعة الأولى، ثم يقوم بتحديث الرسائل المتتالية فقط أو تغييرها. في نهاية المطاف سيتم تمرير بيانات السندات المجمعة في رسالة إلى العميل. في الوقت الراهن، لنفترض أن المجمع سوف يرسل رسالة كل 5 ميلي ثانية مثل "تصفية الرسائل". في وقت لاحق، استكشاف بديل آخر. مجمع مع تحديثات متتالية جزئية المجمع. مثل أي نمط آخر، ليست رصاصة فضية لديها الإيجابيات والنوافذ التي تحتاج إلى استكشاف. واحد ناقص محتمل هو أن تنفيذ مجمع سوف يقلل من حركة الرسائل بمقدار كبير في حالتنا إلا إذا العديد من الرسائل تأتي في غضون وقت قصير نسبيا فيما يتعلق السندات نفسها. من ناحية أخرى، فإننا لا ننجز شيئا إذا كان عميل جافا يتلقى تحديثات فقط لحقل واحد عبر جميع السندات التجار. على سبيل المثال، إذا تلقينا 1000 رسالة في إطار زمني محدد مع 4 سندات من الفائدة، فإننا سوف يقلل من تدفق الرسالة من 1000 إلى 4 رسائل خلال هذا الإطار الزمني. بدلا من ذلك، إذا تلقينا 1000 رسالة في نفس الإطار الزمني مع 750 السندات من الفائدة، ونحن قد خفضت تدفق الرسالة من 1000 إلى 750 رسائل كسب قليل نسبيا لكمية من الجهد. تحليل سريع من تحديثات رسالة يثبت أن عميل جافا يتلقى العديد من الرسائل تحديث الحقول من نفس السندات، وبالتالي الرسائل ذات الصلة. لذلك، مجمع هو في الواقع قرارا جيدا. ما تبقى هو لتحديد كيفية معرفة المجمع عندما ترسل رسالة تم تجميعها. يصف النمط بعض الخوارزميات للمجمع لمعرفة متى يتم إرسال الرسالة. وتشمل هذه الخوارزميات التي تتسبب في أن يقوم المجمع بتجميع محتوياته بعد انقضاء فترة معينة من الوقت، بعد اكتمال جميع الحقول المطلوبة في مجموعة بيانات وغيرها. المشكلة مع كل هذه النهج هو أن المجمع هو السيطرة على تدفق الرسالة، وليس العميل. والعميل هو عنق الزجاجة الرئيسي في هذه الحالة، وليس تدفق الرسالة. ويرجع السبب في ذلك إلى أن المجمع يقوم بافتراض أن مستهلكي رسائله المخزنة (تطبيق العميل في هذه الحالة) هم المستهلكون المستندون إلى الحدث أو المستهلكين الذين يعتمدون على الأحداث من مصدر خارجي. We need to turn the client into a Polling Consumer . or a consumer that continuously checks for messages, so the client application can control the message flow. We can do this by creating a background thread that continuously cycles through the set of bonds and updates and flashes any changes that have occurred since the last iteration. This way, the client controls when messages are received and as a result, guarantees that it will never become overloaded with messages during high update periods. We can easily implement this by sending a Command Message to the Aggregator initiating an update. The Aggregator will respond with a Document Message containing the set of updated fields that the client will process. The choice of Aggregator over Message Filter is clearly a decision based solely on the business requirements of our system. Each could help us solve our performance problems, but using the Message Filter would solve the problem at cost of the system data integrity. Major Production Crash With the performance of the flashing fixed, we are now in production. One day the entire system goes down. MQSeries crashes, bringing several components down with it. We struggle with the problem for a while and finally trace it back to the MQSeries dead letter queue (an implementation of the Dead Letter Channel ). The queue grows so large that it brings down the entire server. After exploring the messages in the dead letter queue we find they are all expired market data messages. This is caused by slow consumers, or consumers that do not process messages fast enough. While messages are waiting to be processed, they time out (see the Message Expiration pattern) and are sent to the Dead Letter Channel . The excessive number of expired market data messages in the dead letter queue is a clear indication that the message flow is too great messages expire before the target application can consume them. We need to fix the message flow and we turn to patterns for help slowing down the message flow. A reasonable first step is to explore solving this problem with the Aggregator as we recently used this pattern to solve the similar flashing market data control rate problem. The system design relies on the client application to immediately forward market data update messages to the trading venues. This means the system cannot wait to collect messages and aggregate them. So the Aggregator must be abandoned. There are two other patterns that deal with the problem of consuming messages concurrently: Competing Consumers and Message Dispatcher . Starting with Competing Consumers . the benefit of this pattern is the parallel processing of incoming messages. This is accomplished using several consumers on the same channel. Only one consumer processes each incoming message leaving the others to process successive messages. Competing Consumers . however, will not work for us since we are using Publish-Subscribe Channel s in server-to-client communication. Competing Consumers on a Publish-Subscribe Channel channel means that all consumers process the same incoming message. This results in more work without any gain and completely misses the goal of the pattern. This approach also has to be abandoned. On the other hand, the Message Dispatcher describes an approach whereby you add several consumers to a pool. Each consumer can run its own execution thread. One main Message Consumer listens to the Channel and delegates the message on to an unoccupied Message Consumer in the pool and immediately returns to listening on the Message Channel . This achieves the parallel processing benefit of Competing Consumers . but works on Publish-Subscribe Channel s. The Message Dispatcher in context Implementing this in our system is simple. We create a single JMSListener called the Dispatcher, which contains a collection of other JMSListener s called Performers. When the onMessage method of the Dispatcher is called, it in turn picks a Performer out of the collection to actually process the message. The result of which is a Message Listener (the Dispatcher) that always returns immediately. This guarantees a steady flow of message processing regardless of the message flow rate. Additionally, this works equally well on a Publish-Subscribe Channel s as it does on a Point-to-Point Channel s. With this infrastructure, messages can be received by the client application at almost any rate. If the client application is still slow to process the message after receiving them, the client application can deal with the delayed processing and potentially outdated market data rather than the messages expiring in the JMS Message Channel . The crash discussed in this section and the fix using the Message Dispatcher is an excellent example of the limits of applying patterns. We encountered a performance problem based on a design flaw not allowing the client to process messages in parallel. This greatly improved the problem, but did not completely fix it. This is because the real problem was the client becoming a bottleneck. This couldnt be fixed with a thousand patterns. We later addressed this problem by refactoring the message flow architecture to route messages directly from the Pricing Gateway to the Contribution Gateway. So patterns can help design and maintain a system, but dont necessarily make up for poor upfront design. Throughout this chapter, we have applied patterns to several different aspects of a bond trading system including solving initial upfront design problems and fixing a nearly job threatening production crash with patterns. We also saw these patterns as they already exist in third party product, legacy components, and our JMS and TIBCO messaging systems. Most importantly, these are real problems with the same types of architectural, technical and business problems we experience as we design and maintain our own systems. Hopefully reading about applying patterns to this system helps give you a better understanding of the patterns as well as how to apply them to your own systems. Want to keep up-to-date Follow My Blog . Want to read more in depth Check out My Articles . Want to see me live See where I am speaking next . Find the full description of this pattern in: Enterprise Integration Patterns Gregor Hohpe and Bobby Woolf ISBN 0321200683 650 pages Addison-Wesley From Enterprise Integration to Enterprise Transformation: My new book describes how architects can play a critical role in IT transformation by applying their technical, communication, and organizational skills with 37 episodes from large-scale enterprise IT. Parts of this page are made available under the Creative Commons Attribution license. You can reuse the pattern icon, the pattern name, the problem and solution statements (in bold), and the sketch under this license. Other portions of the text, such as text chapters or the full pattern text, are protected by copyright. Messaging Patterns 187 Integration Patterns in Practice 187 Case Study: Bond Trading SystemChapdelaine 038 Co. Modernizes Municipal 038 Corporate Bond Trading System to the Web with Nexaweb BURLINGTON, Mass. July 12, 2011 PRNewswire -- Nexaweb Technologies, Inc. a leading provider of IT application modernization software solutions. today announced that Chapdelaine amp Co. has selected Nexaweb to help transform its terminal-based municipal bond trading system into a rich Internet application that provides real-time market data and trading services to traders over the web. Established in 1966, Chapdelaine amp Co. is an inter-dealer broker that provides dealer-to-dealer services for fixed-income bond executions for municipal and corporate bonds. At the core of the firms service is its custom, fixed-income trading platform. The terminal-based system was originally designed to support Chapdelaine amp Co. traders fielding orders from clients over the phone. In order to make the system easier to learn and more productive to use for employees, and to provide self-service e-trading to clients over the web, Chapdelaine amp Co selected Nexaweb to help modernize their trading platform. In order for the next-generation trading platform to meet the firms business objectives, it needed to have a rich Internet user interface (UI) that pushes market data to users in real time it also required a modular architecture that would make it easier to maintain and extend in the future. Chapdelaine amp Co. selected Nexaweb to support the initiative in large part, because Nexawebs application modernization software aligned with their objectives so well: - Nexaweb Studio - visually create rich Internet application UIs for traders - Nexaweb Internet Message Bus - provides secure, two-way data transfer between the server and web browsers for real-time market data delivery, order status reporting and trade capture - Nexaweb Reference Framework - reduces project time, cost and risk by providing a ready-to-use, modular J2EE architecture that ties new and legacy application components together and includes pre-built code for handling security, user interface interactions, workflow, SOA access, etc. In order to deliver a revolutionary user experience to our clients we had very ambitious application requirements to meet, said Ken Torres, senior vice president of IT at Chapdelaine amp Co. We turned to Nexaweb because they not only possess a great modernization customer track reco rd they also integrated nicely into our infrastructure, which gave us a huge head start and eliminated a lot of delivery risk. Chapdelaine amp Co. is using the Nexaweb Enterprise Web Suite to make additional enhancements to their trading platform, including real-time Municipal Securities Rulemaking Board (MSRB) data feeds, market indicators, market news and analysis tickers delivered via RSS, and user preferences configuration. Were excited to be working with Chapdelaine amp Co. to support the modernization of their bond trading platform, said Nexaweb CEO, Chris Heidelberger. Seeing the transformational effect that application modernization has on our customers businesses is the most rewarding part of the field were in. Nexaweb Technologies, Inc. is the leader in clientserver and legacy application modernization using cloud computing. Nexaweb has modernized more than 450 applications to date -- and is the only company offering a fixed-time, fixed-price guarantee. More than 200 customers, including Aflac, DHL, EMC, Nokia Siemens Networks, Pepsico, Rabobank and US Air Force have leveraged Nexaweb software and services to modernize their applications and transform their businesses. For the latest news and information, follow Nexaweb on Twitter at twitterNexaweb and visit nexaweb . Media Contact: Andrew Ellicott Andyellicott(at)nexaweb(dot)com 603-205-2804

No comments:

Post a Comment