原创 思考(六十九):一種基於消息總線的功能可插拔的服務器架構

架構圖 +--------------------+ +----------------+ +----------------+ | |

原创 gitlab 項目支持 go module

gitlab 項目支持 go module 有 2 個地方需要注意: 個人訪問令牌 不支持 HTTPS 的 gitlab 網站 個人訪問令牌 這個網址內創建一個 http://gitlab.xxxx.com/profile/

原创 golang 編譯期設置變量值(備忘)

說明 本文演示給程序打上時間戳,並輸出 目錄結構 fananchong@localhost:~/test$ tree . ├── go.mod ├── g.sh ├── main.go └── version └── ve

原创 redis 源代碼閱讀與學習筆記(五)

AOF 相關 本文關於 Redis 5.0 AOF 相關內容 相關文件 文件 說明 aof.c AOF 主要邏輯都在這裏 bio.c 後臺 IO 線程處理 server.c 執行 AOF 相關操作 處理流程 執行完命令後,會觸發

原创 tabtoy :一款打包工具介紹(備忘)

tabtoy 最近朋友介紹了一款打包工具,初步看了下,挺好的,備忘之 github 地址: https://github.com/davyxu/tabtoy 例子 官網介紹已經很詳細了,這裏截下圖,不用看文字,更好了解 1. ex

原创 redis 源代碼閱讀與學習筆記(一)

簡單動態字符串(SDS) 簡單動態字符串(Simple Dynamic Strings),是 Redis 的基本數據結構之一,用於存儲字符串和整型數據。 相關代碼文件 github 地址 https://github.com/an

原创 redis 源代碼閱讀與學習筆記(三)

相關文件 redis 源代碼以 5.0 爲準 文件 說明 ae_epoll.c epoll api 封裝 ae_evport.c evport api 封裝 ae_kqueue.c kqueue api 封裝

原创 redis 源代碼閱讀與學習筆記(二)

redis 的守護進程 redis 自身支持 4 種方式啓動: 啓動方式 說明 daemonize no 不作爲後臺程序啓動 daemonize yes 作爲後臺程序啓動 supervised upstar

原创 redis 源代碼閱讀與學習筆記(四)

接收發緩存區處理 本章關注 redis 5.0 如何處理接收發數據 相關數據結構 /* With multiplexing we need to take per-client state. * Clients are take

原创 思考(六十):遊戲後端數據的存取優化參考

前言 通常遊戲後端數據存取會一刀切的使用以下某種方式: 使用數據庫方式 優點 缺點 全部使用內存數據庫 TPS 高 內存成本高;落地、數據維護難 全部使用關係數據庫 TPS 低 落地、數據維護易 全部使用內存數據庫(緩存)+關係數

原创 一次僞內存泄露

背景 壓測發現,機器人關閉後,內存沒有減下來,初步判斷是內存泄露 內存泄露排查 - Review 代碼 包括 static 靜態變量 extern 全局變量 單例中的容器字段 沒有發現異常的地方 內存泄露排查 - 使用 gpe

原创 C++ 程序拋異常產生的 core 文件,無法顯示正確的函數調用棧信息(備忘)

問題 比如,如下程序: #include <thread> #include <string> #include <chrono> int f() { throw int(1); } int f2() {

原创 思考(六十八):租約機制在登錄與路由中的應用

背景 在遊戲登錄過程中,涉及分配玩家的服務器資源 同時,這個信息也會用於後續的某些路由 考慮到登錄過程的複雜性與一些切實的需求: 重複登錄 保持會話與服務資源的親和性問題 新舊會話創建與銷燬的併發問題 強行切換服務資源 服務節點

原创 思考(六十七):按段(segment)分片的數據庫應用

問題 在使用數據庫的應用中,通常會通過對 ID 做 hash 映射到分庫分表,達成壓力均攤 在實際實施過程中,通常會有 2 個問題: 當實例進行擴容時,必須停服維護, rehash 用戶數據 不同實例壓力分擔不均,通常 ID 越大

原创 cgo crash 捕獲 go 調用棧、 c 調用棧

魚與熊掌無法兼得 暫時沒有找到調用棧中,同時顯示 go 、 c 相關函數 但是,發現 go 程序因 cgo 拋異常 crash 時,可以分別捕獲各自的函數調用棧 go 調用棧 go 程序 crash 時,會向 stderr 打印所