原创 使用 unistore 對 TiDB 快速進行『回表優化』原型驗證

很早之前,TiDB 流傳着一個段子 - 『每天只有 24 次編譯 TiKV 的機會』,雖然現在這個黑歷史早就成了過去,完整編譯一次 TiKV 的時間其實也就是 10 分鐘,使用 debug 編譯速度會更快,但實話,對於想快速開發進行原型驗證

原创 在go中使用linked channels進行數據廣播

在go中使用linked channels進行數據廣播 原文在這裏(需翻牆),爲啥想要翻譯這篇文章是因爲在實際中也碰到過如此的問題,而該文章的解決方式很巧妙,希望對大家有用。 在go中channels是一個很強大的東西,但是在處理某些

原创 一個簡易版本的lua debugger實現

introduction 工欲善其事,必先利其器。lua作爲一門動態語言,雖然我已經習慣了使用print來進行代碼調試,但是還是有很多童鞋覺得一款好用的調試器能更好的進行lua代碼編寫。所以在以前接手遊戲的lua結合層之後,自然就需要提

原创 mixer: sql詞法分析器設計

介紹 mixer希望在proxy這層就提供自定義路由,sql黑名單,防止sql注入攻擊等功能,而這些的基石就在於將用戶發上來的sql語句進行解析。也就是我最頭大的詞法分析和語法分析。 到現在爲止,我只是實現了一個比較簡單的詞法分析器

原创 go-mysql: database/sql 接口適配

go-mysql已經支持golang database/sql接口,並通過https://github.com/bradfitz/go-sql-test測試用例。 現在go-mysql可以直接通過golang sql接口使用,如下:

原创 moonmq: 用go實現的高性能message queue

介紹 moonmq是一個用go實現的高性能消息隊列系統,後續準備用於我們消息推送服務以及各個後臺的異步任務。 在設計上面,moonmq主要借鑑了rabbitmq以及rocketmq相關的思想,但是做了很多減法,畢竟我不是要設計成一個非

原创 爲什麼你需要混沌工程以及 Chaos Mesh

信心的毀滅與重建 在我最開始學習編程的時候,我一直覺得寫程序是很簡單的事情,程序總是按照我的想法串行的執行的,給一個輸入,總是有着符合預期的固定輸出。那時候寫代碼,可能大的挑戰在於理解分支,循環,但無論怎樣,只要控制得當,事情總是確定的。

原创 管理精力,而非時間

最近愈發感覺時間不夠用,事情太多,精力不足,所以一直在思考如何提升自己的效率,更好的利用時間。當然這方面的書籍也看了一些,不過最近看的一本《精力管理》,讓我可以從另一個維度來思考這個問題。 本書的核心思想其實很簡單 - 管理我的精力,而非

原创 Hermes: a Fast, Fault-Tolerant and Linearizable Replication Protocol

提供高性能的讀寫服務是分佈式研發工程師一直追求的目標,譬如在 TiDB 中,我們就基於原生的一致性算法 Raft 做了非常多的改進和性能優化。當然,在分佈式領域,複製協議不光只有 Raft 這麼一種,譬如這段時間,我就看到了另一個不錯的實現

原创 使用 Loki 來觀察 TiDB 日誌

對於一個系統來說,日誌具有非常重要的作用,當我們遇到某個問題,可以直接登錄到機器上面,看看日誌,grep 下關鍵信息,在輔助其他一些手段,多數就能快速定位問題了。但是,對於分佈式系統來說,因爲日誌散落在很多的機器上面,我們不可能人工的登錄到

原创 如何成爲高效率的工程師

最近看了一本書,叫做 《The Effective Engineer》,中文名翻譯過來大概就是《高效率工程師》這種吧。收益良多,決定寫一下讀書筆記,因爲書裏面的 Engineer 大部分指的就是從事開發的程序員,所以後面我多數會用研發,程序

原创 數據庫進階測試三部曲 - 從 PQS 到 NoREC 再到 TLP

一些機緣巧合,認識了在測試領域做了很深入研究的 Manuel Rigger,也讀了他的三篇 Paper,算是收益匪淺吧,讓我從另一個角度來思考到底我們如何更好的測試 TiDB。 PQS PQS 的 paper 是 Testing Datab

原创 如何高效的閱讀 - 麥肯錫高效閱讀法

最近讀了一本書《麥肯錫高效閱讀法》,稍微還是有點收穫的。作爲一個讀書控,一直在找尋能高效讀書的方法,其實之前看過一本書,叫做《如何閱讀一本書》,但苦於裏面的東西寫的實在是太細,讀完之後反倒是不知道從何做起,也沒啥太多的感覺。但這本《麥肯錫高

原创 如何測試數據庫查詢優化器

我一直認爲,查詢優化器(Query Optimizer,後面簡稱優化器)一直是數據庫領域 Top 級別的 hardcore 技術,自己也一直嘗試去深入理解,但每每看到 TiDB 代碼裏面那一大坨 plan 的代碼,我就望而生畏了,就像是『可

原创 從論文 Millions of Tiny Databases, 聊聊 TiDB 的多租戶

對於很多用戶來說,一直希望 TiDB 能提供多租戶的能力,也就是大家只想部署一個 TiDB 集羣,然後將所有的租戶業務放在這個 TiDB 集羣上面運行。但其實我們並沒有原生提供多租戶的支持。即使在雲上面,TiDB cloud 雖然有多租戶的