天天看點

伺服器的生産來自于生活

軟體、伺服器工作模式的很多靈感都是從餐廳來的,都是為了解決實際問題的。

生産者,消費者;

我們來看去餐廳吃飯的場景:

某日我們肚子餓了,去餐館吃飯,我們需要吃飯,餐館是做飯的。

那麼我是消費者,餐廳是生産者。我消費飯菜,餐廳生成飯菜。

此時剛好正中午吃飯的時候,人很多,而這個餐廳隻有一個廚師在炒菜,是以需要排隊等。

餐廳吃飯的流程:吧台點菜付錢,付款後領号找個位置等,廚房炒菜,飯好了會有人叫号,拿到飯就吃飯。

我點菜一分鐘就好了,但是廚師炒出來需要5~10分鐘,是以我在吧台點好後,服務員會給我一個号(32号),讓我找個位置坐下先喝杯茶。

然後我就找個位置一邊喝茶,一邊看會手機。

8分鐘很快就過了,服務員拿着牌子,喊“32号好了”,誰是32号,我一看我的牌子,“我是32号,我在這兒”,服務員“哦,好的”,然後給我端過來了我剛點的千張肉絲,還有個小細節,她把菜放到我的桌子上的時候收走了我的牌子。當然我的菜已經上了,要這個牌子也沒用了,于是我就開始吃飯了。

其它的人來的晚的還在排隊,還有很多人像我剛才一樣的正在等着“叫号”,有幾個人好像等得有點不耐煩了,頻繁的去催服務員。

但是隻有一個廚師啊,我看到服務員把菜單送到廚房,貼在闆子上,廚師照着菜單炒菜,有時候按照順序,有時候估計是什麼好炒,友善炒,什麼菜有幾份的可以一起炒,總之廚師會想辦法盡量提高效率(關于怎麼提高廚師出餐的效率真的需要到廚房去考察一下廚師的工作情況才能知道的),但中午吃飯人太多了,高峰期,闆子上的菜單都貼滿了,炒不過來啊。

有的沒耐心的甚至要去前台退款不吃了。

有的人排隊排到一半沒有耐心要走了。

有的人看到門口排那麼長的隊,幹脆就沒進來,換别家了。

看着有人走了,老闆就不高興了,怎麼能這樣呢,到手的錢飛了,這不行,趕快打電話叫另外一個廚師來,叫另外一個休假的收銀員也來上班,過了一會,廚房第二個竈台開了,第二個廚師将第一個廚師的闆子上的菜單拿走一部分,貼到自己的闆子上(注意這裡,很重要,這裡面涉及到的細節很重要,下面會說到)開始炒菜,收銀員增加了一個,點菜就可以在兩個吧台點,之前第一個吧台排隊的人看到第二個吧台開了,排在後面的人都一窩蜂的跑去第二個吧台排隊。很快第二個吧台也排滿了人,兩個吧台勢均力敵,人數差不多。(這裡有一個細節,吧台2開的時候,正在吧台1點菜人是不會去吧台2的,因為他此時正在吧台1點呢,注意這個細節,也很重要,下面會說到這有什麼意義)

點菜,上菜的速度提升了之後,店裡的秩序好了很多,吃飯的人也多了,店裡的桌子差不多都坐滿了人,生意好的令人旁邊的店羨慕不已。

老闆可高興了,看着前台不停的收錢,廚房不斷的出餐,心裡美滋滋的。

時間過的很快,飯點的時候很快就過了,吃飯的人漸漸沒有了,此時忙碌的餐廳變得閑起來了,前台兩個妹子沒事了開始互相的聊天,廚房裡有一個廚師也很閑。

老闆又開始皺眉頭了,你們這麼閑可不行,可是要工資的,精明的老闆對來幫忙的前台和廚師說你們現在可以下班了,今天的給你們加半天的工資。

哈哈,聰明的老闆,錢也賺了,人力成本也講到最低化。

我目睹了一切,回到家裡來了靈感,原來伺服器,軟體的工作的方式,靈感就是來自于餐廳啊。于是我趕緊寫下了這些文字,生怕沒能記下這個“偉大”的發現。

以上,純屬瞎編。

再說上面那兩個重要的問題:

其實是資源配置設定,并發的問題。

另外一個廚師來了,将第一個廚師的闆子上的菜單拿下一部分貼到自己的闆子上。

你覺得實際生活中是怎樣的情景呢?

此時廚師1正在炒菜,廚師2來了,要拿掉一下廚師1闆子上的菜單,也就是原本廚師1要炒的菜。

注意這段話有三個重要的資訊:

  1. 廚師1目前正在炒着菜呢
  2. 目前闆子上的所有菜單是廚師1原本準備要炒的菜
  3. 現在廚師2想要配置設定一點過去

那麼這裡就會有一些問題,廚師2拿走一些的時候肯定要問一下廚師1:

廚師2:“喂,你現在在炒什麼菜,沒有炒的我拿去炒了啊”(肯定要問一下,不然廚師1目前再炒青椒肉絲,廚師2沒問,看到闆子上的青椒肉絲也炒了,那這樣就炒了兩個青椒肉絲,重複炒了。)

廚師1:“什麼,别叫,炒菜在呢,把我頭都弄暈了,你等我把這個菜炒完了再說”

他們要重新配置設定資源,因為廚師2是中途進來的,是以要重新配置設定,要保證正确的話,那麼廚師1必須要停下來,然後再一起重新配置設定資源,但是廚師1鍋裡面還炒着菜啊,肯定不能停啊,停下來不就炒糊了,是以廚師1要先把此時鍋裡面正在炒着的菜先炒完,再停下來,也就是說哪怕廚師1接收到了停止工作的指令,也要先把手頭上的正在炒的菜炒完,炒完了再停止工作。

其實這和我們經常說的:熱插拔,平滑停止工作,平滑重新開機等是同樣的意義。

廚師2就乖乖的等廚師1把手頭上的菜炒完,然後他們在開始重新配置設定菜單。

然後開始同時工作,各自炒各自的菜沒有沖突。

其實這裡面涉及到的問題就是:

繼續閱讀