偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

我能夠快速讀書的秘密:主要靠“猜”!

開發(fā) 開發(fā)工具
有很多人問我,平時是怎么看技術書的,我今天拿一個案例來講一下,你會看到,我主要靠“猜”,自己想想解決方案,然后到書中去驗證。干貨內容較多,建議靜心慢慢看。

 [[285220]]

有很多人問我,平時是怎么看技術書的,我今天拿一個案例來講一下,你會看到,我主要靠“猜”,自己想想解決方案,然后到書中去驗證。干貨內容較多,建議靜心慢慢看。

1

我知道Docker是怎么回事,但是不太清楚Kubernetes究竟在干什么,它要解決什么問題?有哪些功能?在網(wǎng)上搜索了一些文章,可是都無法讓我滿意,因為他們都是非常宏觀地講一講,然后馬上就進入使用細節(jié),讓人還是云里霧里。

之前我就說過,想深入地了解一門技術,最好的辦法就是看書,于是就去購書中心轉了一圈,發(fā)現(xiàn)一本書籍《Kubernetes in Action》,翻了一會兒我就覺得這本書不錯,就拿它來學習吧。

(這里插入一句,我的公眾號文章只能講述一個技術的本質問題,給大家一個大局觀,具體的細節(jié)還得去讀相關的書,有些人抱怨說通過我的文章學不會一個技術,那真是冤枉我了。)

2

這本書一開始就提到了微服務,這是個非常好的切入點,我腦海中立刻想到了微服務的特點,可以獨立部署,輕松擴容。

那擴容的時候具體該怎么做呢?例如有個訂單服務,我想把部署10份,難道我跑到服務器端,手工啟動10個實例?

這肯定不符合自動化運維的方式,也許可以寫個腳本,接受一個參數(shù)或者讀取配置文件,把實例自動創(chuàng)建起來。

但是仔細一想,這樣是不行的,因為現(xiàn)實中會有很多服務器,腳本怎么去管理呢?腳本怎么獲取它們的IP以及它們的負載情況,然后把Docker實例分發(fā)創(chuàng)建到合適的服務器中呢?

于是第一個猜測來了:

最好是有個系統(tǒng),它能管理所有的服務器,我只要告訴他,把訂單服務的docker鏡像部署10份,剩下的事情就不用我管了,都由這個系統(tǒng)來搞定。

這時候我隱隱約約地感覺到了Kubernetes的核心功能。

于是我跳過了微服務的介紹,Docker的介紹,這些都是老掉牙的東西了,迅速翻到了第16頁:

 

這幅圖畫得相當棒,清楚地展示了K8s的核心功能,但是仔細看以后,就發(fā)現(xiàn)有兩個微服務被放到了一起,作為一個整體來部署,這是我之前沒有想到的!

部署的最小粒度并不是Docker鏡像,而是另外一個東西!從系統(tǒng)設計的角度來看,必須得有個詞來表達,這個東西是什么?

于是我又往后翻,哦,原來這個詞叫做pod。

作者告訴我在第3章有詳細介紹,我迫不及待地往后翻,試圖滿足好奇心:pod到底是什么東西。

原來這些pod就像局域網(wǎng)中的一個個獨立的邏輯主機啊,每個Docker實例都是一個進程。

 

3

到目前為止,我就明白了k8s本質上是一層抽象,這一層抽象屏蔽了服務器的細節(jié),程序員不需要知道程序運行在哪個服務器上,只需要告訴k8s自己的需求就好。

那用什么方式來告訴k8s呢?這很容易猜測到,可以:

1. 通過命令行參數(shù)傳遞給k8s, 但是參數(shù)太受限。

2. 用配置文件,在其中可以指明pod的名稱,docker的鏡像名稱...... 可以用XML格式, JSON格式,YAML格式.....

當然,這些念頭都是一閃而過,我翻開這本書的第3章,主要講pod,果然是用YAML,JSON去創(chuàng)建pod, 由于已經(jīng)預料到了,沒什么新意,稍微看了看就跳過。

讓我沒有想到的是可以使用標簽和命名空間對pod進行分組,但是講解有點啰嗦,似乎也不是核心概念,稍微翻了一下就過去了。

稍等 !為什么不在創(chuàng)建pod的時候指定pod的數(shù)量啊?比如我想創(chuàng)建10個訂單服務的docker實例,在哪里指定?仔細看看那些YAML文件,確實沒有副本數(shù)量,這k8s搞什么鬼?這里沒有指定,肯定在別的地方,那就是說:

