谷歌云為什麼選擇支援 Go 語言?
在最近的一篇文章中,谷歌宣佈在他們的函式即服務產品雲函式上支援 Go 1.11。在這項宣告中,除了之前就支援的 Node.js 和 Python 之外,Go 也加入了這一陣容,成為雲函式支援的程式語言。
Go 是谷歌設計的一種開源程式語言,在 1.11 版本中,他們添加了模組概念。這些模組管理 Go 專案中使用的第三方包的依賴關係,與.NET 的 NuGet 和 node.js 的 NPM 類似。令人驚訝的是,儘管 Go 有谷歌背景,但谷歌雲函式並不是第一個支援這種語言的 FaaS,因為 IBM 雲函式和 AWS Lambda 去年已經宣佈了這項支援。儘管如此,社群歡迎對該語言的支援,因為他們發現它與 FaaS 實現結合效果非常好。
最後,Go 非常適合雲函式,因為其函式的冷啟動速度非常快。
去年,我在 lambda 上測了有資料庫連線的 node.js 和 Golang 函式,冷啟動時間分別為 3148 毫秒和 1648 毫秒。
函式即服務是一個流行的概念,所有主要的雲供應商都有它自己的實現,無論是谷歌雲函式、Azure 函式,還是 AWS Lambda。通常,函式會在事件發生時執行一段程式碼,並且經常實現為無伺服器架構的一部分,Stackify 創始人兼執行長 Matt Watson 有過下面這樣的描述。
FaaS 的概念是通過無伺服器架構進行無伺服器計算。軟體開發人員可以利用這一點來部署單個的“功能”、操作或一塊業務邏輯。它們可以在幾毫秒內啟動並處理單個請求,然後程序結束。
谷歌雲函式的用法沒有什麼不同,它提供了兩種不同的呼叫方法。第一個是 HTTP 函式,它使用 HTTP 請求呼叫,並允許從任何相容 HTTP 的客戶端使用。另一方面,還有後臺函數,由事件觸發,例如從雲端儲存或 Firebase 觸發。通過這些事件,可以實現各種場景,其中,雲函式的教程中有幾個例子。相應地,這包括從 Slack 中搜索谷歌知識庫或從圖片中提取和翻譯文字等應用程式。
已經有幾篇博文展示如何開始在雲函式上使用 Go,例如 Posse Productions 創始人 Luke Freeman。在 這篇文章 中,Luke 展示瞭如何設定這類專案的結構,如何建立函式,以及如何測試和使用它們。最後,他介紹了部署過程,對各個開發階段進行了完整的概述。
檢視英文原文:
https://www.infoq.com/news/2019/01/cloud-functions-go-support