中文
Netpoll เป็นเฟรมเวิร์กเครือข่าย I/O ประสิทธิภาพสูงที่ไม่ปิดกั้น ซึ่งมุ่งเน้นไปที่สถานการณ์ RPC ที่พัฒนาโดย ByteDance
โดยปกติแล้ว RPC จะใช้ตรรกะในการประมวลผลเป็นจำนวนมาก ดังนั้นจึงไม่สามารถจัดการ I/O แบบอนุกรมได้ แต่เน็ตไลบรารีมาตรฐานของ Go ได้รับการออกแบบมาเพื่อบล็อก I/O API ดังนั้นเฟรมเวิร์ก RPC จึงสามารถติดตามการออกแบบ One Conn One Goroutine เท่านั้น จะทำให้สิ้นเปลืองค่าใช้จ่ายจำนวนมากในการสลับบริบท เนื่องจากมีกอร์รูทีนจำนวนมากภายใต้การทำงานพร้อมกันสูง นอกจากนี้ net.Conn ไม่มี API เพื่อตรวจสอบ Alive ดังนั้นจึงเป็นเรื่องยากที่จะสร้างพูลการเชื่อมต่อที่มีประสิทธิภาพสำหรับเฟรมเวิร์ก 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