它來了它終於來了- Beego 1.12.2
它來了它終於來了- Beego 1.12.2
作者:鄧明 from beego-dev
不久前,我們發文說 Beego 重新組建了一個團隊,再次開始維護了。
經過這一段時間的努力,我們終於完成了重啟之後的第一個版本。這個版本,我們集中精力修復了很多陳年 issue,同時也嘗試支援了一下 promethues
。歡迎大家使用。
Release Note
Prometheus 支援
一個沒有觀測性支援的框架是沒有靈魂的。這一個版本,我們走出瞭解決 metric
問題的第一步,使用 Prometheus
開發了一個 Web Middleware
,使用者可以在開啟了 admin
服務之後嚐個鮮了。
Prepare Statement 快取優化
在 v1.12.0 的時候,我們引入了 Prepare Statement
的快取機制。Beego 內部所有的查詢都會通過 Prepare Statement
來執行,以提高安全性和效能。
但是在快取 Prepare Statement
的時候,存在兩個問題:
- 未能設定快取的
Prepare Statement
的數量限制,使用者使用不當的時候,會導致 "Can't create more than max_prepared_stmt_count statements" 的錯誤; - 任何一個
Prepare Statement
被建立出來以後,我們並沒有主動關閉,而是依賴於會話結束之後自然釋放;
這一次,我們也改進了這些缺點:
- 我們採用了 LRU 來快取
Prepare Statement
,當一個Prepare Statement
被 LRU 淘汰的時候,我們主動關閉Prepare Statement
; - 為了解決
Prepare Statement
被 LRU 淘汰之後,還存在使用者使用繼續使用該Prepare Statement
的問題,我們引入了計數功能,會等到所有使用者都釋放了Prepare Statement
之後再關閉。
這個優化應該算是走在了 ORM 框架的前列。我們看過一些開源框架的程式碼,它們要麼沒有快取 Prepare Statement
,要麼如優化之前那樣,沒有主動關閉;要麼則是將關閉的決策交給了使用者,依賴於使用者主動找到未被使用的 Prepare Statement
而後自己關閉,而使用者其實也很難判斷出來 Prepare Statement
有沒有被別的使用者使用。
靜態快取檔案優化
社群裡面一直反饋的一個問題是,Beego 快取的靜態檔案的功能,會消耗大量的記憶體,而 Beego 並沒有限制記憶體的使用。 這個功能比較常用的是將 Beego 作為下載伺服器。
這一次我們通過三個角度的優化來徹底解決這個問題:
- 採用 LRU 來做快取,淘汰長期未使用的快取下來的檔案;
- 大檔案不再快取。我們通過引數的形式,允許使用者設定一個閾值,超過這個閾值的檔案將不會被快取下來;
- 限制快取的檔案數量。結合前面的檔案大小限制,使用者可以準確預估,在當前配置下,Beego 靜態檔案快取將會最多佔用多少記憶體;
如果檔案以小檔案為主,那麼這個快取效果將會十分好。
手機全號碼段校驗支援
我們再一次更新了手機號碼校驗的正規表示式,現在已經可以支援全號碼段的手機號碼校驗了。
效能優化
這一次,我們合併了多個跟優化相關的 PR。優化集中在鎖優化,包括縮小鎖的範圍,儘量使用讀鎖等;Redis 採用 Scan
命令來取代 Keys
命令...
更多
我們還修復了其餘的問題,比如說遺漏加鎖導致的併發問題,還有熱更新模組,在設定了某些選項下主執行緒依舊存活的問題……
在經過這個版本以後,我們接下來的核心工作是 Beego v2,目前我們出了一個 V2 RoadMap 在徵集社群意見。歡迎大家參與進來,出謀劃策。
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 它來了 它來了。Laravel Reverb 到來了Laravel
- 它來了,它來了,HarmonyOS應用開發線上體驗來了
- 盼望著,盼望著。它終於來了!!!剪輯Windows PC測試版!Windows
- HTTP/3 來了,你瞭解它麼?HTTP
- 時隔近一年半,《線上客服系統2.0》它終於來了~
- 它來了!Flutter3.0釋出全解析Flutter
- c#多程式通訊,今天,它來了C#
- 漫畫通訊:有了它,終於可以放心買買買了
- VoNR來了,它到底是什麼技術?
- VS Code Day,終於來了!
- 上手了RabbitMQ?再來看看它的交換機(Exchange)吧MQ
- 機器學習快速落地, Amazon SageMaker終於來了!機器學習
- 終於,我也來學習VUE了Vue
- React全新文件終於來了React
- 終於把網站搭建起來了網站
- 淺談邏輯選擇器 -- 父選擇器它來了!
- 它來了!Flutter 應用內除錯工具 UME 開源啦Flutter除錯
- 有了它,Golang 也能 Eval 了Golang
- 終於來了!FastGPT 正式相容 GPT 應用ASTGPT
- DRF + vue + request + selenium 自動化測試平臺,它來了Vue
- APISpace 的 ChatGPT 它來了!一分鐘快速接入沒煩惱APIChatGPT
- TeamSpy又回來了,TeamViewer變成了它的攻擊載體View
- ZT:Linux BIOS贏來了它發展的最好時機LinuxiOS
- 自動駕駛L2來了,它會讓駕駛更輕鬆嗎?自動駕駛
- TVM 中文站正式上線!最全機器學習模型部署「參考書」它來了機器學習模型
- 京東小程式開放平臺終於來了~
- VSCode 的 Live Share 功能終於來了VSCode
- Win8.1開始選單終於來了!
- 肝了一週的 UDP 基礎知識終於出來了。UDP
- 來了來了,CSS 版的冰墩墩來了……CSS
- BI和報表等於資料分析?終於有人講清楚了它們的區別
- 萌寵Aibo回來了!這次,它會認出自己的主人(影片)AI
- 原生 CSS Custom Highlight 終於來了~CSS
- 實時 Django 終於來了 —— Django Channels 入門指南Django
- 來了,來了,你們要的Nginx教程來了Nginx
- 大屏設計器,就它了!
- 小程式巔峰未至,你們就在討論它的終點了?
- 寶鋼寶山基地來了只智慧機器狗,它會幫皮帶機智慧巡檢