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

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

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

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

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

楊過左手還了一掌,猛以爲對方拳力如有若無,本身掌力使實了當然不對,使虛了也是極其危險,不由暗暗吃驚,當下展開十餘年來在狂濤怒潮中所苦練的掌法還擊出去。服務器

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

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

一樣,Jerry第一次接觸SAP Kyma基於Serverless架構的Lambda Function時,感覺同周伯通和米諾斯的對手同樣有些疑惑:名字都叫Serverless了,沒了服務器,那個人函數代碼到底運行在什麼地方的?框架

好比在最近Jerry寫的一系列SAP Kyma的文章裏介紹過,我在Kyma上建立了一個名爲zjerry-lambda的函數,基於nodejs8:less

能夠直接在Kyma的測試控制檯裏調用這個Lambda Function:函數

Serverless的字面意思,不是暗示咱們沒有服務器了嗎?那麼這段函數代碼到底運行在哪裏的?

米諾斯的星塵傀儡線,在冰系法師,百鳥座冰河的凍氣之下,終於被凍結成肉眼可見的絲線了。一樣的,由於SAP Kyma是基於Kubernetes的,所以咱們仍是能夠經過Kubernetes提供的一些工具,來探索SAP Kyma上Lambda Function運行原理的一些蛛絲馬跡。跟Jerry一塊兒看看吧。

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

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

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

進入以後,查看進程列表,發現了node kubeless這個進程,Jerry頓時以爲有點眉目了:

看樣子,SAP Kyma的Lambda Function是經過一個node進程執行的。查看一下這個pod裏都有哪些文件:

打開kubeless.js看看裏面的內容:

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

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

而待執行的Lambda Function邏輯,經過環境變量FUNC_HANDLER進行注入,在Jerry這個例子裏,函數體名稱爲main:

在Lambda Function的Serverless框架,即kubeless.js運行時,會從pod內部的kubeless這個文件夾裏,找到應用開發人員編寫的Lambda Function,加載並運行。

你們能夠看到,Jerry紅色高亮的位於pod內部的handler.js, 其內容就是Kyma控制檯裏編寫的函數體。

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

感謝閱讀。

更多閱讀

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

相關文章
相關標籤/搜索