نظم التداول تصميم النظام الخاص بك - الجزء 1. القسم السابق من هذا البرنامج التعليمي نظرت في العناصر التي تشكل نظام التداول ومناقشة مزايا وعيوب استخدام مثل هذا النظام في بيئة التداول الحية في هذا القسم، ونحن نبني على تلك المعرفة من خلال دراسة الأسواق التي هي مناسبة بشكل خاص لتداول النظام سوف نلقي نظرة أكثر تعمقا على أنواع مختلفة من أنظمة التداول. التداول في أسواق مختلفة. أسواق الجودة سوق الأسهم وربما هو السوق الأكثر شيوعا للتجارة في، لا سيما بين المبتدئين في هذه الساحة، اللاعبين الكبار مثل وارن بافيت وميريل لينش تهيمن، والقيم التقليدية واستراتيجيات النمو النمو هي حتى الآن الأكثر شيوعا ومع ذلك، استثمرت العديد من المؤسسات بشكل كبير في تصميم وتطوير وتنفيذ أنظمة التداول المستثمرين الأفراد والانضمام إلى هذا الاتجاه، على الرغم من ببطء. هنا بعض العوامل الرئيسية أن نأخذ في الاعتبار عند استخدام أنظمة التداول في سوق الأسهم إن الكم الكبير من الأسهم المتاحة يسمح للمتداولين باختبار الأنظمة على العديد من أنواع الأسهم المختلفة - كل شيء من الأسهم المتطايرة غير المباشرة المتقلبة للغاية إلى رقائق زرقاء غير متطايرة. فعالية أنظمة التداول يمكن أن تكون محدودة بسبب السيولة المنخفضة من بعض الأسهم، وخاصة أوتك والورق ورقة القضايا يمكن أن تأكل في الأرباح الناتجة عن الصفقات الناجحة، ويمكن أن تزيد الخسائر أوتك والأسهم ورقة الوردي في كثير من الأحيان تكبد رسوم عمولة إضافية. النظم التجارية الرئيسية المستخدمة هي تلك التي تبحث عن القيمة - التي تستخدم معايير مختلفة لتحديد ما إذا كان الأمن بأقل من قيمتها بالمقارنة مع أدائها السابق، أقرانه، أو السوق بشكل عام. أسواق الصرف الخارجية سوق الصرف الأجنبي، أو الفوركس هو أكبر وأكثر الأسواق سيولة في العالم حكومات العالم ، والبنوك والمؤسسات الكبيرة الأخرى تجارة تريليونات الدولارات في سوق الفوركس كل يوم غالبية التجار المؤسسي على الفوركس تعتمد على التداول إنغ نفس الشيء ينطبق على الأفراد في الفوركس، ولكن بعض التجارة على أساس التقارير الاقتصادية أو دفعات الفائدة. هنا بعض العوامل الرئيسية أن نأخذ في الاعتبار عند استخدام أنظمة التداول في سوق الفوركس. السيولة في هذا السوق - بسبب ضخمة الحجم - يجعل أنظمة التداول أكثر دقة وفعالية. ليس هناك عمولات في هذا السوق، ينتشر فقط ولذلك، فإنه من الأسهل بكثير لجعل العديد من المعاملات دون زيادة التكاليف إلى كمية الأسهم أو السلع المتاحة، وعدد من العملات للتجارة محدودة ولكن بسبب توفر أزواج العملات الغريبة - أي العملات من البلدان الصغيرة - النطاق من حيث التقلب ليس بالضرورة محدود. النظم التجارية الرئيسية المستخدمة في الفوركس هي تلك التي تتبع الاتجاهات المثل الشعبي في السوق هو الاتجاه هو صديقك، أو النظم التي تشتري أو تبيع على هروب هذا لأن المؤشرات الاقتصادية غالبا ما تسبب تحركات الأسعار الكبيرة في وقت واحد. العقود الآجلة الأسهم، النقد الاجنبى، والسلع الأسواق كلها تقدم تداول العقود الآجلة هذا هو وسيلة شعبية لتجارة النظام بسبب ارتفاع كمية الرافعة المالية المتاحة وزيادة السيولة والتقلبات ومع ذلك، يمكن لهذه العوامل أن تقطع كلا الطريقتين إما أن تضخيم المكاسب الخاصة بك أو تضخيم الخسائر الخاصة بك لهذا السبب، وعادة ما يتم الاحتفاظ باستخدام العقود الآجلة للتجار النظام الفردي والمؤسسي المتقدم هذا لأن أنظمة التداول قادرة على الاستفادة من سوق العقود الآجلة تتطلب التخصيص أكبر بكثير، واستخدام مؤشرات أكثر تقدما وتستغرق وقتا أطول لتطوير لذلك، وهو أفضل ما يصل الى المستثمر الفردي أن يقرر أي السوق هو الأنسب لتداول النظام - لكل منها مزاياه وعيوبه معظم الناس أكثر دراية بأسواق الأسهم، وهذه الألفة يجعل تطوير نظام التداول أسهل ومع ذلك، ويعتقد عادة النقد الاجنبى ليكون منصة متفوقة لتشغيل أنظمة التداول - وخاصة بين التجار أكثر خبرة وعلاوة على ذلك، إذا قرر المتداول للحد الأقصى تملأ على زيادة النفوذ والتقلب، والبديل الآجلة مفتوحة دائما في نهاية المطاف، والخيار يكمن في أيدي المطور نظام. أنماط أنظمة التداول. الترتيب-الأنظمة التالية الطريقة الأكثر شيوعا من نظام التداول هو الاتجاه-نظام المتابعة في فإن هذا النظام ببساطة ينتظر حركة سعرية كبيرة، ثم يشتري أو يبيع في هذا الاتجاه هذا النوع من البنوك النظامية على أمل أن تحافظ هذه التحركات السعرية على الاتجاه. المتوسط المتوسط للأنظمة المستخدمة بشكل متكرر في التحليل الفني المتوسط المتحرك هو وهو مؤشر يدل ببساطة على متوسط سعر السهم على مدى فترة من الزمن جوهر الاتجاهات مستمدة من هذا القياس الطريقة الأكثر شيوعا لتحديد الدخول والخروج هو كروس المنطق وراء ذلك هو بسيط يتم تأسيس اتجاه جديد عندما السعر يسقط فوق أو دون اتجاه متوسط السعر التاريخي هنا هو الرسم البياني الذي يخطط كل من الخط الأزرق السعر والخط الأحمر ما 20 يوما من IBM. Breakout سيستمز و المفهوم الأساسي وراء هذا النوع من النظام مشابه لمفهوم نظام المتوسط المتحرك والفكرة هي أنه عندما يتم إنشاء ارتفاع جديد أو منخفض جديد، حركة السعر من المرجح أن تستمر في اتجاه الاختراق أحد المؤشرات التي يمكن استخدامها في وتحديد الهروب هو بسيط بولينجر باند تراكب بولينجر باند تظهر معدلات من ارتفاع وانخفاض الأسعار، وتحدث الانفجارات عندما يلتقي سعر حواف العصابات هنا هو الرسم البياني الذي مؤامرات سعر الخط الأزرق والبولينجر باند خطوط رمادية من ميكروسوفت. الأنظمة التالية يتطلب اتخاذ القرار الإيجابي - عند تحديد الاتجاهات، هناك دائما عنصر تجريبي للنظر في مدة الاتجاه التاريخي على سبيل المثال، قد يكون المتوسط المتحرك خلال ال 20 يوما الماضية أو خلال السنوات الخمس الماضية، وبالتالي فإن المطور يجب تحديد أي واحد هو الأفضل للنظام العوامل الأخرى التي يتعين تحديدها هي متوسط أعلى وأدنى في نظم الاختراق. الطبيعة المتغيرة - المتوسطات المتحركة وأنظمة الاختراق واي ليرة لبنانية دائما متخلفة وبعبارة أخرى، فإنها لا يمكن أبدا ضرب أعلى أو أسفل بالضبط الاتجاه هذا يؤدي حتما إلى مصادرة الأرباح المحتملة، والتي يمكن أن تكون في بعض الأحيان كبيرة. المنافسة تأثير - من بين قوى السوق التي تضر بنجاح فإن هذا هو واحد من الأكثر شيوعا يحدث تأثير السلب عندما يولد المتوسط المتحرك إشارة كاذبة - أي عندما ينخفض المتوسط فقط إلى المدى، ثم ينعكس فجأة الاتجاه وهذا يمكن أن يؤدي إلى خسائر هائلة ما لم تكن فعالة وقف - يتم استخدام تقنيات إدارة المخاطر في الأسواق الجانبية. - الأنظمة المتجهة إلى الاتجاه هي، بطبيعة الحال، قادرة على كسب المال فقط في الأسواق التي في الواقع الاتجاه ولكن الأسواق تتحرك أيضا جانبية البقاء ضمن نطاق معين لفترة طويلة من الزمن. إكستريم قد يحدث التقلب - في بعض الأحيان، قد تواجه الأنظمة التالية الاتجاه بعض التقلبات الشديدة، ولكن يجب على التاجر التمسك بنظامه أو عدم قدرتهم على القيام بذلك سيؤدي إلى وأكد نظام. Countertrend أساسا، والهدف مع نظام كونترترند هو شراء في أدنى مستوى منخفض وبيع على أعلى مستوى والفرق الرئيسي بين هذا ونظام الاتجاه التالي هو أن نظام كونترترند ليس التصحيح الذاتي وبعبارة أخرى ، لا يوجد وقت محدد للخروج من المواقف، وهذا يؤدي إلى إمكانات هبوطية غير محدودة أنواع أنظمة كونترترند تعتبر العديد من أنواع الأنظمة المختلفة أنظمة مضادة للفكرة فكرة هنا هي شراء عندما يبدأ الزخم في اتجاه واحد يتلاشى يتم حساب هذا في معظم الأحيان باستخدام التذبذب على سبيل المثال، يمكن إنشاء إشارة عند مؤشر ستوكاستيك أو مؤشرات القوة النسبية الأخرى تندرج تحت نقاط معينة هناك أنواع أخرى من أنظمة التداول كونترترند، ولكن كل منهم يشتركون في نفس الهدف الأساسي - لشراء منخفضة وبيع عالية. عيوب كونترترند فولوينغ يتطلب إجراء اتخاذ القرار النبطي - على سبيل المثال، أحد العوامل التي يجب على مطور النظام اتخاذ قرار بشأنها هو بوين تيسي التي تتلاشى مؤشرات القوة النسبية. التقلب الشديد قد تحدث - قد تواجه هذه الأنظمة أيضا بعض التقلب الشديد، وعدم القدرة على التمسك مع النظام على الرغم من هذا التقلب سوف يؤدي إلى فشل المؤكد. غير محدود الجانب السلبي - كما ذكر سابقا، هناك غير محدود من المحتمل أن يكون النظام غير مصحح ذاتيا لا يوجد وقت محدد للخروج من المواقف. الاستنتاج الأسواق الرئيسية التي هي أنظمة التداول المناسبة هي الأسهم، الفوركس والأسواق الآجلة كل من هذه الأسواق مزاياه وعيوب اثنين من الأنواع الرئيسية من أنظمة التداول هي أنظمة المتابعة و الاتجاه المعاكس على الرغم من خلافاتها، فإن كلا النوعين من الأنظمة، في مراحلها التنموية، يتطلب اتخاذ قرار تجريبي من جانب المطور أيضا، فإن هذه الأنظمة تخضع لتقلب شديد، وهذا قد يتطلب بعض القدرة على التحمل - من الضروري أن التاجر النظام عصا مع له أو لها نظام خلال هذه الأوقات في ما يلي ط نحن نلقي نظرة فاحصة على كيفية تصميم نظام التداول ومناقشة بعض البرامج التي يستخدمها التجار النظام لجعل حياتهم أسهل. التداول أنظمة تصميم النظام الخاص بك - الجزء 2. القسم السابق على تصميم نظام التداول يفحص وأنواع مختلفة من الأسواق التي تتداول فيها، وتلقي نظرة على نوعين أساسيين من أنظمة التداول الاتجاه التالي وأنظمة الاتجاه المعاكس تشكل هاتان الاستراتيجيتان الأساس الذي تقوم عليه جميع أنظمة التداول، والأسواق توفر الوسيط في هذه الثانية قسم عن تصميم نظام التداول، ونحن كسر هذين النوعين في المكونات الفردية، ودراسة عملية صنع القرار التجريبية، وأخيرا، نلقي نظرة على كيفية ثورة في نظام التداول النظام. مكونات نظام التداول باسيك كما ذكر في المقدمة، تداول النظم التي يتم إنشاؤها باستخدام المعلمات - مجموعات من القواعد المحددة التي تولد نقاط الدخول والخروج لأي حقوق ملكية معينة كلا الاتجاه التالي و كونترتر وتلتزم أنظمة التداول نهاية أربعة مبادئ أساسية تحكم بناء أي نظام التداول هذه المبادئ هي أيضا الخصائص الأساسية لنظام فعال. يجب على النظام كسب المال - وهذا أمر سهل القول، ولكن من الصعب القيام به تعظيم العائد في المئة ينبغي أن يكون الهدف الأساسي الخاص بك في حين تصميم نظام التداول. يجب أن يكون النظام قادرا على الحد من المخاطر - من الصعب استخدام نظام يتقلب بين أعلى مستوياته القصوى والهبوط ليس فقط أنها لا تمنع قدرتك على تصفية ولكن يمكن أيضا أن تكون ضرائب نفسية وعلاوة على ذلك، من خلال الحد من المخاطر، كنت قادرا على تقليل تأثير دخول سيئة على سبيل المثال، والذهاب لفترة طويلة خلال تقلب هبوطي. المعلمات النظام يجب أن تكون مستقرة وممكنة - نظم التداول لا يمكن أن تعتمد على صدفة أو الحظ مصمم النظام يمكن أن يحقق هذا المبدأ من الاستقرار من خلال توسيع المعايير وعدم الاستفادة القصوى في محاولة لزيادة فرصه أو نجاحها جدوى المعلمات، بما في ذلك الانزلاق، ويناقش في القسم الثاني من هذا البرنامج التعليمي مرة أخرى، فمن المهم جدا أن تأخذ الانزلاق في الاعتبار عند تصميم النظام. يجب أن يكون الإطار الزمني للنظام مستقرة وممكنة - الإطار الزمني للنظام لتكون ناجحة، من قبيل المصادفة والحظ لا ينبغي أن تلعب عاملا يجب أيضا النظر في جدوى في هذه الحالة إذا تم تعيين الأطر الزمنية قريبة جدا معا، قد لا يكون المبلغ الناتج من تردد التداول ممكنا بسبب قيود البرمجيات أو القيود على جانب السوق. اتخاذ القرار الإيجابي يتطلب نظام التداول مصمم لجعل بعض القرارات التجريبية التي تؤثر بشكل مباشر على أداء النظام - إذا لم تكن هناك حاجة لاتخاذ هذا القرار، الجميع سيكون غنيا وهنا بعض العوامل الأساسية التي يجب على مصممي النظام اتخاذ قرار بشأن وبعض المبادئ التوجيهية. ما هي الفترة الزمنية التي يجب أن أستخدم كل ويمكن تحليل الأسهم من وجهات نظر متعددة من الفترات الزمنية، تتراوح بين دقيقة واحدة إلى عقد واحد أو أكثر تحديد الفترة الزمنية لاختبار كا ن يؤثر بشكل كبير على أداء النظام أكثر النتائج موثوقة تأتي عموما من فترات زمنية أطول، في حين يمكن أن تكون فترات قصيرة مضللة عند الحكم على ظروف السوق الحقيقية ومع ذلك، هذا لا يعني أنه يجب استخدام فترات سعر طويلة للغاية فقط من المهم أن نضع في والعقل أن أطول الفترة الزمنية، وأطول قد يستغرق لتحقيق الربح أن تتحقق مراقبة المثال التالي من مايكروسوفت على المدى الطويل فترة أكثر من 20 عاما، مقارنة مع المدى القصير لها فترة بضعة أسابيع. يمكننا بوضوح نرى أن المدى القصير ليس تمثيل دقيق على المدى الطويل، والعكس بالعكس كقاعدة عامة من الإبهام، خمس إلى 10 سنوات هو هدف جيد للتجار النظام المتوسط والطويل الأجل، وستة أشهر إلى خمس سنوات هي نطاق معقول للتجار على المدى القصير مرة أخرى، فإنه يعتمد على عندما كنت تخطط لتصفية. ماذا سلسلة السعر يجب أن أستخدم يتم رسم معظم الأسهم على سلسلة السعر دون انقطاع - وهذا هو، الرسوم البيانية مستمرة عند تداول العقود الآجلة و بعض الأسهم الأخرى، ومع ذلك، هناك خيار لاستخدام بيانات العقد الفعلي بدلا من الاستمرارية العقود الآجلة نفسها نفسها تستمر سوى بضعة أشهر، ونظام باكتستينغ غالبا ما يتطلب سنة أو أكثر من البيانات وبالتالي، تجار النظام غالبا ما تستخدم العقود الآجلة المستمرة، والتي هي سلسلة من العقود مجتمعة لخلق تيار مستمر من البيانات كقاعدة عامة من الإبهام، يجب على التجار على المدى الطويل التمسك العقود الآجلة المستمرة، في حين أن التجار على المدى القصير يجب استخدام بيانات العقد الفعلي. ما المعلمات والإعدادات يجب أن أستخدم نحن استكشاف هذا مزيد من في الأقسام اللاحقة التي تعالج بناء نظام التداول في الأساس، يتم اختيار المعلمات من خلال التخمين، والتحقق، أو إنتاج المحاكاة العمياء، أو مسبقا مجموعة من المعلمات، ومن ثم استخدام المتوسط لتحديد الأداء. أخيرا، العديد من هذه العوامل يمكن أن تتأثر بوقت السيولة المطلوب حتى التصفية والمخاطر والعديد من العوامل الأخرى، لذلك من المهم أن تأخذ من الوقت لتحديد ما هي الأعمال أفضل بالنسبة لك. البرمجيات ونظام التداول قد يكون تطور الكمبيوتر أكبر قوة دافعة وراء نظام التداول في الأصل، كانت أجهزة الكمبيوتر تستخدم فقط لكسر الأرقام في نهاية المطاف اكتسبت القدرة على إجراء المحاكاة، وتوليد إشارات في الوقت الحقيقي، وحتى مكان الصفقات للتاجر تم تصميم بعض البرامج ببساطة كمنصة من الذي مطور نظام يمكن بناء نظام يستخدم برنامج آخر الشبكات العصبية للتعلم من الأسواق وتعزيز نفسه يتم تثبيت بعض البرامج على القرص الصلب المستخدم يتم توفير برامج أخرى فقط على الانترنت وهنا بعض البرامج الأساسية المستخدمة من قبل مطوري النظام. يجب تثبيت برنامج جانب العميل البرمجيات جانب العميل على الكمبيوتر المستخدم وغالبا ما تكون متصلا بالإنترنت وقادرة على الحصول على البيانات في الوقت الحقيقي بما في ذلك الأسعار والأخبار ، الخ ملاحظة بعض الشركات تهمة لكم ليس فقط للبرنامج، ولكن أيضا للبيانات هذه التطبيقات تسمح عادة للمستخدم لتحديد الفترة الزمنية، وأنواع من p أراميترز، وأكثر من ذلك واحدة من السمات الأكثر أهمية، ومع ذلك، يعطي المستخدم القدرة على برمجة نظام ويتم ذلك باستخدام لغة برمجة بسيطة غالبا ما تكون محددة للتطبيق المستخدم الذي يمكنك إعداد قواعد لتوليد شراء وشراء إشارات - هذه تظهر بعد ذلك مباشرة على الرسم البياني هنا مثال على تطبيق من جانب العميل يسمى MetaTrader. Server - الجانب برامج الكمبيوتر من جانب الخادم مثبت على ملقم بعيد في كثير من الأحيان، هذه التطبيقات إرجاع الإشارات التي يتم عرضها للجمهور عن طريق صفحة ويب أو قاعدة المشتركين هذا يلغي الحاجة إلى أي برنامج من جانب العميل بخلاف متصفح ويب وعلاوة على ذلك، يدفع المستخدم رسوم اشتراك صغيرة بدلا من شراء برنامج ودفع للحصول على اشتراك البيانات وأخيرا، لا يحتاج المستخدم لتطوير النظام، تلقي إشارات ولدت فقط ولكن يجب أن نتذكر أن هذا النوع من البرامج غالبا ما تكون عرضة للخداع، في حين أن برنامج العميل ليس لمزيد من المعلومات حول هذا، انظر التداول سيست مس الترميز. الاستنتاج الآن لديك فهم أساسي لأنظمة التداول تعلمون ما هي عليه، وأنواع مختلفة من النظم الموجودة، والعوامل أن نأخذ في الاعتبار أثناء تصميمها، والبرمجيات المستخدمة لجعل نظام التداول أسهل عليك المقبل، ونحن سوف تدرس كيفية بناء فعلا نظام التداول ووضعه في الاستخدام. تكامل أنماط أنماط التكامل في الممارسة دراسة حالة نظام التداول بوند. من قبل جوناثان Simon. It من السهل أن تقطع نفسك من مجموعة كبيرة من أنماط أو أنماط نمط اللغة هي تجريد فكرة في شكل قابلة لإعادة الاستخدام في كثير من الأحيان، وطبيعة عامة جدا من الأنماط التي تجعلها مفيدة جدا أيضا يجعل من الصعب فهم في بعض الأحيان أفضل شيء للمساعدة في فهم الأنماط هو مثال على العالم الحقيقي ليس سيناريو المفترضة لما يمكن أن يحدث ولكن ما يحدث فعلا وما سيحدث. هذا الفصل ينطبق أنماط لحل المشاكل باستخدام عملية الاكتشاف النظام سنناقش هو تداول السندات النظام الذي عملت معه لمدة عامين من التصميم الأولي من خلال الإنتاج سوف نستكشف السيناريوهات والمشاكل التي واجهتها وكيفية حلها مع أنماط وهذا ينطوي على عملية اتخاذ القرار لاختيار نمط، وكذلك كيفية الجمع وضبط أنماط لتناسب واحتياجات النظام ويتم ذلك كله مع الأخذ بعين الاعتبار القوى التي واجهتها في النظم الحقيقية بما في ذلك متطلبات الأعمال، والقرارات العميل، أر ومتطلبات الهندسة المعمارية والتقنية، فضلا عن تكامل النظام القديم القصد من هذا النهج هو توفير فهم أوضح لأنماط أنفسهم من خلال التطبيق العملي. بناء نظام. أهم بنك الاستثمار وول ستريت يحدد لبناء نظام تسعير السندات في جهد لتبسيط سير العمل من مكتب تداول السندات حاليا، التجار السندات يجب أن ترسل أسعار لعدد كبير من السندات إلى عدة أماكن تجارية مختلفة، ولكل منها واجهة المستخدم الخاصة بها الهدف لهذا النظام هو تقليل مينوتياي التسعير كل من سنداتهم جنبا إلى جنب مع وظائف تحليلية متقدمة محددة لسوق السندات في واجهة مستخدم مغلفة واحد وهذا يعني التكامل والتواصل مع عدة مكونات على مختلف بروتوكولات الاتصال تدفق مستوى عال من النظام يشبه هذا. أولا، تأتي بيانات السوق في سوق النظام البيانات هي البيانات المتعلقة السعر وغيرها من خصائص السندات التي تمثل ما الناس ويلين ز لشراء وبيع السندات في السوق الحرة يتم إرسال بيانات السوق على الفور إلى محرك تحليلات أن يغير البيانات يشير تحليلات إلى وظائف رياضية للتطبيقات المالية التي تغير الأسعار وغيرها من سمات السندات هذه هي الوظائف العامة التي تستخدم الإدخال المتغيرات لتكييف نتائج الدالة إلى ارتباط معين سيقوم تطبيق العميل الذي سيتم تشغيله على كل سطح مكتب ترادر بتكوين محرك التحليل على أساس كل تاجر، والتحكم في تفاصيل التحليلات لكل سند يتم تسعير المتداول بمجرد أن تكون التحليلات تطبق على بيانات السوق، يتم إرسال البيانات المعدلة إلى مختلف أماكن التداول حيث يمكن للتجار من شركات أخرى شراء أو بيع السندات. الهيكل المعماري مع أنماط. مع هذه النظرة العامة لسير العمل في النظام، يمكننا معالجة بعض المشاكل المعمارية نواجه أثناء عملية التصميم دعونا نلقي نظرة على ما نعرفه حتى الآن التجار بحاجة إلى تطبيق استجابة للغاية على كل من ويندوز نت d محطات عمل سولاريس ولذلك، قررنا تنفيذ تطبيق العميل كعميل جافا سميكة بسبب استقلال منصة وقدرتها على الاستجابة بسرعة لإدخال المستخدم وبيانات السوق على جانب الخادم، ونحن وراثة مكونات C القديمة التي سيستعملها نظامنا مكونات بيانات السوق التواصل مع البنية التحتية الرسائل تيبكو المعلومات تيب البنية التحتية. نحن وراثة المكونات التالية. ملقم بيانات السوق خادم تغذية نشر بيانات السوق الواردة إلى TIB. Analytics المحرك ينفذ تحليلات على بيانات السوق الواردة وتبث بيانات السوق المعدلة إلى TIB. Contribution سيرفر ينفذ جميع الاتصالات مع أماكن التداول أماكن التداول هي مكونات الطرف الثالث التي لا يسيطر عليها البنك. النظام الفرعي بيانات السوق النظام الفرعي. الاشتراك الفرعي النظام الفرعي. نحن بحاجة إلى أن تقرر كيف أن النظم الفرعية منفصلة جافا العميل سميكة، وبيانات السوق والمساهمة هي الذهاب إلى التواصل يمكن أن يكون العميل سميكة التواصل مباشرة مع لي ولكن هذا يتطلب الكثير من منطق الأعمال على العميل بدلا من ذلك، سنقوم ببناء زوج من بوابات جافا للتواصل مع خوادم القديمة بوابة التسعير لبيانات السوق بوابة مساهمة لإرسال الأسعار إلى أماكن التداول وهذا سيحقق التغليف لطيفة من منطق الأعمال المتعلقة بهذه المجالات المكونات الحالية في النظام مبينة أدناه الاتصالات ملحوظ كما يشير إلى أننا ما زلنا غير متأكدين من كيفية بعض المكونات سوف التواصل. النظام ومكوناته. أول سؤال الاتصالات هو كيفية دمج عميل جاوة سميكة ومكونات خادم جافا اثنين من أجل تبادل البيانات دعونا ننظر إلى أنماط التكامل الأربعة المقترحة في هذا الكتاب نقل الملفات قاعدة البيانات المشتركة استدعاء الإجراء البعيد والرسائل يمكننا استبعاد قاعدة البيانات المشتركة على الفور لأننا أردنا لخلق طبقة من التجريد بين العميل وقاعدة البيانات ولا تريد أن يكون رمز الوصول إلى قاعدة البيانات في ملف العميل ترانزف r يمكن بالمثل أن يستبعد لأن الكمون الحد الأدنى هو مطلوب لضمان الأسعار الحالية يتم إرسالها إلى أماكن التداول هذا يترك لنا مع الاختيار بين الاستدعاء الإجراء البعيد أو المراسلة. يوفر منصة جافا المدمج في دعم كل من الاستدعاء الإجراء البعيد والرسائل يمكن تحقيق التكامل على غرار ريك باستخدام ريموت ميثود إنفوكاتيون رمي أو كوربا أو إنتيربريس جافا بينز إجب خدمة المراسلة جافا جمس هي واجهة برمجة التطبيقات المشتركة للتكامل على غرار الرسائل لذلك كلا من أنماط التكامل سهلة التنفيذ في Java. So التي سوف تعمل بشكل أفضل لهذا المشروع، استدعاء الإجراء البعيد أو التراسل هناك مثيل واحد فقط من بوابة التسعير ومثيل واحد من بوابة المساهمة في النظام، ولكن عادة العديد من العملاء سميكة الاتصال في وقت واحد إلى هذه الخدمات واحد لكل تاجر السندات التي يحدث أن يتم تسجيل الدخول في وقت معين وعلاوة على ذلك، فإن البنك يود أن يكون هذا نظام التسعير العامة التي يمكن استخدامها في تطبيقات أخرى لذلك بالإضافة إلى عدد غير معروف من عملاء التفكير، قد يكون هناك عدد غير معروف من التطبيقات الأخرى باستخدام بيانات التسعير الخروج من البوابات. يمكن للعميل سميكة أو تطبيق آخر باستخدام بيانات التسعير بسهولة إلى حد ما استخدام ريك لإجراء مكالمات إلى بوابات للحصول على بيانات التسعير واستدعاء التجهيز ومع ذلك، سيتم نشر بيانات التسعير باستمرار، وبعض العملاء مهتمون فقط في بعض البيانات، لذلك الحصول على البيانات ذات الصلة للعملاء المناسبين في الوقت المناسب يمكن أن يكون صعبا يمكن للعملاء استطلاع البوابات، ولكن ذلك سوف خلق الكثير من النفقات العامة سيكون من الأفضل للبوابات لجعل البيانات المتاحة للعملاء في أقرب وقت كما هو متاح وهذا، ومع ذلك، سوف تتطلب كل بوابة لتتبع العملاء التي هي نشطة حاليا، والتي تريد ما هي بيانات معينة ثم، عندما تصبح قطعة جديدة من البيانات المتاحة التي سوف تحدث عدة مرات في الثانية الواحدة، فإن بوابة يجب أن تجعل ريك لكل عميل مهتم لتمرير البيانات إلى كلي نت من الناحية المثالية، يجب أن يتم إخطار جميع العملاء في وقت واحد، لذلك كل ريك يحتاج إلى أن يتم في مؤشر الترابط المتزامنة الخاصة به وهذا يمكن أن تعمل، ولكن هو الحصول على معقدة جدا سريع جدا. التبسيط يبسط إلى حد كبير هذه المشكلة مع الرسائل يمكننا تحديد قنوات منفصلة لأنواع مختلفة من بيانات التسعير ثم، عندما يحصل على بوابة جديدة من البيانات، فإنه سيتم إضافة رسالة تحتوي على تلك البيانات إلى قناة نشر الاشتراك لهذا النوع من البيانات وفي الوقت نفسه، فإن جميع العملاء المهتمين في نوع معين من البيانات الاستماع على قناة ل هذا النوع، وبواسطة البوابات يمكن بسهولة إرسال بيانات جديدة لمن يهتم، دون الحاجة إلى معرفة عدد تطبيقات المستمع هناك أو ما هم. الزبائن لا تزال بحاجة إلى أن تكون قادرة على استدعاء السلوك في بوابات كذلك منذ هناك على الأقل اثنين فقط من البوابات، ويمكن للعميل منع على الأرجح أثناء استدعاء الأسلوب بشكل متزامن، هذه الإدخالات من العميل إلى البوابة يمكن أن تنفذ بسهولة إلى حد ما باستخدام ريك ومع ذلك، لأننا تستخدم بالفعل الرسائل من أجل الاتصالات من بوابة إلى عميل، والرسائل هي على الأرجح مجرد جيدة وسيلة لتنفيذ الاتصالات من العميل إلى بوابة كذلك. لذلك، سيتم تحقيق جميع الاتصالات بين بوابات والعملاء من خلال الرسائل لأن كل من يتم كتابة مكونات في جافا، جمس يقدم خيارا سهلا كما في نظام الرسائل هذا هو خلق فعال حافلة رسالة أو بنية من شأنها أن تجعل من الممكن لأنظمة المستقبل لدمج مع النظام الحالي مع تغييرات قليلة أو معدومة على البنية التحتية الرسائل هذا طريقة عمل التطبيق يمكن استخدامها بسهولة من قبل تطبيق آخر البنك developes. Java مكونات التواصل مع JMS. JMS هو ببساطة مواصفات ونحن بحاجة إلى اتخاذ قرار بشأن نظام الرسائل المتوافقة مع جمس قررنا استخدام عب مكسيريز جمس لأن والبنك هو متجر عب، وذلك باستخدام خوادم تطبيقات وبسفهير والعديد من منتجات عب الأخرى ونتيجة لذلك، سوف نستخدم مقريز منذ نحن بالفعل أفي البنية التحتية للدعم في مكان ورخصة الموقع للمنتج. السؤال التالي هو كيفية توصيل نظام الرسائل مقسيريز مع مستقل س مساهمة الخادم و تيبكو استنادا بيانات السوق وتحليلات محرك خوادم نحن بحاجة إلى وسيلة للمستهلكين مكسيريز ل الوصول إلى رسائل تيب ولكن كيف يمكن أن نستطيع استخدام نمط مترجم رسالة لترجمة رسائل تيب إلى رسائل مكسيريز على الرغم من أن العميل C ل مكسيريز بمثابة المترجم رسالة استخدامه سوف التضحية استقلال خادم جمس وعلى الرغم من أن تيبكو لديها جافا أبي، وقد رفض المهندس المعماري ومدير العميل ونتيجة لذلك، يجب أن يتم التخلي عن نهج رسالة مترجم. الجسر من خادم تيب إلى خادم مكسيريز يتطلب التواصل بين C وجافا يمكننا استخدام كوربا، ولكن بعد ذلك ماذا عن الرسائل A أقرب ننظر في نمط رسالة مترجم يظهر أنه مرتبط إلى محول القناة في استخدامه لبروتوكولات الاتصال قلب القناة محول هو ربط أنظمة غير المراسلة لأنظمة المراسلة زوج من محولات القناة التي تربط اثنين من أنظمة الرسائل هو جسر المراسلة. الغرض من جسر التراسل هو نقل الرسائل من نظام الرسائل واحد إلى آخر هذا هو بالضبط ما نقوم به مع التعقيد الإضافي في لغة جافا إلى C الاتصالات يمكننا تنفيذ لغة عبر جسر التراسل باستخدام مزيج من قناة محول s و كوربا وسوف نبني خوادم محول قناة خفيفة الوزن، واحدة في C إدارة الاتصالات مع تيب، وواحدة في جافا إدارة الاتصالات مع جمس هذه محول اثنين القناة التي هي نقطة النهاية رسالة أنفسهم، سوف التواصل مع بعضها البعض عبر كوربا مثل خيارنا ل مكسيريز، وسوف نستخدم كوربا بدلا من جني نظرا لأنه هو معيار الشركة جسر الرسائل تنفذ رسالة محاكاة على نحو فعال الترجمة بين أنظمة الرسائل غير المتوافقة على ما يبدو ولغات مختلفة. مراسل الرسائل باستخدام قناة أدابت rs. The الرسم التخطيطي التالي يظهر تصميم النظام الحالي بما في ذلك البوابات والمكونات الأخرى هذا هو مثال جيد لتطبيق نمط نحن الجمع بين اثنين من محول قناة ق مع بروتوكول غير الرسائل لتنفيذ نمط مترجم الرسالة، وذلك باستخدام نمط واحد فعال لتنفيذ آخر باترن بالإضافة إلى ذلك، غيرنا سياق محول القناة لربط نظامي مراسلة مع بروتوكول ترجمة لغة غير عبر الرسائل بدلا من ربط نظام الرسائل بنظام غير المراسلة. النظام الحالي مع مفتاح قناة Adapters. Structuring Channel. A للعمل مع أنماط ليس فقط معرفة متى لاستخدام أي نمط، ولكن أيضا كيفية الاستخدام الأكثر فعالية كل تطبيق نمط يجب أن تأخذ بعين الاعتبار تفاصيل منصة التكنولوجيا، فضلا عن معايير التصميم الأخرى ينطبق هذا القسم نفس عملية الاكتشاف للعثور على الاستخدام الأكثر كفاءة للقناة نشر الاشتراك في سياق خادم بيانات السوق التواصل مع ر انه تحليلات engine. Real بيانات السوق الوقت ينشأ مع تغذية بيانات السوق، خادم C التي تبث بيانات السوق على تيب يستخدم تغذية بيانات السوق منفصلة قناة الاشتراك الاشتراك لكل السندات أنها أسعار النشر لهذا قد يبدو قليلا المتطرفة منذ كل السندات الجديدة تحتاج إلى قناة جديدة خاصة بها ولكن هذا ليس شديدا جدا لأنك لا تحتاج فعلا إلى إنشاء قنوات في تيبكو بدلا من ذلك، يتم الإشارة إلى القنوات من قبل مجموعة هرمية من أسماء الموضوعات تسمى الموضوعات خادم تيبكو ثم مرشحات تدفق رسالة واحدة حسب الموضوع ، وإرسال كل موضوع فريد من نوعه لقناة افتراضية واحدة ونتيجة لذلك قناة رسالة خفيفة الوزن جدا. يمكننا إنشاء نظام ينشر على عدد قليل من القنوات ويمكن للمشتركين الاستماع فقط للأسعار التي يهتمون بها وهذا يتطلب من المشتركين لاستخدام تصفية الرسائل أو المستهلك الانتقائي لتصفية تدفق البيانات بأكمله لأسعار السندات مثيرة للاهتمام، وتحديد ما إذا كان ينبغي معالجة كل رسالة كما يتم تلقيها وبالنظر إلى أن يتم نشر بيانات السوق الإلكترونية على القنوات المخصصة للسندات، يمكن للمشتركين التسجيل للحصول على التحديثات على سلسلة من السندات هذا يسمح بشكل فعال للمشتركين لتصفية عن طريق الاشتراك بشكل انتقائي في القنوات وتلقي التحديثات فقط من الفائدة بدلا من اتخاذ قرار بعد تلقي الرسالة ومن المهم أن لاحظ أن استخدام قنوات متعددة لتجنب التصفية هو استخدام غير قياسي من قنوات الرسائل في سياق تكنولوجيا تيبكو ومع ذلك، فإننا نقرر حقا ما إذا كان سيتم تنفيذ أو مرشحات الخاصة أو الاستفادة من تصفية القناة في صلب تيبكو - بدلا من ما إذا كان سيتم استخدام الكثير قنوات. المكون التالي نحن بحاجة إلى تصميم هو محرك تحليلات، خادم C تيب آخر من شأنها تعديل بيانات السوق وإعادة بثها إلى تيب على الرغم من أنه خارج نطاق تطوير جافا جمس لدينا، ونحن نعمل بشكل وثيق مع C فريق لتصميم ذلك لأننا العميل الأساسي محرك تحليلات والمشكلة في متناول اليد هو العثور على بنية القناة التي ريبرودكاس الأكثر كفاءة ر بيانات السوق المعدلة حديثا. منذ لدينا بالفعل واحدة مخصصة قناة رسالة لكل السندات الموروثة من تغذية السوق بيانات السوق، سيكون من المنطقي لتعديل بيانات السوق وإعادة بث بيانات السوق المعدلة على السندات مخصصة قناة الرسالة ولكن هذا لن العمل منذ تحليلات تعديل أسعار السندات هي التاجر محددة إذا كنا إعادة بث البيانات المعدلة على قناة رسالة السندات سوف ندمر سلامة البيانات عن طريق استبدال بيانات السوق العامة مع بيانات محددة تاجر من ناحية أخرى، يمكن أن يكون لدينا نوع رسالة مختلفة ل بيانات السوق الخاصة بالتاجر التي ننشرها على نفس القناة مما يسمح للمشتركين بتحديد الرسالة التي يهتمون بها لتجنب تدمير سلامة البيانات ولكن بعد ذلك سيتعين على العملاء تنفيذ فلاترهم الخاصة لفصل الرسائل عن المتداولين الآخرين بالإضافة إلى ذلك، زيادة في الرسائل الواردة من قبل المشتركين، ووضع عبئا لا لزوم لها عليها. هناك خياران. قناة واحدة لكل متداول كل تاجر لديه قناة المعينة لبيانات السوق المعدلة بهذه الطريقة، لا تزال بيانات السوق الأصلي سليمة وكل تطبيق التاجر يمكن الاستماع إلى تجارها محددة قناة رسالة لتعديل الأسعار update. One قناة لكل تاجر لكل بوند إنشاء قناة رسالة واحدة لكل تاجر للسندات فقط لبيانات السوق المعدلة من تلك السندات على سبيل المثال، سيتم نشر بيانات السوق للسندات أبك على قناة بوند أبك في حين أن بيانات السوق المعدلة للتاجر أ سيتم نشرها على قناة قناة التاجر أ، بوند أبك ، بيانات السوق المعدلة للتاجر B على التاجر B، بوند بوند، وهكذا on. One قناة لكل تاجر. قناة واحدة لكل السندات لكل تاجر. هناك مزايا وعيوب لكل نهج النهج لكل السندات، على سبيل المثال، يستخدم الكثير المزيد قناة الرسائل في أسوأ السيناريوهات، سيكون عدد قناة الرسائل عدد إجمالي السندات مضروبا في عدد التجار يمكننا وضع حدود أعلى على عدد القنوات التي سيتم إنشاؤها منذ ونحن نعلم أن هناك فقط حوالي 20 التجار وأنها لا تسعير أكثر من بضع مئات من السندات هذا يضع الحد الأعلى تحت نطاق 10،000، وهو ليس غريبة جدا بالمقارنة مع ما يقرب من 100،000 قناة رسالة تغذية سعر السوق البيانات يستخدم أيضا، لأننا نستخدم تيب وقناة رسالة غير مكلفة للغاية، وعدد من قناة رسالة ق ليست قضية حادة من ناحية أخرى، فإن العدد الهائل من قناة رسالة ق يمكن أن يكون مشكلة من وجهة نظر الإدارة في كل مرة يتم إضافة السندات يجب الحفاظ على قناة لكل تاجر يمكن أن تكون شديدة في نظام ديناميكي جدا نظامنا، ومع ذلك، هو ثابت أساسا كما أن لديها بنية تحتية لإدارة تلقائيا قناة الرسائل ق هذا جنبا إلى جنب مع العمارة الموروثة لعنصر قديم باستخدام نهج مماثل يقلل من الجانب السلبي هذا لا يعني أننا يجب أن تجعل عددا مفرطا لا لزوم لها من قناة الرسائل ق بدلا من ذلك، يمكننا تنفيذ نهج معماري يستخدم عدد كبير من قناة رسالة s عندما يكون هناك سبب. وهناك سبب في هذه الحالة التي تأتي إلى موقع المنطق إذا قمنا بتنفيذ نهج التاجر، محرك أناليتيكش يحتاج المنطق إلى مجموعة المدخلات والمخرجات قنوات هذا لأن تكون قنوات الإدخال من محرك أناليتيكش لكل سند وتكون قناة رسالة الإخراج لكل تاجر، مما يتطلب من محرك أناليتيكش توجيه جميع مدخلات أناليتيكش من روابط متعددة لمتاجر معين إلى مخرجات محددة من المتداول قناة الرسالة يؤدي هذا إلى تحويل محرك التحليلات بشكل فعال إلى جهاز توجيه يستند إلى المحتوى لتنفيذ منطق التوجيه المخصص لتطبيقنا. وفيما يلي بنية رسالة الرسائل، فإن محرك أناليتيكش هو خادم عام يمكن استخدامه من قبل العديد من الأنظمة الأخرى في لذلك نحن لا نريد أن سحابة مع وظيفة نظام معين من ناحية أخرى، فإن النهج لكل السندات يعمل منذ فكرة التاجر امتلاك الناتج تحليلات أسعار السندات هو ممارسة الشركة المقبولة في السندات أ بروبوك يبقي فصل قناة الرسالة تغذية بيانات السوق سليمة، في حين إضافة عدة المزيد من قناة الرسائل ق قبل أن نصل إلى العميل، ونحن نريد الموجه القائم على المحتوى لدمج هذه القنوات عدة في عدد يمكن إدارتها من القنوات نحن لا نريد العميل تطبيق يعمل على سطح المكتب التاجر للاستماع إلى الآلاف أو عشرات الآلاف من قناة رسالة ق الآن يصبح السؤال حيث لوضع جهاز التوجيه القائم على المحتوى يمكن أن يكون ببساطة محول قناة C تيب إلى الأمام جميع الرسائل إلى بوابة التسعير على قناة رسالة واحدة وهذا أمر سيئ لسببين سنكون تقسيم منطق الأعمال بين C وجافا، ونحن سوف تفقد فائدة قناة رسالة منفصلة s على الجانب تيب مما يسمح لنا لتجنب تصفية في وقت لاحق في تدفق البيانات وبالنظر إلى مكونات جافا لدينا، يمكننا إما وضعه في بوابة التسعير أو إنشاء عنصر وسيط بين بوابة التسعير والعميل. في النظرية، إذا استمرنا في الرابطة على أساس الفصل قناة قناة s على طول الطريق إلى العميل، وبوابة التسعير إعادة بث المعلومات التسعير مع بنية القناة نفسها مثل بوابة التسعير ومحرك أناليتيكش وهذا يعني تكرار كل من السندات مخصصة قنوات تيب في جمس حتى لو كنا إنشاء مكون وسيط بين بوابة التسعير والعميل، وسوف تظل بوابة التسعير لا تزال لتكرار جميع القنوات في جمس من ناحية أخرى، تنفيذ المنطق مباشرة في بوابة التسعير يسمح لنا لتجنب تكرار عدد كبير من القنوات في جمس مما يسمح لنا لإنشاء عدد أقل بكثير من القنوات في ترتيب واحد لكل تاجر بوابة التسعير تسجل نفسها من خلال محول قناة تيب C كمستهلك لكل سند من كل تاجر في النظام ثم بوابة التسعير سوف أحيل كل عميل معين فقط الرسائل المتعلقة بهذا التاجر بعينه بهذه الطريقة، نحن فقط استخدام عدد قليل من قناة رسالة s على نهاية جمس، في حين تعظيم بن إفيت من الفصل على نهاية تيب. كامل تدفق بيانات السوق إلى customer. The رسالة تخطيط قناة الرسالة هو مثال جيد لكيفية دمج أنماط مهمة كان الهدف هنا لمعرفة كيفية استخدام فعال قناة رسالة ق قائلا لك استخدام نمط إيسن t بما فيه الكفاية تحتاج إلى معرفة كيفية تنفيذ أفضل ودمجها في النظام الخاص بك لحل المشاكل في متناول اليد بالإضافة إلى ذلك، يظهر هذا المثال القوى التجارية في العمل إذا كنا يمكن أن تنفذ منطق الأعمال في أي من مكوناتنا، يمكننا قد ذهبت مع نهج التاجر ونفذت نهجا أكثر بساطة عموما مع العديد من القنوات أقل. إختيار قناة الرسالة. الآن ونحن نعرف آليات الاتصال بين مكونات جافا جمس والمكونات C تيبكو، ولقد رأينا بعض الرسائل بنية القناة، نحن بحاجة إلى تحديد أي نوع من قناة رسالة جمس s يجب أن تستخدم مكونات جافا للاتصال قبل أن نتمكن من الاختيار بين قنوات الرسائل المختلفة أف أيلابل في جمس، دعونا نلقي نظرة على تدفق رسالة مستوى عال من النظام لدينا اثنين من بوابات التسعير والمساهمة التواصل مع العميل تدفق بيانات السوق إلى العميل من بوابة التسعير الذي يرسل إلى بوابة المساهمة تطبيق العميل يرسل رسالة إلى بوابة التسعير لتغيير التحليلات التي يتم تطبيقها على كل السندات بوابة المساهمة أيضا بإرسال رسائل إلى تطبيق العميل ترحيل حالة تحديثات الأسعار إلى أماكن التداول المختلفة. تدفق رسالة النظام. ويصف مواصفات جمس نوعين قناة رسالة، قناة من قائمة إلى نقطة قناة جمس قائمة انتظار وقناة النشر-الاشتراك جمس الموضوع تذكر أن حالة استخدام النشر الاشتراك هو تمكين جميع المستهلكين المهتمين لتلقي رسالة في حين أن القضية لاستخدام نقطة إلى نقطة هو التأكد من أن واحد فقط يتلقى المستهلك المؤهل رسالة معينة. كثير من النظم ببساطة بث رسائل إلى جميع تطبيقات العميل، وترك كل تطبيق عميل فردي أن تقرر لنفسها ما إذا كان أو لم يكن لمعالجة رسالة معينة وهذا لن يعمل للتطبيق لدينا حيث أن هناك عدد كبير من رسائل بيانات السوق يتم إرسالها إلى كل تطبيق العميل إذا قمنا ببث تحديث بيانات السوق للتاجر غير مهتم، ونحن سوف تهدر دون داع دورات المعالج العميل تقرر ما إذا كان أو لم يكن لمعالجة تحديث بيانات السوق. من نقطة إلى نقطة قناة في البداية يبدو وكأنه خيار جيد لأن العملاء يرسلون رسائل إلى خوادم فريدة من نوعها والعكس بالعكس ولكن كان شرط العمل التجار قد يتم تسجيل في لآلات متعددة في نفس الوقت إذا كان لدينا تاجر تسجيل الدخول في محطتي عمل في وقت واحد ويتم إرسال تحديث السعر من نقطة إلى نقطة، واحد فقط من اثنين من تطبيقات العميل سوف تحصل على رسالة هذا لأن المستهلك واحد فقط على قناة من نقطة إلى نقطة يمكن أن تتلقى رسالة معينة لاحظ أن أول فقط من كل مجموعة من تطبيقات العميل التاجر s يتلقى الرسالة. من نقطة إلى نقطة التراسل ل بري يمكن أن تحل هذه المشكلة باستخدام نمط قائمة المستلمين الذي ينشر الرسائل إلى قائمة المستلمين المقصودين، وضمان أن العملاء فقط في قائمة المستلمين سوف تتلقى رسائل باستخدام هذا النمط، يمكن للنظام إنشاء قوائم المستلمين مع كافة حالات التطبيق العميل ذات الصلة to each trader Sending a message related to a particular trader would in turn send the message to each application in the recipient list This guarantees all client application instances related to a particular trader would receive the message The downside of this approach is that it requires quite a bit of implementation logic to manage the recipients and dispatch messages. Recipient List for Price Updates. Even though point-to-point could be made to work, let s see if there is a better way Using Publish-Subscribe Channel s, the system could broadcast messages on trader specific channels rather than client application specific channels This way, all client applications processing messages for a single trader would receive and process the message. Publish-Subscribe Messaging for Price Updates. The downside of using Publish-Subscribe Channel s is that unique message processing is not guaranteed with the server components It would be possible for multiple instances of a server component to be instantiated and each instance process the same message, possibly sending out invalid prices. Recalling the system message flow, only a single communication direction is satisfactory with each Message Channel Server-to-client communication with publish-subscribe is satisfactory while client-to-server communication is not and client-server communication with point-to-point is satisfactory while server-client is not Since there is no need to use the same Message Channel in both directions, we can use each Message Channel only one direction Client-to-server communication will be implemented with point-to-point while server-to-client communication will be implemented with publish-subscribe Using this combination of Message Channel s, the system benefits from direct communication with the server components using point-to-point messaging and the multicast nature of publish-subscribe without either of the drawbacks. Message flow with Channel Types. Problem Solving With Patterns. Patterns are tools and collections of patterns are toolboxes They help solve problems Some think that patterns are only useful during design Following the toolbox analogy, this is like saying that tools are only useful when you build a house, not when you fix it The fact is that patterns are a useful tool throughout a project when applied well In the following sections we will use the same pattern exploration process we used in the previous section to solve problems in our now working system. Flashing Market Data Updates. Traders want table cells to flash when new market data is received for a bond, clearly indicating changes The Java client receives messages with new data which triggers a client data ca che update and eventually flashing in the table The problem is that updates come quite frequently The GUI thread stack is becoming overloaded and eventually freezing the client since it can t respond to user interaction We will assume that the flashing is optimized and concentrate on the data flow of messages through the updating process An examination of performance data shows the client application is receiving several updates a second some updates occurred less than a millisecond apart Two patterns that seem like they could help slow down the message flow are Aggregator and Message Filter. A first thought is to implement a Message Filter to control the speed of the message flow by throwing out updates received a small amount of time after the reference message As an example, lets say that we are going to ignore messages within 5 milliseconds of each other The Message Filter could cache the time of the last acceptable message and throw out anything received within the next 5 milliseco nds While other applications may not be able to withstand data loss to such an extent, this is perfectly acceptable in our system due to the frequency of price updates. Time based Message Filter. The problem with this approach is that not all data fields are updated at the same time Each bond has approximately 50 data fields displayed to the user including price We realize that not every field is updated in every message If the system ignores consecutive messages, it may very well be throwing out important data. The other pattern of interest is the Aggregator The Aggregator is used to manage the reconciliation of multiple, related messages into a single message, potentially reducing the message flow The Aggregator could keep a copy of the bond data from the first aggregated message, then update only new or changed fields successive messages Eventually the aggregated bond data will be passed in a message to the client For now, lets assume that the Aggregator will send a message every 5 mil liseconds like the Message Filter Later, we ll explore another alternative. Aggregator with partial successive updates. The Aggregator like any other pattern, is not a silver bullet it has its pluses and minuses that need to be explored One potential minus is that implementing an Aggregator would reduce the message traffic by a great amount in our case only if many messages are coming in within a relatively short time regarding the same bond On the other hand, we would accomplish nothing if the Java client only receives updates for one field across all of the traders bonds For example, if we receive 1000 messages in a specified timeframe with 4 bonds of interest, we would reduce the message flow from 1000 to 4 messages over that timeframe Alternatively, if we receive 1000 messages in the same timeframe with 750 bonds of interest, we will have reduced the message flow from 1000 to 750 messages relatively little gain for the amount of effort A quick analysis of the message updates proves t hat the Java client receives many messages updating fields of the same bond, and therefore related messages So, Aggregator is in fact a good decision. What s left is to determine how the Aggregator will know when to send a message it has been aggregating The pattern describes a few algorithms for the Aggregator to know when to send the message These include algorithms to cause the aggregator to send out its contents after a certain amount of time has elapsed, after all required fields in a data set have been completed, and others The problem with all of these approaches is that the aggregator is controlling the message flow, not the client And the client is the major bottleneck in this case, not the message flow. This is because the Aggregator is assuming the consumers of its purged messages the client application in this case are Event-Driven Consumer s, or consumers that rely on events from an external source We need to turn the client into a Polling Consumer or a consumer that continu ously 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 mo re 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 guarantee s 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 couldn t be fixed with a thousand patterns We later addressed this problem by refac toring 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 don t 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 s ee 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 Integration Patterns in Practice Case Study Bond Trading System.
Comments
Post a Comment