แนะนำ

Asynq เป็นเฟรมเวิร์กงานอะซิงโครนัสสำหรับภาษา Go โดยใช้ Redis เป็นคิวข้อความและมีความยืดหยุ่นและความง่ายต่อการขยายขนาด

Asynq โดยทั่วไปแล้วเป็นการทำงานของงานแบบ asynchronous ดังนี้:

  • ลูกค้าใส่งานเข้าไปยังคิว
  • เซิร์ฟเวอร์ดึงงานออกมาจากคิวและเริ่มกระทำการทำงาน (goroutine) สำหรับแต่ละงาน
  • มีหลาย goroutines มากระทำการทำงานในลักษณะของการกระจายงาน parallel

คิวงานคือกลไกสำหรับการกระจายงานไปยังเครื่องจักรหลายเครื่อง ระบบสามารถประกอบด้วยเซิร์ฟเวอร์ทำงานและตัวแทนเพื่อบรรทัดงาน high availability และการขยายขนาดแนวนอน

แผนภาพคิวงาน

คุณสมบัติ

  • รับประกันการกระทำงานของงานอย่างน้อยหนึ่งครั้ง
  • ตารางงาน
  • ลองทำงานใหม่หากงานล้มเหลว
  • การกู้คืนงานอัตโนมัติเมื่อกระทำการทำงานล้มเหลว
  • คิวความสำคัญที่มีน้ำหนัก
  • คิวความสำคัญที่เข้มงวด
  • ความล่าช้าต่ำในการเพิ่มงานเนื่องจากการทำงานเขียนอย่างรวดเร็วใน Redis
  • คัดลอกงานโดยใช้ตัวเลือกที่ไม่ซ้ำกัน
  • อนุญาตให้ตั้งเวลาหมดเวลาและเวลาสุดท้ัยสำหรับแต่ละงาน
  • อนุญาตให้รวมกลุ่มงานเพื่อทำการกระทำต่อเนื่องหลายท่านในแต่ละขบดเดียว
  • ส่วนตัวแบบขยายลายงานอย่างยืดหยุ่นโดยสนับสนุน middleware
  • อนุญาตให้หยุดคิวเพื่อหยุดการประมวลผลงานจากคิว
  • งานเป็นประจำ
  • สนับสนุน Redis Cluster เพื่อการแบ่งบันทึกอัตโนมัติและความพร้อมในการให้บริการ
  • สนับสนุน Redis Sentinel เพื่อการพร้อมในการให้บริการ
  • การรวมกับ Prometheus เพื่อเก็บรวบรวมและแสดงข้อมูลคิว
  • อินเทอร์เฟซเว็บเพื่อการตรวจสอบและควบคุมคิวและงานทางไกล
  • อินเทอร์เฟซคำสั่งเพื่อการตรวจสอบและควบคุมคิวและงานทางไกล