原创 Zookeeper源碼分析:選舉流程

參考資料 <<從PAXOS到ZOOKEEPER分佈式一致性原理與實踐>> zookeeper-3.0.0 Zookeeper選舉模式 針對zookeeper-3.0.0版本,選舉模式可以分爲三種模式,主要分爲快速認證選舉,快速選

原创 租約-分佈式緩存一致性的高效容錯機制

租約 租約被提議爲一種基於時間的機制,可提供對分佈式系統中緩存數據的有效一致訪問。非拜占庭式故障會影響性能,而不是正確性,並通過短期租約將其影響降到最低。 緩存引入了確保緩存數據與其主要存儲位置之間一致性的問題。一致的意思是,除了

原创 應用層網關調研與基礎測試

背景 故事的開始還是源於現階段各個平臺之間有些許的接口調用,但是各個平臺之間又相對比較獨立,並沒有將各個平臺整合成一組微服務的需求。現在面臨的問題就是各個平臺直接都有互相調用的需求,如果各個平臺有業務升級的情況下,不一定能察覺到是

原创 遍歷百萬級Redis的鍵值的曲折經歷

背景 暖心同學突然跟我說想要獲取線上所有的Redis的key的大小信息,就是想知道redis中所有對應Key的大小信息(線上使用的redis存儲的信息基本統一而且沒有其他複雜的如set等數據結構),讓我幫忙來解決一下這個問題。聽到

原创 詞法分析淺析

參考資料 《自制編程語言基於C語言》 《自己動手寫編譯器、連接器》 《自己動手構造編譯系統編譯、彙編與鏈接》 《編譯原理 第二版》 詞法分析 詞法分析主要就是將源碼分解成每一個定義的token,通過詞法解析分析出哪些是關鍵字,哪

原创 模板引擎-模板引擎漸進進化

模板渲染 在web開發的過程中,現在比較多的開發方式都是前後端分離開發的方式來進行的,這樣讓前後端的開發更加解耦、前後端解耦開發的效率會比較高。在一些簡單的場景或者項目要求比較簡單的情況下,模板渲染的方式來渲染前端頁面的方式,會是

原创 垃圾回收算法-標記清掃回收

參考書籍 1.垃圾回收算法手冊 自動內存管理的藝術 2.垃圾回收的算法與實現 標記清掃回收 垃圾回收算法一般都是現在的自動內存管理系統中都會使用到的,例如python、go等語言都實現了自己的垃圾回收機制,從而解放了用戶手動來

原创 golang源碼分析:defer流程分析

defer defer是golang中使用的延遲調用的函數,該函數的使用場景就是如果函數執行出錯(panic),也能夠通過recover方式進行捕捉錯誤並將出錯時的一些資源進行回收,如果在性能有要求的情況,並且錯誤能夠控制的情況下

原创 golang源碼分析:編譯過程詞法解析的流程

golang編譯 由於golang作爲靜態語言,當使用go build時就會生成對應的編譯完成之後的文件,那這個編譯過程大致會做什麼事情呢,在golang中的編譯大致有哪些流程。 golang示例代碼 package main

原创 Redis源碼分析:過期key刪除與設置key的過期時間

Redis中設置key過期時間與過期key的處理流程 在Redis中,可以再設置值的時候就設置該Key的過期時間,也可以通過在expire命令來設置某個key值的過期時間,並且在瞭解完設置過期時間之後,來查看一下Redis的過期k

原创 Redis源碼分析:AOF策略與時間觸發任務

時間週期性任務與AOF策略 週期性任務在分析啓動流程與服務端處理的過程的時候,描述過有關時間任務的處理過程,在Redis內部事件驅動的過程中,有通過時間來進行事件的觸發與處理機制,本文會先分析一下主要的時間驅動的任務會完成大致哪些

原创 模式設計概述:反應器(Reactor)模式

事件處理模式 在《面向模式的軟件體系架構卷2:用於併發和網絡化對象模式》中,總結了對於當前比較流行的事件處理模式的四種基本模式,分別是反應器模式、主動器模式、異步完成標記和接收器-連接器模式。 反應器模式,該模式引入的結構將事件

原创 Redis源碼分析:服務器端處理過程

服務器端處理過程 在前面我們大致分析了Redis的服務器端的啓動流程,Redis服務端主要就是依據單線程的反應器模式來設計的,並且在處理的事件過程中主要分爲時間事件和連接響應事件。本文就根據客戶端發送一個請求進來,來查看服務器端是

原创 模式設計概述:代理者模式

分佈式系統模式 分佈式相關的模式設計有大概三種模式,分佈式系統與集中式系統相比需要完全不同的軟件。管道和過濾器模式,微核和代理者模式。 代理者模式 代理者模式體系結構的強制條件是 組件應該能夠訪問其他組件遠程、地點透明的服務調用

原创 Redis源碼分析:基礎概念介紹與啓動概述

Redis源碼分析 基於Redis-5.0.4版本,進行基礎的源碼分析,主要就是分析一些平常使用過程中的內容。僅作爲相關內容的學習記錄,有關Redis源碼學習閱讀比較廣泛的便是《Redis設計與實現》一書,瀏覽學習該書之後,覺得相