原创 分析一個簡單的goroutine資源池

分析一個簡單的goroutine資源池 tunny。 從資源池中獲取goroutine並進行處理的邏輯如下: tunny將goroutine處理單元封裝爲workWrapper,由此可以對goroutine的數目進行限制。 workerW

原创 使用delve調試golang

目錄前置要求使用方式使用funcs查找支持的函數使用break(b)打斷點使用breakpoints查看當前活動的斷點。使用clear清除斷點使用goroutines查看所有協程使用stack(bt)查看goroutine的棧信息使用att

原创 比較微服務中的分佈式事務模式

比較微服務中的分佈式事務模式 譯自:Distributed transaction patterns for microservices compared 作爲Red Hat的顧問架構師,曾有幸參與過無數個客戶項目。每個客戶都存在各自的挑戰

原创 訪問kubernetes CRD的幾種方式

訪問kubernetes CRD的幾種方式 最近在使用代碼操作VictoriaMetrics Operator的CRD資源的過程中,探究了幾種訪問CRD資源的方式。下面以VictoriaMetrics Operator的CRD爲例介紹。 方

原创 prometheus告警規則分發服務

Prometheus告警規則分發服務,根據一致性哈希將規則分發到多個節點,使用多個goroutine處理應用告警,在服務增加時可以增加goroutine,服務減少時降低goroutine數目。 規則下發服務 規則下發服務和規則處理服務是一對

原创 golang []byte和string的高性能轉換

golang []byte和string的高性能轉換 在fasthttp的最佳實踐中有這麼一句話: Avoid conversion between []byte and string, since this may result in

原创 支持remote write和exemplar的prometheus服務

最近項目組在做Prometheus指標採集和告警,其中用到了Prometheus的exemplar特性,由於該特性比較新,當前支持該特性的存儲有比較少。因此需要自行實現exemplar功能。 我在github上創建了一個代碼庫,內容如下:

原创 從頭編寫一個時序數據庫

從頭編寫一個時序數據庫 本文介紹如何去設計一個時序數據庫,可以學習一下文章中提及的一些技術點。需要注意的是,本文編寫的時間爲2017年4月,因此文中需要改善的也是老版本的Prometheus存儲存在的問題。 譯自:Writing a Tim

原创 解析Prometheus PromQL

解析PromQL 目前對Prometheus 的promQL 的解析文章比較少,且Prometheus官方也沒有提供一個公共的庫來對齊進行解析。下面實現對promQL的解析,並實現注入label功能。 表達式類型 AggregateExpr

原创 etcd raft 處理流程圖系列3-wal的存儲和運行

存儲和節點的創建 raftexample中的存儲其實有兩種,一個是通過raft.NewMemoryStorage()進行創建的raft.raftStorage,關聯到單個raft節點,另一個是通過newKVStore創建的kv存儲,用於服務

原创 etcd raft 處理流程圖系列3-wal的讀寫

本文僅介紹wal的基本處理,如create、open、close、read等操作,從wal目錄中加載snapshot,wal文件的創建,以及讀取wal目錄中的所有數據(主要是entryType、stateType、metadataType這

原创 etcd raft 處理流程圖系列2-transport

本章給出了raftexample中使用的傳輸層代碼,補全了上一節中傳輸層與raft節點(raft server和channel server)的交互細節。下圖中流程的核心在於傳輸層中的streamRt和pipelineRt,raft的傳輸層

原创 etcd raft 處理流程圖系列1-raftexample

最近在看raft相關的代碼和實現,發現etcd的raft模塊在實現上還是比較靈活的,但缺點就是需要用戶實現比較多的功能,如存儲和網絡等,同時帶來的優點就是不會對用戶的存儲和傳輸作限制。網上對該模塊的描述也比較多,這裏我主要根據代碼畫出簡易的

原创 一種分佈式預寫日誌系統

Waltz 一種分佈式預寫日誌系統 目錄Waltz 一種分佈式預寫日誌系統簡介背景數據庫流處理基本思想現有日誌系統的難點讀-修改-寫的難點實現約束的難度重複消息我們的方案樂觀鎖限制和要求其他常規分佈式系統的東西集羣分區複製協議未完成的特性和

原创 自適應軟件緩存管理

自適應軟件緩存管理 譯自:Adaptive Software Cache Management 簡介 由於負載的多樣性,很難開發一個能夠適用於各種負載的軟件緩存管理策略。在本論文中,我們調研了一種用於軟件緩存管理框架的自適應機制,通過調節參