中文
Netpoll هو إطار عمل لشبكات الإدخال/الإخراج عالي الأداء وغير قابل للحظر، يركز على سيناريوهات RPC، تم تطويره بواسطة ByteDance.
عادةً ما يكون RPC ثقيلًا على منطق المعالجة، وبالتالي لا يمكنه التعامل مع الإدخال/الإخراج بشكل تسلسلي. لكن شبكة مكتبة Go القياسية مصممة لحظر واجهات برمجة تطبيقات الإدخال/الإخراج، بحيث يمكن لإطار عمل RPC اتباع تصميم One Conn One Goroutine فقط. سوف يهدر الكثير من تكلفة تبديل السياق، وذلك بسبب وجود عدد كبير من goroutines في ظل التزامن العالي. علاوة على ذلك، لا يحتوي net.Conn على واجهة برمجة تطبيقات للتحقق من الحياة، لذلك من الصعب إنشاء تجمع اتصال فعال لإطار عمل RPC، لأنه قد يكون هناك عدد كبير من الاتصالات الفاشلة في التجمع.
من ناحية أخرى، يفتقر مجتمع المصادر المفتوحة حاليًا إلى مكتبات شبكة Go التي تركز على سيناريوهات RPC. تركز المستودعات المشابهة مثل: evio وgnet وما إلى ذلك على سيناريوهات مثل Redis وHAProxy.
ولكن الآن، ولدت Netpoll وحلت المشاكل المذكورة أعلاه. إنه مستوحى من تصميم evio وnetty، ويتمتع بأداء ممتاز، وهو أكثر ملاءمة لهندسة الخدمات الصغيرة. يوفر Netpoll أيضًا عددًا من الميزات، ويوصى باستبدال net في بعض سيناريوهات RPC.
لقد قمنا بتطوير إطار عمل RPC Kitex وإطار عمل HTTP Hertz استنادًا إلى Netpoll، وكلاهما يتمتعان بأداء رائد في الصناعة.
توضح الأمثلة كيفية إنشاء عميل وخادم RPC باستخدام Netpoll.
لمزيد من المعلومات، يرجى الرجوع إلى الوثيقة.
بالفعل
IsActive
التحقق مما إذا كان الاتصال حيًاDialer
بناء العملاءEventLoop
بناء الخادممستقبل
غير مدعوم
يجب أن يفي المعيار بمتطلبات الاستخدام الصناعي. في سيناريو RPC، يعد التزامن والمهلة عناصر دعم ضرورية.
نحن نقدم مشروع netpoll-benchmark لتتبع ومقارنة أداء Netpoll وأطر العمل الأخرى في ظل ظروف مختلفة كمرجع.
المزيد من المعايير مرجعية kitex-benchmark وhertz-benchmark.