Asynq異步任務(wù)隊(duì)列實(shí)現(xiàn)
Asynq 是一個(gè) Go 庫(kù),用于排隊(duì)任務(wù)并通過(guò) worker 異步處理它們。它由 Redis 提供支持,旨在實(shí)現(xiàn)可擴(kuò)展且易于上手。
Asynq 工作原理的高級(jí)概述:
- 客戶端將任務(wù)放入隊(duì)列
- 服務(wù)器從隊(duì)列中拉取任務(wù)并為每個(gè)任務(wù)啟動(dòng)一個(gè)工作協(xié)程
- 任務(wù)由多個(gè) worker 同時(shí)處理
任務(wù)隊(duì)列用作跨多臺(tái)機(jī)器分配工作的機(jī)制。一個(gè)系統(tǒng)可以由多個(gè)工作服務(wù)器和代理組成,讓位于高可用性和水平擴(kuò)展。
示例用例
特性
- 保證至少執(zhí)行一次任務(wù)
- 任務(wù)調(diào)度
- 失敗任務(wù)的重試
- 工作人員崩潰時(shí)自動(dòng)恢復(fù)任務(wù)
- 加權(quán)優(yōu)先級(jí)隊(duì)列
- 嚴(yán)格的優(yōu)先隊(duì)列
- 添加任務(wù)的延遲低,因?yàn)?Redis 中的寫(xiě)入速度很快
- 使用唯一選項(xiàng)對(duì)任務(wù)進(jìn)行重復(fù)數(shù)據(jù)刪除
- 允許每個(gè)任務(wù)超時(shí)和截止日期
- 允許聚合任務(wù)組以批處理多個(gè)連續(xù)操作
- 支持中間件的靈活處理程序接口
- 能夠暫停隊(duì)列以停止處理隊(duì)列中的任務(wù)
- 定期任務(wù)
- 支持 Redis Cluster實(shí)現(xiàn)自動(dòng)分片和高可用
- 支持 Redis Sentinels以實(shí)現(xiàn)高可用性
- 與Prometheus集成以收集和可視化隊(duì)列指標(biāo)
- 用于檢查和遠(yuǎn)程控制隊(duì)列和任務(wù)的Web UI
- CLI檢查和遠(yuǎn)程控制隊(duì)列和任務(wù)
穩(wěn)定性和兼容性
狀態(tài):該庫(kù)目前正在進(jìn)行大量的開(kāi)發(fā)工作,頻繁的、破壞性的API變化。
重要提示:目前的主要版本是零(v0.x.x),以適應(yīng)快速開(kāi)發(fā)和快速迭代,同時(shí)獲得用戶的早期反饋(感謝對(duì)API的反饋!)。在v1.0.0版本發(fā)布之前,如果沒(méi)有主要版本的更新,public API 可能會(huì)發(fā)生變化。
評(píng)論
圖片
表情
