原创 如何寫一個RPC框架(六):負載均衡

在後續一段時間裏, 我會寫一系列文章來講述如何實現一個RPC框架(我已經實現了一個示例框架, 代碼在我的github上)。 這是系列第六篇文章, 主要講述了RPC中負載均衡這一塊的內容。 常見的LB策略 常見的LB策略有很多: Ro

原创 《設計數據密集型應用/DDIA》精要翻譯(三) :數據的存儲和獲取之底層數據結構

看了這三章,我最大的收貨並不是說學到了什麼新的知識,而是對以前通過各種渠道所掌握的知識重新進行了梳理和歸納,使它們有種脈絡相通的感覺。 一、驅動你的數據庫的數據結構 這也許是世界上最簡單的數據庫實現: db_set () {

原创 《設計數據密集型應用/DDIA》精要翻譯(七) :Linearizability

定義和理解 Linearizability是常用的一致性模型(對於一致性模型,筆者後續會有專門的文章來討論)之一,Linearizability也可以被稱爲原子一致性(atomic consistency),強一致性(strong con

原创 《設計數據密集型應用/DDIA》精要翻譯(一) :reliability, scalability, maintainability

之前一段時間在看Kafka的源碼分析,想學着做個分佈式消息系統。後來聽說 《設計數據密集型應用》這本書是2017年的神書,對這樣的數據系統的內在精髓有很好的講解。 看完這本書之後再看kafka之類的數據系統能事半功倍。因此,雖然每天忙於

原创 《設計數據密集型應用/DDIA》精要翻譯(二) :數據模型和查詢語言

當我們在設計kafka、mysql這樣的數據密集型應用時,數據模型也許是最爲重要的一個考慮點。因爲它不僅影響了代碼的寫法,還影響着我們解決問題的思維方式。這是第一章第二節的讀書筆記,介紹了幾種不同的數據模型以及數據查詢語言。 (其實看

原创 Netty實戰讀書筆記四:Bootstrapping

在深入地學習了 ChannelPipeline、ChannelHandler 和 EventLoop 之後,你接下來的問題可能是:“如何將這些部分組織起來,成爲一個可實際運行的應用程序呢?” 答案是, 引導(Bootstrapping)

原创 關於負載均衡的一些總結

之前只瞭解Nginx相關的負載均衡,前段時間寫RPC框架的時候涉及到LB這塊,就去詳細學習了些,在這裏做個簡單的總結。 參考資料: http://blog.51cto.com/virtualadc/591396 http://ww

原创 Netty實戰讀書筆記三:EventLoop和線程模型

EventLoop 接口 運行任務來處理在連接的生命週期內發生的事件是任何網絡框架的基本功能。與之相應的編 程上的構造通常被稱爲事件循環— 一個 Netty 使用了 interface io.netty.channel. EventLoo

原创 如何寫一個RPC框架(一):關注點與我的實現

開始造輪子之旅, 本期輪子:RPC框架。 在後續一段時間裏, 我會寫一系列文章來講述如何實現一個RPC框架(我已經實現了一個示例框架, 代碼在我的github上)。 這是系列第一篇文章, 主要從整體角度講述了一個RPC框架組成結構