原创 如何基於 Gin 封裝出屬於自己 Web 框架?

思路 在基於 Gin 封裝出屬於自己的 Web 框架前,你需要先了解 Gin 的基本用法和設計理念。 然後,你可以通過以下步驟來封裝自己的 Web 框架: 封裝路由:Gin 的路由是通過 HTTP 方法和 URL 路徑進行匹配的,你可以

原创 Go - 如何編寫 ProtoBuf 插件 (三) ?

目錄前言演示代碼小結推薦閱讀 前言 上篇文章《Go - 如何編寫 ProtoBuf 插件 (二) 》,分享了基於 自定義選項 定義了 interceptor 插件,然後在 helloworld.proto 中使用了插件,最後在 golang

原创 Go - 如何編寫 ProtoBuf 插件 (一) ?

目錄前言自定義選項需求場景推薦閱讀 前言 我們要知道 proto3 和 proto2 的語法,並不是完全兼容的。 具體可查閱官方文檔: Overview Language Guide (proto2) Language Guide (pr

原创 Go - 如何編寫 ProtoBuf 插件(二)?

目錄前言定義插件使用插件獲取自定義選項小結推薦閱讀 前言 上篇文章《Go - 如何編寫 ProtoBuf 插件 (一) 》,分享了使用 proto3 的 自定義選項 可以實現插件的編寫,說到基於 MethodOptions 和 Servic

原创 Go - 關於 protoc 工具的小疑惑

目錄前言疑惑插件小結推薦閱讀 前言 protoc 工具可以幹什麼? protoc 工具可以 通過相關插件 將 .proto 文件編譯成 C、C++、Golang、Java、Python、PHP 等多種語言的代碼。 本文主要討論通過 prot

原创 Golang - 關於 proto 文件的一點小思考

目錄前言helloworld.proto小思考小結推薦閱讀 前言 ProtoBuf 是什麼? ProtoBuf 是一套接口描述語言(IDL),通俗的講是一種數據表達方式,也可以稱爲數據交換格式。 我們常用的數據格式有 JSON 和 XML,

原创 Go - 使用 sync.WaitGroup 來實現併發操作

目錄前言sync.WaitGroup 正確使用sync.WaitGroup 閉坑指南010203小結推薦閱讀 前言 如果你有一個任務可以分解成多個子任務進行處理,同時每個子任務沒有先後執行順序的限制,等到全部子任務執行完畢後,再進行下一步處

原创 Go - 使用 sync.Map 來解決 map 的併發操作問題

目錄前言map 併發操作出現問題sync.Map 解決併發操作問題計算 map 長度計算 sync.Map 長度小結推薦閱讀 前言 在 Golang 中 map 不是併發安全的,自 1.9 才引入了 sync.Map ,sync.Map 的

原创 Go - 基於逃逸分析來提升程序性能

目錄前言什麼是逃逸分析?如何確定是否逃逸?可能出現逃逸的場景010203小結推薦閱讀 前言 爲什麼需要了解逃逸分析? 因爲我們想要提升程序性能,通過逃逸分析我們能夠知道變量是分配到堆上還是棧上,如果分配到棧上,內存的分配和釋放都是由編譯器進

原创 Go - 使用 sync.Pool 來減少 GC 壓力

目錄前言sync.Pool小結推薦閱讀 前言 sync.Pool 是臨時對象池,存儲的是臨時對象,不可以用它來存儲 socket 長連接和數據庫連接池等。 sync.Pool 本質是用來保存和複用臨時對象,以減少內存分配,降低 GC 壓力,

原创 分佈式之接口冪等性

目錄前言冪等性與重複提交比較SQL 語句冪等性SELECTUPDATEDELETEINSERT實現方案方案一方案二小結推薦閱讀 前言 什麼是冪等性?一次和多次請求某一個資源,對資源本身所產生的的影響均與一次執行的影響相同。 冪等性是系統服務

原创 分佈式之配置中心

目錄前言市面上的配置中心還有哪些應用場景?小結推薦閱讀 前言 我們在平時工作中可能會有這樣的需求,系統運行期間需要動態調整配置項,比如: 調整系統告警人 調整活動開關 調整降級開關 調整日誌級別 ... 以上這些還不夠,隨着程序功能的日

原创 爲開源項目 go-gin-api 增加後臺任務模塊

目錄任務管理界面 (WEB)任務調度器任務執行器小結推薦閱讀 任務管理界面 (WEB) 支持在 WEB 界面 中對任務進行管理,例如:新增任務、編輯任務、啓用/禁用任務、手動執行任務 等。 任務的屬性包括: 任務名稱 執行方式 SHE

原创 Kafka 與 RabbitMQ 如何選擇使用哪個?

目錄前言如何選擇?開發語言延遲隊列消息順序性優先級隊列消息留存消息過濾可伸縮行小結推薦閱讀 前言 我們在工作中經常會用到異步消息,主要使用兩種消息模式: 消息隊列 發佈/訂閱 消息隊列:多個生產者可以向同一個消息隊列發送消息,但是一個消

原创 分佈式事務之最終一致性實現方案

目錄前言什麼是最終一致性?實現方案代碼實現小結推薦閱讀 前言 這篇文章是《關於分佈式事務的理解》的後續篇:分佈式事務之最終一致性實現方案。 還是那個電商需求,一個訂單支付完成後的業務場景,有如下操作: 更改訂單的狀態爲 “已支付” 扣減