kubernetes源碼剖析讀後感(二)

注:結合書中的大概內容以及筆者自身的k8s經驗 總結學到的一些新知識每一篇篇幅不會很長
書很棒強烈推薦買一本讀

本次讀書來自於《kubernetes源碼剖析》 作者鄭東旭

因爲第二章確實筆者只看了一遍,也是有很多地方不懂,所以只能根據自己的能力大概寫,如果覺得有補充或者等等可以留言或者私聊,學習就是需要不斷地交流才能進步

第二章 kubernetes構建過程

第二章分爲幾個部分
1.構建方式
自己的理解:基本在大型的go項目中都會有makefile 的存在 我們就可以使用makerfile去構建開源的應用
k8s還可以用bazel構建和測試kubernetes源碼
這個構建方式這裏就不多說了 因爲確實我也不太看得懂 可以買一本《kubernetes源碼剖析》 來看一下

2.代碼生成器

conversion-gen 自動生成convert函數的代碼生成器,用於資源對象的版本轉換函數
deepocpy-gen 自動生成deecopy函數的代碼生成器,用於資源對象的深複製函數
defaulter-gen 自動生成defaulter函數的代碼生成器,用於資源對象的默認值函數
go-bindata 是一個第三方工具/她能夠將靜態資源文件嵌入go語言中,例如web開發中將靜態的html,javascript等靜態文件嵌入go語言代碼文件中並提取一些操作方法
openapi-gen 自動生成openapi定義文件的代碼生成器

3.代碼生成過程
代碼生成器的代碼生成方式都類似
(1)構建deepcopy-gen二進制文件
(2)生成.todu文件
(3)生成deepcopy深複製相關函數
4.gengo代碼生成器核心
目錄結構

args 代碼生成器的通用flags參數
examples 包含deepcopy-gen、defaulter-gen、import-boss、set-gen代碼生成器的生成邏輯
generator 代碼生成器通用接口generator
namer 命名慣例支持創建不同類型的名稱
parser 代碼解析器,用來構造抽象語法樹
types 類型系統,用於數據類型的定義及類型檢查算法的實現

代碼生成原理
(1)Gather The Info 手機Go語言源碼文件信息及內容
(2)Lexer/Parser 通過Lexer詞法分析器進行一系列此番分析
(3)AST Generator:生成抽象語法樹
(4)Type Checker 對抽象語法樹進行類型檢查
(5)Code Generation 生成代碼 將抽象語法樹轉換爲機器代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章