- ช่วยให้สร้างโปรแกรมแบบทำงานพร้อมกันได้ง่ายด้วยองค์ประกอบที่เรียบง่ายและนำกลับมาใช้ซ้ำได้
- ลด Boilerplate โดยยังคงรักษาโมเดลแบบอิง channel ที่เป็นธรรมชาติของ Go
ฟีเจอร์หลักและเป้าหมาย
- ทำให้งานด้าน concurrency ทั่วไปง่ายขึ้น
- มอบวิธีที่ปลอดภัยและสะอาดสำหรับงานอย่างการรันงานแบบขนานและการประมวลผลอีเวนต์แบบเรียลไทม์
- ซ่อนความซับซ้อนของ goroutine, channel และการจัดการ error
- ให้ผู้พัฒนาควบคุมระดับของ concurrency ได้อย่างเต็มที่
- รองรับการเขียนโค้ดแบบโมดูลาร์
- ฟังก์ชันทำงานโดยรับ Go channel เป็นอินพุตแล้วคืน channel ที่ถูกแปลงแล้ว
- เชื่อมหลายงานต่อกันเป็นลูกโซ่ได้ คล้ายกับ Unix pipe
- รวมศูนย์การจัดการ error
- สามารถจัดการ error ที่เกิดขึ้นใน pipeline ได้จากจุดเดียว
- ในกรณีที่ซับซ้อน ยังมีเครื่องมือสำหรับดักจับหรือจัดการ error ที่จุดเฉพาะได้
- ทำให้การประมวลผลสตรีมง่ายขึ้น
- รองรับการประมวลผลสตรีมแบบไม่สิ้นสุด
- เหมาะกับข้อมูลขนาดใหญ่ที่ไม่พอดีกับหน่วยความจำหรือการประมวลผลแบบเรียลไทม์
- รองรับงานขั้นสูง
- มีฟีเจอร์ขั้นสูง เช่น การประมวลผลแบบแบตช์, Map-Reduce, การแยกสตรีม และการรวมสตรีม
- รองรับ pipeline ไม่เพียงแบบเชิงเส้น แต่รวมถึงแบบ DAG (Directed Acyclic Graph)
- รองรับการขยายแบบกำหนดเอง
- เข้ากันได้กับ Go channel มาตรฐาน และเพิ่มฟังก์ชันที่ผู้ใช้กำหนดเองได้ง่าย
- น้ำหนักเบาและไม่มี dependency
- มี API ขนาดเล็กและเป็น zero-dependency จึงผสานเข้ากับโปรเจกต์เดิมได้ง่าย
- ใช้ทรัพยากรน้อยที่สุด
ยังไม่มีความคิดเห็น