無伺服器軟體架構已經吸引很多人關注,它為什麼會讓人們這麼感興趣呢?無伺服器意味著什麼呢?function-as-a-service 與無伺服器有什麼區別?aws lambda、ibm openwhisk、azure functions和谷歌cloud functions等服務的機制是什麼?這一切會如何發展?
無伺服器與faas
在最近舉行的serverless大會中,主題演講中最引人關注的是無伺服器的各種定義。這也表明這項技術仍然處於其生命週期非常早的介入期。一般來說,大多數人都會認同「無伺服器」是指軟體架構,而faas則描述了開發人員在這個架構中部署業務邏輯的關鍵機制。
例如,如果你在aws s3服務執行靜態html**,這是無伺服器(架構)的定義。但如果沒有業務邏輯來用自定義資料對使用者互動作出響應,這個**無法完成很多任務作。這也是四大雲服務提供商(aws、ibm、微軟和谷歌)以及其他開源提供商(例如iron.io和fission)發揮作用的地方。
faas的最佳定義來自serverless framework首席執行官austen collins,該公司可能是該領域最熱門的初創公司。collins認為,faas的定義如下圖所示:
faas平台為開發人員提供構建微服務的能力,微服務可對事件作出響應、自動擴充套件、每次執行支付費用,並利用amazon dynamodb或者ibm watson等大型伺服器系統。生態系統和微服務方法是faas平台與容器世界分享的好功能。當你了解faas平台的工作原理後,你就會明白為什麼存在這些相似之處。
faas平台內部運作
我們可以在歷史背景下考慮faas。在20世紀90年代初,我們只有裸機可用來執行我們的**,而獲得新的計算單元需要幾個月時間。隨著虛擬機器管理程式的出現,虛擬化將這個時間縮短到幾分鐘。通過使用不同的linux核心資源分離技術,而不需要使用虛擬機器管理器,現在容器可在幾秒鐘內為我們提供計算單元。
faas平台如何將這個時間達到毫秒級?想象一下已經分離的容器裝配線,內部有node.js或者python等語言執行時間,但還沒有業務邏輯**。當事件被觸發時,包含響應該事件的業務邏輯的函式會從磁碟讀取,並被插入到預熱的容器中,其中已經具有相應的語言。你的函式會執行,**被刪除,相同的容器還可用於下次事件。
當然,在這個過程中會有些變化,將你的**儲存在完全熱的容器中用於下次處理相同的事件。但這裡的關鍵概念是,faas平台以創造性的方式利用容器,讓你可對映函式執行到特定事件。當你關聯這些事件(例如資料庫寫入或者iot裝置訊號)時,你可從這些更小的元件中建立更大的應用程式。
這一切都將如何發展?
無伺服器仍然是乙個年輕的市場,現在還可能處於早期部署的開始階段。但它背後有著大型提供商的支援,還有很多開源替代品,並且很多初創公司也正在為其提供免費工具。
在serverless大會中,irobot、norstrom和capital one等公司討論了他們如何成功地應用這項技術,這證明該技術不僅僅適合初創公司,也適合成熟的企業。儘管很多早期部署者還沒有使用無伺服器用於面向使用者的工作負載,但使用者與無伺服器應用互動的那一天即將到來。
伺服器程式設計師札記 啟動innodb cluster
先決條件 innodb cluster已經搭建完畢,並正常停止。1.在各節點伺服器分別執行命令 systemctl start mysqld replica01 2.使用mysql shell 連線集群伺服器 mysqlsh uri user host port 3.在mysql shell中執行命...
伺服器程式設計師札記 建立mysql多例項
本文介紹在fedora 25系統通過複製資料目錄的方式建立mysql多例項 1.執行命令 systemctl stop mysqld 2.複製目錄 cp r mysql mysql replica01 3.修改檔案所有者 chown r mysql mysql mysql replica01 4.修...
伺服器程式設計師札記 fedora25安裝mysql
1.執行命令 dnf install mysql community server 2.執行命令 systemctl start mysqld 3.執行命令 grep temporary password var log mysqld.log 獲得mysql初次啟動時建立的臨時root密碼。4.執行...