[c#] أفضل الممارسات لتنفيذ تغذية البيانات المالية الحية الكمون منخفضة باستخدام WCF؟


2 Answers

ما مدى انخفاض "الكمون المنخفض" ومدى انشغال "المكثف"؟ يجب أن تكون لديك فكرة عن ما تسعى إليه لاختيار المقاربة الصحيحة.

يمكنني تزويدك ببعض الأجهزة التي تستجيب إلى 100٪ من جميع الطلبات داخل ، على سبيل المثال ، 20 وحدة حتى تصل إلى الحد الأقصى من قدرة جهاز الشبكة الخاص بك ، ولكنها لن تستخدم WCF كثيرًا على الإطلاق.

لتقريب عريض جدا ، أود أن أقول أن أشياء مثل WCF هي عالية المستوى للغاية ، وسهولة الاستخدام ، والتجريد من أجل المنفعة للمبرمج مقابل الأداء (الكمون / الإنتاجية). سواء أكان يتاجرون به كثيرًا حتى يحتاج تطبيقك إلى أرقام حقيقية.

الحد الأدنى لبروتوكول بروتوكول الإنترنت (الكمون) الأدنى ، والحد الأدنى من الحمل في الاستخدام واسع النطاق هو UDP - وهذا هو السبب في استخدامه لأشياء مثل DNS و NTP. إنه قابل للتحجيم للغاية على الخادم ، لأن الخادم لا يحتاج إلى الاحتفاظ بأي حالة ، وهو سهل التطبيق على أي نظام أساسي تقريبًا. ولكنك تحتاج إلى التفكير في حزم الشبكة بدلاً من كائنات .NET. هل يمكنك الحصول على برنامج العميل النهائي أيضًا؟

Question

لدي خدمة .NET التي تحتاج إلى تغذية البيانات المالية الحية لعملائها. قد يكون معدل الإخراج لهذه الخلاصة شديدًا وأنا أبحث عن أفضل بنية لتنفيذ هذا النوع من الخدمة بوقت استجابة منخفض وأداء عالي.

كنت أفكر في استخدام نوع من موفر بيانات الدفق ، واحد يستخدم في الصوت أو الفيديو ، ولكن إرسال تحديثات الموجز بدلاً من ذلك.

سوف نقدر أي فكرة حول هذا الموضوع ، أو أي أمثلة في العالم الحقيقي

تحديث:

لست مضطرا لاستخدام WCF ، وهذا هو النهج الأول فقط لأن التكنولوجيا الحالية. أي تطبيق آخر في C # هو موضع ترحيب.




تسأل تحديدًا عن "خلاصة المستخدم منخفضة الكمون". ما الذي تريده حقًا مع زمن انتقال منخفض ، لـ "Feed Only" (وخاصة إذا لم يولد إيرادات) ، هل يمكن للمستخدمين الانتظار ثانية؟ هذا ليس الكمون المنخفض.

إذا كنت ترغب في المتاجرة في FAST ، فعليك التحرك فعليًا عبر الشارع من Exchange (أو قريبًا باستخدام رابط بصري). بعد ذلك تحتاج إلى "تداول على البطاقة" ؛ إن بطاقة الإيثرنت هي "ذكية" ويتم تغذيتها "معادلات التجارة" التي تبرمج بطاقة الشبكة لإجراء تبادل مبرمج مسبقًا استنادًا إلى البيانات المستلمة (دون إزعاج الكمبيوتر الخاص بك).

انظر: http://intelligenttradingtechnology.com/article/groundbreaking-results-high-performance-trading-fpga-and-x86-technologies

تعلم التلاعب بأن البيئة سوف تشتري لك أكثر من إعادة اختراع العجلة.

إن الكمون المنخفض للغاية أمر مكلف ، لكن المليارات معرضة للخطر. الرهانات الخاصة بك (والسعي إلى أقل الكمون) مع اختناقها من قبل دولار.




كلما زادت الافتراضات التي تقوم بها والميزات التي تقطعها بشكل أسرع ، يمكنك جعل النظام الخاص بك. كلما حاولت أن تجعل الأشياء أكثر قوة ومرونة ، كلما كان أداؤك سيعاني أكثر. أود أن اقترح عددًا قليلاً من الأشخاص الأساسيين:

  1. تنسيق تبادل البيانات الثنائية. لا تستخدم XML أو أي طريقة أخرى مقروءة من قبل الإنسان لتمرير بياناتك.
  2. تنسيق قوي متسلسل للبيانات بشكلٍ كافٍ يمكنه دعم النهايات المتقاطعة للهندسة عبر المشتركة. BER يتبادر إلى الذهن - يبدو أن C # لديها الدعم
  3. بروتوكول نقل يضمن التسليم وسلامة البيانات. إذا كان أي نوع من الخوارزمية المالية سيستخدم هذه البيانات ، فحتى في حالة عدم وجود علامة واحدة قد يعني أن الفارق بين الطلبية يتم تشغيلها أو فقدانها على السعر. حتى إذا كنت ستقوم بجمع القراد في خادمك ، فإنك لا تزال تريد التحكم في كيفية تقديم المعلومات إلى عملائك. يعمل TCP للأنظمة الموزعة. ومع ذلك ، هناك بدائل أسرع بكثير إذا كان عملائك على نفس الجهاز مثل الخادم الخاص بك. UDP لن حتى النظام garauntee ، والتي يمكن أن تكون مشكلة (على الرغم من أنه لا يمكن التغلب عليها).

فيما يتعلق بالمعالجة الداخلية:

  1. تجنب السلاسل والصفوف الأخرى التي تضيف مقدار كبير من الحمل إلى مهام بسيطة. استخدم صفائف الأحرف الأساسية بدلاً من ذلك. لست متأكدًا من الخيارات الموجودة في C # أو إذا كان لديك بدائل خفيفة الوزن. إذا كان الأمر كذلك ، استخدمها. هذا ينطبق على هياكل البيانات كذلك.
  2. كن على دراية بأخطاء المقارنة المزدوجة / الطافية. استخدم المقارنات التي تحقق فقط من مستوى الدقة اللازم. إن أمكن تحويل كل شيء إلى الأعداد الصحيحة داخليًا وتوفير بيانات وصفية كافية لتحويلها مرة أخرى إلى الطرف الآخر.
  3. استخدم شيئًا مشابهًا للمخصصين المجمعين في C ++. إن عدم معرفتي بـ C # يمنعني من أن أكون أكثر تحديدًا. مرة أخرى C # ربما ليس أفضل خيار هنا. خلاصة القول هي أنك سوف تخلق وتدمر الكثير من كائنات التجزئة وليس هناك سبب لطلب نظام التشغيل للذاكرة في كل مرة.
  4. فقط إرسال deltas ، لا ترسل المعلومات التي لديك بالفعل العملاء الخاصة بك. هذا يفترض أنك تستخدم النقل مع التسليم المضمون. إن لم يكن يمكنك في نهاية المطاف عرض البيانات التي لا معنى لها لفترة طويلة.





Related



Tags

c# c#   .net .net   wcf