自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

 [[285220]]

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

1

我知道Docker是怎么回事,但是不太清楚Kubernetes究竟在干什么,它要解決什么問題?有哪些功能?在網(wǎng)上搜索了一些文章,可是都無法讓我滿意,因?yàn)樗麄兌际欠浅:暧^地講一講,然后馬上就進(jìn)入使用細(xì)節(jié),讓人還是云里霧里。

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

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

2

這本書一開始就提到了微服務(wù),這是個(gè)非常好的切入點(diǎn),我腦海中立刻想到了微服務(wù)的特點(diǎn),可以獨(dú)立部署,輕松擴(kuò)容。

那擴(kuò)容的時(shí)候具體該怎么做呢?例如有個(gè)訂單服務(wù),我想把部署10份,難道我跑到服務(wù)器端,手工啟動(dòng)10個(gè)實(shí)例?

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

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

于是第一個(gè)猜測(cè)來了:

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

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

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

 

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

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

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

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

原來這些pod就像局域網(wǎng)中的一個(gè)個(gè)獨(dú)立的邏輯主機(jī)啊,每個(gè)Docker實(shí)例都是一個(gè)進(jìn)程。

 

3

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

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

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

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

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

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

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

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

4

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

 

從設(shè)計(jì)角度來看,再次體現(xiàn)了關(guān)注點(diǎn)分離,pod負(fù)責(zé)“靜態(tài)描述”,像一個(gè)模板,就像class, RC負(fù)責(zé)運(yùn)行時(shí)管理,來產(chǎn)生pod的object。

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

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

5

如果你也善于思考的話,這時(shí)候就會(huì)冒出了一個(gè)新問題:

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

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

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

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

 

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

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

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

6

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

帶著問題去看,自己先想想解決方案,然后到書中去驗(yàn)證,效率會(huì)非常高,讀起來會(huì)非???。

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

當(dāng)然,由于每個(gè)人的基礎(chǔ)不同,可能剛開始讀書的時(shí)候提不出問題,或者提不出有價(jià)值的問題,這時(shí)候可以去直接看具體內(nèi)容,但是不能放棄思考:這個(gè)技術(shù)點(diǎn)是要解決什么問題的?是怎么解決的?

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

 

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2021-10-18 09:08:06

機(jī)器人人工智能AI

2023-12-25 09:26:24

OpenAI人工智能AI

2020-05-27 16:48:01

人工智能技術(shù)機(jī)器學(xué)習(xí)

2023-08-18 14:22:42

2015-05-28 14:11:36

Java長(zhǎng)盛不衰20年

2019-06-04 15:27:49

InnoDB存儲(chǔ)引擎

2012-05-11 09:13:28

程序員開發(fā)者

2023-08-24 10:49:45

數(shù)字化轉(zhuǎn)型

2020-03-11 09:50:21

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

2009-12-14 13:13:53

靜態(tài)路由表

2009-07-28 10:36:58

云計(jì)算Google秘密武器

2024-06-25 09:08:24

.NETCSV文件

2019-04-30 15:10:42

Python調(diào)試工具編程語言

2022-12-29 16:01:50

AI聊天機(jī)器人ChatGPT

2015-08-21 11:35:44

2010-04-27 09:16:49

2015-07-30 09:48:38

自學(xué)編程3遍讀書法

2019-09-04 19:29:14

云計(jì)算混合云資源

2012-03-26 15:08:22

我畫你猜

2012-03-28 22:12:00

游戲
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)