• ช่วยให้สร้างโปรแกรมแบบทำงานพร้อมกันได้ง่ายด้วยองค์ประกอบที่เรียบง่ายและนำกลับมาใช้ซ้ำได้
  • ลด 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 จึงผสานเข้ากับโปรเจกต์เดิมได้ง่าย
    • ใช้ทรัพยากรน้อยที่สุด

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น