-
使用 Asynq 實現(xiàn) Go 異步任務(wù)處理
1. 介紹 Asynq 是一個 Go 庫,用于對任務(wù)進行排隊并與工作人員異步處理它們。 它的工作原理: 客戶端將任務(wù)放入隊列 服務(wù)器從隊列中拉出任務(wù)并為每個任務(wù)啟動一個工作 goroutine 多個工作人員同時處理任務(wù) 倉庫鏈接:https://github.com/hibiken/asynq) #?2. 快速開始 ?2.1 準(zhǔn)備工作 確保已安裝并運行了redis redis-server 安裝asynq軟件包 go?get?-u?github.com/hibiken/asynq 創(chuàng)建項目asy…
-
3種常用的 Web 會話管理方式
http 是無狀態(tài)的,即我們的一次請求結(jié)束后,下一次請求,服務(wù)端他并不知道是哪個用戶發(fā)來的。 我們在業(yè)務(wù)開發(fā)中通常是不需要關(guān)注是哪個客戶端發(fā)來的,更多的是關(guān)注是哪個用戶發(fā)來的。 基于這個特點,我們在處理業(yè)務(wù)邏輯時,就得想方設(shè)法地在下一次請求時讓服務(wù)端知道我是哪個用戶。 為什么是下一次呢? 因為首先我們得先登錄,才能告訴下一次請求是哪個,否則我們的很多業(yè)務(wù)就沒法開展,這就是所謂的會話管理。 那我們在項目里通常是怎么去管理我們的會話呢? 下面介紹常用的三種方式: 一、基于 server 端 sess…
-
Goroutine 是 Go 的并發(fā)機制中 絕對的主角
由于對普通語法的介紹網(wǎng)上資源極多,Go 官方的上手指南 A Tour of Go: https://tour.golang.org/ (請自備梯子)就是極好的例子,我不再打算就語法細節(jié)進行詳述。這次,讓我們直切肯綮,從 Go 最大的賣點入手——并發(fā) (Concurrency)。