原创 Zookeeper源碼分析:主從角色關係流程概述

參考資料 <<從PAXOS到ZOOKEEPER分佈式一致性原理與實踐>> zookeeper-3.0.0 主從關係概述 在概述了主從角色的初始化流程之後,本文主要來梳理分析一下Zookeeper服務端的邏輯關係,包括選舉的情況的

原创 兩階段提交(Two-Phase Commit)

兩階段提交 兩階段提交是一種同步協議,是計算機網絡尤其是在數據庫領域內,爲了使基於分佈式系統架構下的所有節點在進行事務處理過程中保持原子性和一致性而設計的一種算法。 兩階段提交的執行過程 在兩階段提交過程中,主要分爲了兩種角色協調

原创 Zookeeper源碼分析:Follower角色初始化

參考資料 <<從PAXOS到ZOOKEEPER分佈式一致性原理與實踐>> zookeeper-3.0.0 Follower角色初始化 本文主要簡述一下Follower角色初始化的流程,並概述一下主要的操作。 Follower角色

原创 leveldb源碼分析:數據查詢

leveldb數據查詢 查詢的示例代碼如下: string res; status = db->Get(ReadOptions(), "KeyNameExample", &res); 本文就先分析一下數據的獲取流程。 db->G

原创 leveldb源碼分析:數據合併落盤

數據的合併落盤 本文主要來梳理一下,leveldb數據是怎樣從內存寫入文件這麼一個過程的。在前文的描述中,在數據庫的Open過程中,在數據的Get過程中或者Write數據的時候等情況下都可能會觸發到leveldb數據合併並寫入本地

原创 leveldb源碼分析:數據插入續(跳錶)

leveldb數據的插入-跳錶 本文主要是接着上一篇文章,繼續深入探索Write函數調用插入之後的流程。 status = WriteBatchInternal::InsertInto(updates, mem_); In

原创 leveldb源碼分析:數據插入與獲取Put與Delete

leveldb數據的插入與獲取 leveldb提供的數據的交互接口如下; // Set the database entry for "key" to "value". Returns OK on success, // a

原创 Bigtable:結構化數據的分佈式存儲系統

相關說明 Bigtable是一個用於管理結構化數據的分佈式存儲系統,其設計目的是爲了通過數千個服務器管理大規模數據。谷歌許多的項目例如,web索引、谷歌地球和谷歌金融都使用了Bigtable來存儲大規模數據。這些應用對Bigtab

原创 leveldb源碼分析:Open啓動流程

leveldb概述 Leveldb 是一個持久化的KV存儲系統,主要將大部分數據存儲在磁盤上,在存儲數據的過程中,根據記錄的key值有序存儲,當然使用者也可以自定義Key大小比較函數,一個leveldb數據庫類似與一個操作系統文件

原创 Linux內核網絡棧1.2.13-tcp.c概述

參考資料 <<linux內核網絡棧源代碼情景分析>> af_inet.c文件中調用函數在協議層的實現 本文主要根據在af_inet.c文件中根據初始化不同的協議,來調用不同的協議族處理。在af_inet.c中的inet_crea

原创 Linux內核網絡棧1.2.13-icmp.c概述

參考資料 <<linux內核網絡棧源代碼情景分析>> icmp協議 在實現的過程中, ICMP協議工作再IP協議之上,但又不與TCP協議工作再一級,而是在下一級,在一般ICMP模塊處理完後,還需要進一步調用TCP協議進行處理。該

原创 Linux內核網絡棧1.2.13-route.c概述

參考資料 <<linux內核網絡棧源代碼情景分析>> route路由表概述 在IP協議的實現中,只要發送數據包都要查詢路由表,選擇合適的路由選項,確定下一站的地址,並構造MAC地址,進而將數據包發往鏈路層進行處理,本文就繼續學習

原创 Linux內核網絡棧1.2.13-af_inet.c概述

參考資料 <<linux內核網絡棧源代碼情景分析>> socket常用函數繼續調用分析 根據socket提供的常用庫函數,socket、read和write等函數,繼續往下一層分析tcp/ip協議的執行過程,本文分析的函數大部分

原创 Linux內核網絡棧1.2.13-socket.c函數概述

參考資料 <<linux內核網絡棧源代碼情景分析>> socket常用函數概述 根據socket提供的常用的庫函數,socket,read,write等函數, 執行的過程 inet協議的註冊流程 在上文中分析過了在設備的初始化過

原创 lemon的簡單使用

lemon概述 lemon是LALR(1)的用於c或c++的解析器與生成器,與大名鼎鼎的bison與yacc做類似的工作,但又不是簡單複製它們的功能,lemon使用了設計了不同的語法格式來減少編碼的錯誤,lemon還使用了比yac