近年來,IT技術的更新迭代速度很是快,每一個時間點都有典型的表明名詞以及概念,就目前而言,人工智能領域中的機器學習、深度學習、強化學習等名詞和概念就很是熱,同時區塊鏈、物聯網等技術發展也是異常火熱。在雲計算領域,有這樣一個技術被衆多雲廠商認爲是「風口項目」,甚至能夠顛覆現有云計算中的某些格局,爲此包括AWS、谷歌以及騰訊雲、阿里雲等在內的雲廠商,都爲此投入了重大人力以及精力進行相關產品建設,它就是Serverless技術。python
單純的和你們分享什麼是Serverless,可能不是很符合個人我的性格,因此,我將會在這個專欄,經過實踐,和你們一塊兒學習Serverless,沒有華麗的語言和修飾,沒有誇張的修辭和描述,一切創建在生產,實踐,工程之上。nginx
咱們能夠打開騰訊云云函數:web
在這裏點進去,新建一個函數:apache
創建函數的時候,咱們能夠填寫一個函數名字,而後選擇運行環境:編程
在這裏,你們能夠看到,這裏有Python(2.7/3.6),Nodejs(6.10/8.9),PHP(5.6/7.2)以及Java,Golang等語言,是否是有一點小激動,主流的編程語言,這裏均可以用,也就是說,不管你是什麼語言愛好者,只要在這個列表中,那麼OK,你就能夠愉快的來使用Serverless架構。json
填寫好相關信息,點擊下一步便可到寫代碼的地方:後端
看一下這個代碼很簡單:服務器
# -*- coding: utf8 -*- import json def main_handler(event, context): print("Received event: " + json.dumps(event, indent = 2)) print("Received context: " + str(context)) print("Hello world") return("Hello World")
整個代碼內容,只有一個函數,就是main_handler,動腦一下,均可以猜到,這個必定就是騰訊雲Serverless的函數入口。再看一下描述:架構
能夠看到,這裏就是一個執行方法,以Python語言爲例:less
index.main_handler
這裏面index就是文件名,main_handler就是入口方法。
咱們點擊完成,來體驗一下:
選擇函數代碼:
點擊測試,就能夠愉快的體驗:
能夠看到,這裏的測試結果,已經輸出了:
"Hello World"
這說明,咱們已經成功跑起來了雲函數:你好,世界
剛剛,咱們簡單的運行了一下函數,咱們有沒有發現一件事情:
這貌似是一個在線的編輯器?
傳統狀況下,咱們要寫一個python程序,咱們須要下載Python軟件,而後安裝,配置環境,才能夠編寫程序,而就在剛剛,咱們貌似,在線編寫了一個軟件,而且運行了?
是的,Serverless架構實際上能夠看做是FaaS+BaaS,其中FaaS就能夠當作是函數計算,而BaaS就是後端的服務。咱們目前體驗的這種在線的編程運行過程,就是FaaS重的一部分。
說完這裏,咱們再來看看咱們的代碼和輸出的結果:
# -*- coding: utf8 -*- import json def main_handler(event, context): print("Received event: " + json.dumps(event, indent = 2)) print("Received context: " + str(context)) print("Hello world") return("Hello World
"Hello World"
日誌: START RequestId: 2ba40ad6-1806-11ea-9ec2-52540075364a Event RequestId: 2ba40ad6-1806-11ea-9ec2-52540075364a Received event: { "key1": "test value 1", "key2": "test value 2" } Received context: {'memory_limit_in_mb': 128, 'time_limit_in_ms': 3000, 'request_id': '2ba40ad6-1806-11ea-9ec2-52540075364a', 'environ': ';SCF_NAMESPACE=default', 'function_version': '$LATEST', 'function_name': 'hello_world', 'namespace': 'default', 'get_remaining_time_in_millis': <function main.<locals>.<lambda> at 0x7f063a9f9488>} Hello world END RequestId: 2ba40ad6-1806-11ea-9ec2-52540075364a Report RequestId: 2ba40ad6-1806-11ea-9ec2-52540075364a Duration:0.34ms Memory:128MB MaxMemoryUsed:19.5039MB
咱們經過這樣一個對比,咱們能夠看到這樣一個對應關係:
行數4的代碼:
print("Received event: " + json.dumps(event, indent = 2))
輸出結果:
Received event: { "key1": "test value 1", "key2": "test value 2" }
行數5的代碼:
print("Received context: " + str(context))
輸出結果:
Received context: {'memory_limit_in_mb': 128, 'time_limit_in_ms': 3000, 'request_id': '2ba40ad6-1806-11ea-9ec2-52540075364a', 'environ': ';SCF_NAMESPACE=default', 'function_version': '$LATEST', 'function_name': 'hello_world', 'namespace': 'default', 'get_remaining_time_in_millis': <function main.<locals>.<lambda> at 0x7f063a9f9488>}
行數6的代碼:
print("Hello world")
輸出結果:
Hello world
行數7的代碼:
return("Hello World")
輸出結果:
由此,咱們能夠對應的看出兩個神祕參數的真實身份:
初步判斷,event裏面是一些入參內容,多是用戶指定,而context則是函數執行的上下文,包括一些環境變量、函數信息等。
經過騰訊雲的文檔:
雲函數 基本概念 - 開發指南 - 文檔中心 - 騰訊雲cloud.tencent.com
能夠看到這樣的描述:
因而可知,咱們的猜想,貌似沒毛病。
接下來,咱們來作一個神奇的操做:讓Hello World成爲不同的Hello World!
選擇這樣的API網關觸發器:
保存以後能夠看到這樣一個地址:
咱們打開網址:
看到了什麼?是的,看到了咱們剛纔的你好世界。改變咱們的程序代碼:
# -*- coding: utf8 -*- import json def main_handler(event, context): return("I love Serverless! So cool!")
保存以後,刷新剛纔的網頁:
簡單的配置,就讓咱們的你好世界,成了web版的你好世界,要知道,這是咱們Serverless的入門第一節課,咱們就能夠作一個網頁了!
百度一下,如何配置一個Web,有超級多的教程,可是不管如何apache,nginx的安裝和配置貌似都是須要的,可是在Serverless架構下:你能夠點點點。
很是簡單的,咱們完成了一你好世界,很是簡單的,咱們作了一個網頁,很是簡單的....
So cool!
是的,雲函數,你能夠看成是一個很是有趣項目,他是雲計算的一種表現形式,也被不少人稱之爲真正的雲計算,用戶真的能夠再也不關注服務器資源:如何配置環境,如何安裝服務器軟件,如何......用戶只須要關注本身的代碼,就能夠實現本身想要的一塊兒,這是一個你好世界,更是在向Serverless架構,雲計算問好,這是一個你好世界,更是一個不同的你好世界。
經過Serverless架構,你能夠更簡單,更快速的建立本身的項目,完成本身的工做,怎麼樣,想不想和我一塊兒來Serverless?