แนะนำ
Asynq เป็นเฟรมเวิร์กงานอะซิงโครนัสสำหรับภาษา Go โดยใช้ Redis เป็นคิวข้อความและมีความยืดหยุ่นและความง่ายต่อการขยายขนาด
Asynq โดยทั่วไปแล้วเป็นการทำงานของงานแบบ asynchronous ดังนี้:
- ลูกค้าใส่งานเข้าไปยังคิว
- เซิร์ฟเวอร์ดึงงานออกมาจากคิวและเริ่มกระทำการทำงาน (goroutine) สำหรับแต่ละงาน
- มีหลาย goroutines มากระทำการทำงานในลักษณะของการกระจายงาน parallel
คิวงานคือกลไกสำหรับการกระจายงานไปยังเครื่องจักรหลายเครื่อง ระบบสามารถประกอบด้วยเซิร์ฟเวอร์ทำงานและตัวแทนเพื่อบรรทัดงาน high availability และการขยายขนาดแนวนอน
คุณสมบัติ
- รับประกันการกระทำงานของงานอย่างน้อยหนึ่งครั้ง
- ตารางงาน
- ลองทำงานใหม่หากงานล้มเหลว
- การกู้คืนงานอัตโนมัติเมื่อกระทำการทำงานล้มเหลว
- คิวความสำคัญที่มีน้ำหนัก
- คิวความสำคัญที่เข้มงวด
- ความล่าช้าต่ำในการเพิ่มงานเนื่องจากการทำงานเขียนอย่างรวดเร็วใน Redis
- คัดลอกงานโดยใช้ตัวเลือกที่ไม่ซ้ำกัน
- อนุญาตให้ตั้งเวลาหมดเวลาและเวลาสุดท้ัยสำหรับแต่ละงาน
- อนุญาตให้รวมกลุ่มงานเพื่อทำการกระทำต่อเนื่องหลายท่านในแต่ละขบดเดียว
- ส่วนตัวแบบขยายลายงานอย่างยืดหยุ่นโดยสนับสนุน middleware
- อนุญาตให้หยุดคิวเพื่อหยุดการประมวลผลงานจากคิว
- งานเป็นประจำ
- สนับสนุน Redis Cluster เพื่อการแบ่งบันทึกอัตโนมัติและความพร้อมในการให้บริการ
- สนับสนุน Redis Sentinel เพื่อการพร้อมในการให้บริการ
- การรวมกับ Prometheus เพื่อเก็บรวบรวมและแสดงข้อมูลคิว
- อินเทอร์เฟซเว็บเพื่อการตรวจสอบและควบคุมคิวและงานทางไกล
- อินเทอร์เฟซคำสั่งเพื่อการตรวจสอบและควบคุมคิวและงานทางไกล