سؤال

أنا بصدد تحويل رمز Java الخاص بنا لاستخدام NIO، لكنني لست متأكدا من أفضل طريقة لتصميمه.

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

بالإضافة إلى تصميم "موضوع محدد" هذا "، رأيت أيضا الناس يقولون لاستخدام مؤشر ترابط محدد واحد، وحمام سباحة من خيوط الإرسال. عندما تكون عملية IO جاهزة للأداء، فإن المحدد يخطر مؤشر ترابط المرسل، والذي يقوم بعد ذلك بمعالجة الطلب. يحتوي هذا النموذج على فائدة عدم حظر مؤشر ترابط IO، لكننا الآن يجبرون جميعا على موضوع IO في مؤشر ترابط واحد والتعامل مع مزامنة / قائمة انتظار الأحداث في المرسل.

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

ما هي أفضل طريقة لتنفيذ هذا؟

هل كانت مفيدة؟

المحلول

نلقي نظرة على نمط المفاعل

http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf.

كيف تريد أن يعمل المحددون للعمل حقا على Usecase الخاص بك. (عدد الاتصالات، حجم الرسالة، إلخ)

ما هي المشكلة التي تحاول حلها عن طريق التحويل من IO إلى Nio؟

نصائح أخرى

أنت حقا يجب أن ننظر إلى مينا،

http://mina.apache.org/

يحل كل المشاكل التي ذكرتها.

أيضا إلقاء نظرة على ندتي وهو سريع حقا وميزة غنية وتستخدم أيضا في أنظمة كبيرة وشركات كبيرة مثل Redhat (JBOSS)، Twitter، Facebook ....

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top