除了pod之外,還有一個概念,用來指定pod和副本之間的關系,這個概念是什么?

4

快速翻到第4章,哈哈,原來這個概念叫做ReplicationController(簡稱RC),由它來保證pod的數(shù)目符合要求,多了就刪除,少了就添加。

 

從設計角度來看,再次體現(xiàn)了關注點分離,pod負責“靜態(tài)描述”,像一個模板,就像class, RC負責運行時管理,來產(chǎn)生pod的object。

創(chuàng)建RC也是使用YAML,比較讓我意外的是,在指定pod時,用了前面所講的標簽,看來標簽是組織pod的重要方法,有時間回去看看細節(jié)。

需要注意的是,在管理pod數(shù)目的時候,用的是聲明式:“我想要運行10個訂單實例”, 而不是“我想增加3個訂單實例”或“我想刪除3個訂單實例”。 你不用告訴k8s做什么、如何做,只是指定期望的狀態(tài)就好。

5

如果你也善于思考的話,這時候就會冒出了一個新問題:

這些pod 不斷地被刪除,被增加,不斷地變化,那外界怎么去訪問他們呢?

比如客戶端正在訪問pod1,然后pod1所在的機器掛掉,ReplicationController在另外一臺機器上創(chuàng)建了pod2,IP都變了,那客戶端下一次去訪問pod2呢?

如果讓我設計,我肯定得提供另外一個抽象層,讓這個抽象層來屏蔽后端的變化,讓客戶端連接到這個抽象層上。

k8s 會怎么做呢?第4章給出了答案:服務。 我個人覺得這個詞起得不好,太抽象,太廣泛。

 

可以看出,k8s和其他系統(tǒng)一樣,也是不斷地通過分離關注點,不斷地抽象來解決一個個問題的。

到目前為止,我腦海中想的都是那些“無狀態(tài)”的pod,可以隨意增加和刪除, 但肯定存在“有狀態(tài)”的pod,有持久化的需求,可以把數(shù)據(jù)存儲到硬盤上,這該怎么辦?

帶著這個問題,繼續(xù)上路吧!

6

好了,啰嗦了這么多,稍微總結一下:我希望給大家分享的就是,看書的時候要主動思考,不要被動接受。

帶著問題去看,自己先想想解決方案,然后到書中去驗證,效率會非常高,讀起來會非??臁?/p>

如果自己的問題在書中很快就得到回答,那讀起來就會酣暢淋漓;如果遲遲得不到回答,或者書中一直不厭其煩地描述細枝末節(jié),那我很快就喪失興趣,把書扔掉。

當然,由于每個人的基礎不同,可能剛開始讀書的時候提不出問題,或者提不出有價值的問題,這時候可以去直接看具體內容,但是不能放棄思考:這個技術點是要解決什么問題的?是怎么解決的?

希望每個人都建立一套自己的知識體系,從這個知識體系中能伸出很多的觸角,能像海綿一樣吸收外界的知識,不斷地為自己的知識體系添磚加瓦。

 

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2021-10-18 09:08:06

機器人人工智能AI

2023-12-25 09:26:24

OpenAI人工智能AI

2020-05-27 16:48:01

人工智能技術機器學習

2023-08-18 14:22:42

2015-05-28 14:11:36

Java長盛不衰20年

2019-06-04 15:27:49

InnoDB存儲引擎

2023-08-24 10:49:45

數(shù)字化轉型

2012-05-11 09:13:28

程序員開發(fā)者

2020-03-11 09:50:21

時序數(shù)據(jù)庫快速檢索

2009-07-28 10:36:58

云計算Google秘密武器

2022-12-29 16:01:50

AI聊天機器人ChatGPT

2024-06-25 09:08:24

.NETCSV文件

2009-12-14 13:13:53

靜態(tài)路由表

2015-08-21 11:35:44

2010-04-27 09:16:49

2019-04-30 15:10:42

Python調試工具編程語言

2022-07-25 09:40:41

內存00M

2015-07-30 09:48:38

自學編程3遍讀書法

2023-01-30 11:27:57

人工智能高性能計算CPU

2012-03-28 22:12:00

游戲
點贊
收藏

51CTO技術棧公眾號