Iggy.rs - การสตรีมข้อความที่สร้างด้วย Rust
(blog.iggy.rs)ที่มา
- ในเดือนเมษายน 2023 ตัดสินใจเรียนรู้ Rust
- จากประสบการณ์ด้านระบบกระจายและการรับส่งข้อความ จึงตัดสินใจพัฒนาแพลตฟอร์มสตรีมข้อความ
- เป้าหมายคือเพื่อทำความเข้าใจหลักการทำงานภายในของระบบรับส่งข้อความและ trade-off ที่นักพัฒนาต้องเผชิญ
- Iggy.rs จึงถือกำเนิดขึ้น โดยตั้งเป้าเป็นแพลตฟอร์มสตรีมข้อความที่เน้นความเร็วและความเบา
โปรเจกต์
- Iggy รุ่นแรกใช้โปรโตคอล QUIC เพื่อให้ความสามารถพื้นฐานในการแลกเปลี่ยนข้อความ
- ผ่านการทำต้นแบบและปรับปรุงอย่างต่อเนื่อง จนได้เซิร์ฟเวอร์ที่รองรับการเขียน/อ่านแบบขนานและสตรีมที่แยกอิสระ
- เพิ่มการรองรับโปรโตคอล TCP และ HTTP พร้อมปรับปรุงประสิทธิภาพผ่านการเพิ่มประสิทธิภาพกลไกซิงก์ข้อมูล
- จากการทำเบนช์มาร์กพบว่ามี throughput สูงและ latency ต่ำ จึงเปลี่ยนเป็นโปรเจกต์ระยะยาว
ทีม
- Iggy มีทีมราว 10 คนที่ร่วมกันมีส่วนช่วยในหลายด้าน
- มีส่วนร่วมในโปรเจกต์หลากหลาย เช่น คอร์เซิร์ฟเวอร์, SDK, เว็บ UI และ CLI
- นักพัฒนาที่มีประสบการณ์หลากหลายและมีความหลงใหลในการเขียนโปรแกรม เข้าร่วมกันโดยสมัครใจ
- การมีส่วนร่วมของผู้ร่วมพัฒนาภายนอกจากทั่วโลกช่วยเพิ่มความมั่นใจต่อโปรเจกต์นี้
ฟีเจอร์
- เซิร์ฟเวอร์สตรีมข้อความประสิทธิภาพสูงแบบอิง log ที่ยั่งยืน
- throughput สูง, latency ต่ำ และการใช้ทรัพยากรที่คาดการณ์ได้จากภาษาแบบคอมไพล์อย่าง Rust
- รองรับหลายสตรีม, ท็อปปิก, พาร์ทิชัน และรองรับโปรโตคอลขนส่งที่หลากหลาย
- มี RESTful API, client SDK หลายภาษา และทำงานกับข้อมูลไบนารีได้โดยตรง
- ปรับแต่งความสามารถของเซิร์ฟเวอร์ได้, เก็บ consumer offset ไว้ที่เซิร์ฟเวอร์ และรองรับหลายวิธีในการ polling ข้อความ
- มี consumer group เพื่อคงลำดับข้อความและรองรับการขยายแนวนอน รวมถึงฟีเจอร์หมดอายุข้อความและกำจัดข้อความซ้ำ
- รองรับ TLS สำหรับทุกโปรโตคอลขนส่ง พร้อมการเข้ารหัสข้อมูลแบบเลือกใช้และรองรับ message header
- มี CLI ในตัวสำหรับจัดการสตรีมมิงเซิร์ฟเวอร์และแอปเบนช์มาร์ก พร้อมการแจกจ่ายแบบไบนารีเดียว
โรดแมป
- หลังจากไปปรากฏบนหน้า GitHub Trending ก็ได้มีการพูดคุยกับผู้ใช้เกี่ยวกับการเพิ่มฟีเจอร์
- ตั้งเป้ายกระดับประสิทธิภาพและความน่าเชื่อถือผ่าน clustering, low-level I/O และสถาปัตยกรรม thread-per-core
- กำลังทดลองกลไกฉันทามติ Raft, ปรับปรุงงาน I/O ด้วย io_uring และมีแผนใช้ runtime ของ monoio
อนาคต
- ตั้งเป้าเป็นแพลตฟอร์มสตรีมข้อความสำหรับงานทั่วไป และท้าทายขีดจำกัดของ OS กับฮาร์ดแวร์
- วางแผนรองรับภาษาโปรแกรมที่หลากหลาย รวมถึง CLI และเว็บ UI ในรูปแบบแพลตฟอร์มรวมที่ใช้งานง่าย
- ตั้งเป้าพัฒนาต่อผ่านฟีดแบ็กและไอเดียจากชุมชน
GN⁺ ความเห็น
- Iggy.rs เป็นแพลตฟอร์มสตรีมข้อความที่สร้างบน Rust โดยมุ่งเน้นประสิทธิภาพสูงและ latency ต่ำ
- ในฐานะโปรเจกต์โอเพนซอร์ส มันยังคงเติบโตอย่างต่อเนื่องผ่านการเข้าร่วมและการมีส่วนร่วมโดยสมัครใจจากนักพัฒนาทั่วโลก
- เป้าหมายอันทะเยอทะยานในการก้าวข้ามขีดจำกัดด้านประสิทธิภาพของระบบกระจายผ่านเทคโนโลยีน่าสนใจอย่าง clustering, การปรับ low-level I/O และสถาปัตยกรรม thread-per-core ทำให้เป็นโปรเจกต์ที่มีประโยชน์มากสำหรับผู้ที่สนใจด้านนี้
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News