周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

i042416發表於2019-08-19

Jerry一直認為,金庸的《天龍八部》裡的武學建模已經有點脫離傳統武俠小說的範疇了,像已經走上玄幻道路的靈鷲宮“八荒六合唯我獨尊功”,以及殺傷力足夠能被視為現代鐳射武器的鼻祖,大理段式的“六脈神劍”之類。而另一部經典的射鵰三部曲裡很多的武功設定則中規中矩,其中周伯通自創的七十二路空明拳,是金老獨具匠心的創造之一。

周伯通被黃藥師困在桃花島,宅了十餘年,從《道德經》中參悟到「以虛擊實」,「以不足勝有餘」的武學(程式設計)思想。《道德經》有云:「天下莫柔弱於水,而攻堅強者莫之能勝,其無以易之。弱之勝強,柔之勝剛,天下莫不知,莫能行。」

周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

而這套拳力“若有若無”的武功,使用在生產環境最經典的一幕,就是在百花谷和楊過的“黯然銷魂掌”PK的時候:

周伯通生性好武,雖在百花谷隱居,每日仍是練功不輟,但以他如此功力,普天下哪裡找對手去?這時見楊過願意比武,自是心癢難搔,躍躍欲試,心想若再多言,只怕他忽而又不願動手了,豈不是錯過良機?當下左掌一提,喝道:“看拳!”右手一拳打了出去,使的是七十二路的“空明拳法”。

楊過左手還了一掌,猛覺得對方拳力若有若無,自己掌力使實了固然不對,使虛了也是極其危險,不禁暗暗吃驚,當下展開十餘年來在狂濤怒潮中所苦練的掌法還擊出去。

周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

無獨有偶,在車田正美筆下的《聖鬥士星矢》裡,也有很多像周伯通一樣,擁有一套招式若有若無的好手。如果按照動漫裡越晚出場的人物實力越強的設定,那麼最強的人物無疑是Jerry這張卡片裡秀的,冥界三巨頭之首,天貴星的獅鷲米諾斯,第一域的最高主宰者。

周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless


周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

米諾斯的絕技星塵傀儡線,能夠用一根根看不見的絲線將對手的身體纏繞起來,從而使其像一具傀儡一樣,只能按照自己的意志來活動,是一種非常可怕的招式。在對手眼中,這些由米諾斯小宇宙形成的絲線若有若無,根本無從防禦。米諾斯最高光的戰績,就是一度全面壓制在黃金聖鬥士中實力位居中上游的加隆,後者儘管擁有銀河星爆這種絕招,但是在米諾斯的星塵傀儡線面前,毫無反擊的機會。

周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless


周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

同樣,Jerry第一次接觸SAP Kyma基於Serverless架構的Lambda Function時,感受同周伯通和米諾斯的對手一樣有些疑惑:名字都叫Serverless了,沒了伺服器,那我的函式程式碼到底執行在什麼地方的?

比如在最近Jerry寫的一系列SAP Kyma的文章裡介紹過,我在Kyma上建立了一個名為zjerry-lambda的函式,基於nodejs8:

周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

可以直接在Kyma的測試控制檯裡呼叫這個Lambda Function:

周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

Serverless的字面意思,不是暗示我們沒有伺服器了嗎?那麼這段函式程式碼到底執行在哪裡的?

米諾斯的星塵傀儡線,在冰系法師,百鳥座冰河的凍氣之下,終於被凍結成肉眼可見的絲線了。同樣的,因為SAP Kyma是基於Kubernetes的,因此我們還是可以透過Kubernetes提供的一些工具,來探索SAP Kyma上Lambda Function執行原理的一些蛛絲馬跡。跟Jerry一起看看吧。

周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

首先找到zjerry-lambda函式建立後,對應生成的pod,把名字抄下來:zjerry-lambda-86668f75d4-pfbk6

周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

使用kubectl的互動式引數-ti,進入這個pod內部:

kubectl exec -ti zjerry-lambda-86668f75d4-pfbk6 -n ctu-demo -- /bin/sh

周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

進入之後,檢視程式列表,發現了node kubeless這個程式,Jerry頓時覺得有點眉目了:

周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

看樣子,SAP Kyma的Lambda Function是透過一個node程式執行的。檢視一下這個pod裡都有哪些檔案:

周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

開啟kubeless.js看看裡面的內容:

周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

如果您是一位nodejs開發人員,看到上面Jerry高亮的紅色內容,一定會恍然大悟。SAP Kyma的Lambda Function,其實執行在對應的Kubernetes pod裡啟動的express應用框架上。

Express的依賴定義在pod內部的package.json裡:

周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

而待執行的Lambda Function邏輯,透過環境變數FUNC_HANDLER進行注入,在Jerry這個例子裡,函式體名稱為main:

周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless


周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

在Lambda Function的Serverless框架,即kubeless.js執行時,會從pod內部的kubeless這個資料夾裡,找到應用開發人員編寫的Lambda Function,載入並執行。

大家可以看到,Jerry紅色高亮的位於pod內部的handler.js, 其內容就是Kyma控制檯裡編寫的函式體。

周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless

至此,SAP Kyma的Lambda Function實現,在Jerry眼中沒有任何神秘可言了。回到Serverless這個術語本身,並不意味著整個場景裡不再需要伺服器的參與,而是伺服器的這個關注點,在Serverless架構下,已經從應用開發人員的視角中隱藏起來罷了。

感謝閱讀。

更多閱讀

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":


周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2654195/,如需轉載,請註明出處,否則將追究法律責任。

相關文章