![]()
在 2025年10月11日,go-zero 發(fā)布了v1.9.2版本。本次更新并沒有帶來新的功能或重大改動(dòng),而是針對(duì)一個(gè)關(guān)鍵依賴問題進(jìn)行修復(fù),目的是保證整個(gè)項(xiàng)目在依賴管理上的穩(wěn)定性,避免開發(fā)者因?yàn)樯嫌我蕾嚮爻范鴮?dǎo)致構(gòu)建失敗或運(yùn)行異常。
一、版本概述
本次 v1.9.2 版本是一次純修復(fù)版本,唯一的主要改動(dòng)是更新 go-redis 版本,以規(guī)避其中的已回撤版本問題。
在之前的版本中,由于 go-redis 部分版本被官方回撤,依賴該庫(kù)的下游項(xiàng)目可能會(huì)出現(xiàn):
?構(gòu)建失敗
?依賴解析沖突
?運(yùn)行時(shí)不可預(yù)期的行為
v1.9.2 將 go-redis 升級(jí)到安全的可用版本,從而保證用戶繼續(xù)穩(wěn)定地使用 go-zero 進(jìn)行開發(fā)和部署。
二、主要更新內(nèi)容 1. go-redis 依賴更新
? 將
github.com/redis/go-redis/v9從v9.14.0升級(jí)到v9.15.0(同時(shí)調(diào)整 go.sum 中對(duì)應(yīng)的版本信息)。? 這一調(diào)整直接解決了上游依賴版本回撤導(dǎo)致的構(gòu)建與運(yùn)行問題。
為了更好地支持阻塞型 Redis 命令(如 BLPOP, BRPOP, XREADGROUP 等),新增和優(yōu)化了相關(guān)方法的注釋與使用建議:
?新增 CreateBlockingNode 方法說明
? 專為阻塞命令創(chuàng)建一個(gè)單連接專用 Redis 客戶端,避免占滿普通連接池。
? 默認(rèn)連接池大小為 1,確保阻塞操作與普通操作互不影響。
? 新增或完善以下阻塞方法說明:
?
Blpop/BlpopCtx/BlpopEx/BlpopExCtx?
BlpopWithTimeout/BlpopWithTimeoutCtx?
XReadGroup/XReadGroupCtx
核心要點(diǎn):
阻塞型 Redis 命令會(huì)長(zhǎng)時(shí)間占用連接,必須通過 CreateBlockingNode 創(chuàng)建專用連接,避免影響其他 Redis 操作。3. SSE(Server-Sent Events)代碼生成優(yōu)化
在 goctl 的 API 代碼生成中,針對(duì)sse: true注解新增了特殊處理邏輯:
? 生成的 handler 會(huì)創(chuàng)建客戶端 channel,并通過
threading.GoSafeCtx異步推送數(shù)據(jù)。? logic 層方法的簽名改為接受
client chan<- Resp,適配 SSE 推送模式。? 當(dāng)未使用 SSE 注解時(shí),代碼生成保持原有同步返回模式。
同時(shí)新增了gensse_test.go測(cè)試文件,對(duì) SSE 與普通模式的生成結(jié)果進(jìn)行驗(yàn)證。
4. Swagger 生成優(yōu)化
? 修復(fù)
swagger path在根路由/上生成時(shí)多余的尾部斜杠問題:? 例如 prefix 為
/api/v1且 route 為/時(shí),生成路徑應(yīng)為/api/v1,而不是/api/v1/。
? 新增對(duì)應(yīng)的單元測(cè)試
path_test.go,確保 root route 與子路由的路徑生成邏輯正確。
? 改進(jìn)
annotation.go中布爾值、字符串、列表類型 KV 解析邏輯:? 支持無引號(hào)的值直接解析(之前僅支持帶引號(hào)的值)。
? 公共解析邏輯通過
getOrDefault抽象,簡(jiǎn)化重復(fù)代碼。
? 新增
annotation_test.go中的測(cè)試用例,涵蓋帶引號(hào)和不帶引號(hào)的各種情況。
? 修正拼寫錯(cuò)誤,將
preivous改為previous。? 修復(fù) SSE 模板生成時(shí)未使用對(duì)應(yīng)模板文件的問題,保證生成的 handler/logic 使用正確的模板。
? 更新
go.mongodb.org/mongo-driver/v2版本至v2.3.1。? 更新 goctl 工具模塊依賴版本,保持與主框架一致性。
?無功能性變化:業(yè)務(wù)邏輯保持與 v1.9.1 一致。
?安全與穩(wěn)定性提升:通過升級(jí) go-redis 避免構(gòu)建與運(yùn)行風(fēng)險(xiǎn)。
?強(qiáng)烈建議如果項(xiàng)目使用了 Redis,尤其是阻塞型命令,請(qǐng)盡快升級(jí)到 v1.9.2,以確保依賴穩(wěn)定性。
? API 代碼生成場(chǎng)景使用 SSE 的用戶,將獲得更完善的生成邏輯與測(cè)試保障。
go-zero v1.9.2 雖然是一次小版本修復(fù),但它:
?解決了 go-redis 依賴回撤問題,保證了構(gòu)建與運(yùn)行的穩(wěn)定性。
?完善了阻塞型 Redis 操作的說明與方法,讓開發(fā)者避免連接池枯竭。
?優(yōu)化了 goctl SSE 與 Swagger 生成邏輯,提高了代碼生成質(zhì)量與一致性。
我們相信人工智能為普通人提供了一種“增強(qiáng)工具”,并致力于分享全方位的AI知識(shí)。在這里,您可以找到最新的AI科普文章、工具評(píng)測(cè)、提升效率的秘籍以及行業(yè)洞察。 歡迎關(guān)注“福大大架構(gòu)師每日一題”,發(fā)消息可獲得面試資料,讓AI助力您的未來發(fā)展。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.