摘要:最近,系統設計中較新穎的概念之一要屬無服務器架構理念。無服務器的潛在上升空間想象一下,一個簡單的基于的應用程序,處理來自客戶端的請求。
最近,系統設計中較新穎的概念之一要屬“無服務器架構”理念。毫無疑問, 這有點夸張, 因為確實有服務器參與其中, 但這意味著我們可以以不同的方式看待服務器。
無服務器的潛在上升空間想象一下,一個簡單的基于Web的應用程序,處理來自HTTP客戶端的請求。而不是讓一些程序運行時等待請求到達,然后調用一個函數來處理它們,如果我們可以按需啟動運行每個函數,然后將其丟棄,那會怎樣?我們不需要擔心可以接受連接的運行的服務器數量,或者在伸縮時處理復雜的配置管理系統以構建應用程序的新實例。此外,我們還將減少諸如內存泄漏、分段錯誤等狀態管理的常見問題。
或許最重要的一點是,這種按需調用函數的方法將允許我們伸縮每個函數,以匹配請求數并對它們并行處理。每個“客戶”都將獲得一個專門的流程來處理他們的請求,而流程數只會受到您處理的計算能力的限制。當與一個大型云提供商耦合,其可用的計算大大超過您的使用量,此時無服務器就有可能移除大量的復雜性,從而伸縮應用程序。
潛在的缺點誠然, 在為每個請求構建進程時, 仍存在增加的滯后時間的挑戰。無服務器永遠不會像預先分配的進程和內存那樣樣快;然而,問題不在于它是否更快, 而在于它是否足夠快。從理論上講, 我們會接受無服務器的延遲, 因為我們會得到回報。然而, 這一權衡需建立在對手頭的情況進行仔細評估的基礎上。
使用Rancher和開源工具實現無服務器Docker為我們提供了很多工具來實現這個無服務器的概念,并在最近的DockerCon上給出了很好的演示。Rancher將這些能力最大化了。因為我們的平臺承擔您的容器基礎架構的管理,所以只需操作一個API即可添加和刪除計算容量。通過軟件定義棧的這部分能力,支持用戶實現全面的應用程序自動化。
棧中的下一層即為無服務器系統編寫代碼的可用框架。您可以自己編寫、或者擴展一些中間件來處理這個問題,但有很多開源項目提供了工具來簡化這一過程。其中一個項目是Iron.io的Iron功能。我在Rancher上做了一個快速的POC,發現它很容易使用。使用這些compose文件可以在Rancher中快速啟動該設置。
要使用這些文件,請將repo中的docker-compose.yml和rancher-compose.yml文件復制并粘貼到Rancher UI的“Add Stack(添加棧)”部分。或者從Rancher CLI中,簡單地運行“rancher up”(確保設置以下環境變量:RANCHER_URL,RANCHER_ACCESS_KEY,RANCHER_SECRET_KEY)。
棧啟動時,您應該可以在Rancher UI中看到。此外,您可以通過單擊棧中第一個項目(“API - lb”)旁邊的“i”圖標,查找 Iron Functions API端點和UI的URL。
部署完成后運行無服務器棧
找到您的IronFunctions端點的URL
一旦您運行棧,請按照Iron.io的Github repo上的“Write a Function(編寫一個函數)”的說明進行操作。您可能需要一些時間來適應,因為這需要您在編寫應用程序時稍作改變。將不會有任何共享的狀態供您的函數引用,而庫之類的東西利用起來可能會又困難又昂貴。在我的例子中,我從Iron.io中選擇了一個簡單的golang函數:
package main import ( "encoding/json" "fmt" "os" ) type Person struct { Name string } func main() { p := &Person{Name: "World"} json.NewDecoder(os.Stdin).Decode(p) fmt.Printf("Hello %v!", p.Name) }
下一步是將函數部署到我們在Rancher中設置的Iron函數的實例中。為了使這更容易嘗試,我編寫了一個為您執行所有步驟的腳本。參照這個repo中的README。一旦部署了函數,您應該能夠在UI中看到它,然后就可以試著用它了:
IronFunctions的Dashboard
你的正在執行的函數的結果
從Rancher內部,您可以根據您的需求擴張或縮減員工人數。Rancher會把它們放在一個主機上,并將它們連接到一個負載均衡器上。根據最佳實踐指南,您可以簡單地根據“wait_time”度量,從而使伸縮操作相對簡單。
若您也想過用這種方式構建應用程序,我覺得本文的教程會是一個很有用的嘗試。如果您對此有任何意見或反饋,不要猶豫,聯系我們!我們一如既往地期待聽到您的反饋!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26931.html
摘要:這相當于在原始安裝程序中調整文件。警告我并沒有告訴這件事,因為這可能會嚇到他或任何其他專家。在創建應用商店條目的過程中,還有兩個問題需要解決變量需要設置為確切值,這樣用戶就可以通過它連接到該實例。 Harbor Registry是VMware公司的Docker鏡像管理產品。相較于其他鏡像倉庫,Harbor提供身份管理功能,安全性更高,支持單個主機上的多個registry,這些功能正是很...
摘要:是當前最流行的大數據集分析平臺之一,對于日志聚合商業智能以及機器學習等各類用例而言,都是一個很有用的工具。是在大型非結構化數據集上運行分析的最佳方法之一,在從日志聚合機器學習到商業智能等許多領域中皆被廣泛使用。 Elasticsearch是當前最流行的大數據集分析平臺之一,對于日志聚合、商業智能以及機器學習等各類用例而言,Elasticsearch都是一個很有用的工具。Elastics...
摘要:目前我們正采取措施,通過逐步改善現有過程來實現持續部署。在這篇文章中,我們將看看如何使用和來改善此設計。通過使用,在未來我們可以輕松地將構建和部署任務集成起來,從而得到額外的好處。月日,北京海航萬豪酒店,容器技術大會即將舉行。 在這一系列文章的第一篇中,我們分享了只用Docker時我們開發的初步的工作流,如何創建一個基礎的構建和部署流水線。容器的部署方式不再是在登陸server的時候從...
摘要:的三大重大新聞正式版全面發布經歷幾年的打磨,在前期正式發布了。發布為容器部署而生的分布式塊存儲項目是在期間的另一重大發布基于云和容器部署的分布式塊存儲新方式。的工程師還被邀請至的展臺,向參會者介紹和。和討論大會第二天下午,在號會議室開放。 DockerCon2017已落下帷幕。展臺,office hours,roadmap互動討論,專題演講,主題Party......這里有太多精彩的瞬...
閱讀 3511·2023-04-25 14:57
閱讀 2560·2021-11-22 14:56
閱讀 2079·2021-09-29 09:45
閱讀 1761·2021-09-22 15:53
閱讀 3313·2021-08-25 09:41
閱讀 896·2019-08-29 15:22
閱讀 3289·2019-08-29 13:22
閱讀 3122·2019-08-29 13:08