2. ASP.NET Core 應用的響應伸縮擴展問題
小編:啊南 46閱讀 2020.11.09
傳統的 ASP.NET Core MVC 應用程序的部署方法使其很難滿足響應式伸縮擴展變化。
這使得存在兩個問題較難解決:
- 如何在短期內快速增加服務器的容量。
- 在增加容量后的服務器滿足了短期內的需求激增問題后,一旦需求高峰期過后,應用程序就不在需要增加的容量。
舉個例子,在大型活動中擴展了 50 臺服務器,活動結束后這 50 臺服務器就不需要了。那么你就產生一個問題,如何去產能。
響應性問題在實際工作運行中,大多數的 ASP.NET Core 應用程序均部署在 Internet Information Services(IIS)中,這使得在 Windows Server 上增加容量是一項重大決定,因為需要采購額外的硬件以及修改運行環境中對應的服務器。
其結果是 ASP.NET 應用程序只能努力提供恰到好處的容量來處理他們的工作量,要么遭受太多高峰時段的訪問,但是容量很。ㄟ@會影響用戶體驗),或者高峰時段以外的容量太大(這會導致從而增加了運行應用程序的成本,并束縛了用于其他服務程序的容量。
Docker 如何解決響應性問題?容器是圍繞應用程序的輕量級打包工具,只提供足夠的資源給應用程序的運行。在確保與其他容器隔離的同時運行應用程序。根據應用,單個服務器可以運行許多容器,而 Docker 提供了集成集群,稱為swarm,它可以進行大規模的容器部署,而不需要對集群或配置進行任何特殊的修改或處理。通過容器的低資源需求和swarm的結合意味著,擴展容器化的 ASP.NET Core MVC 應用只需添加或刪除容器即可。而且由于每個容器都是隔離的,所以將服務器中閑置的容量資源分配給其他應用程序的容器,可以動態的平衡集群的工作負載。
Docker 容器是虛擬機嗎?乍一看,容器看起來很像虛擬機,并且使用容器和虛擬機,即使它們以不同的方式工作。兩者都可以縮放通過添加或刪除實例創建應用程序,并且兩者都可用于創建標準化環境用于運行應用程序。
但是,容器不是虛擬機。虛擬機提供了一個完全隔離的軟件棧,包括操作系統。例如,一個單一的服務器可以用來運行混合的虛擬系統,比如說,一個服務器可以用來運行虛擬的機器,每臺機器都可以是不同的操作系統,允許需要 Linux 和 Windows 中并排運行在不同的虛擬機上。
Docker 只隔離了單個應用,而服務器上的所有容器都是在服務器的操作系統中。這意味著,所有的應用程序都在 Linux 服務器上的 Linux 容器中運行,或者在 Windows 服務器上的 Windows 容器中運行。
由于 Docker 容器僅隔離應用程序,因此與虛擬容器相比,它們需要的資源更少,這意味著一臺服務器可以運行比虛擬機更多的容器。
這個并不意味著運行容器的服務器可以整體上處理更多的工作,但是它確實可以用更少的資源去運行和處理更多較低級別操作系統的任務,畢竟它們多數都是重復的嘛。
對比
圖中顯示了 ASP.NET Core MVC 部署在 Docker 和傳統虛擬機的對比,但它們的關鍵區別在于,Docker 提供了一些功能,使其能夠輕松創建重復的容器,無需任何額外的配置,自動運行在一起,自動處理 HTTP 請求作為容器集群的一部分,讓應用在工作集群中共享負載能力。
這一點,是和傳統服務器部署存在云泥之別,而 Docker 之所以這么有用,是因為它解決了一致性和響應性的問題,以一種優雅的方式來解決,這是使用傳統虛擬機難以實現的。
Docker 容器是有限制的Docker 容器并不適合每個項目。容器最適合 MVC 應用程序,因為它們的工作方式是無狀態,這樣一個客戶端的一系列 HTTP 請求可以由在不同容器中運行的應用程序實例來處理。但這并不意味著 MVC 應用程序不能有任何的狀態數據,但它確實意味著需要存儲狀態數據,以便可以從任何容器中訪問如通過使用數據庫等。
相關推薦
- ASP.Net Web Page深入探討 一、服務器腳本基礎介紹首先,我們先復習一下Web服務器頁面的基本執行方式:1、 客戶端通過在瀏覽器的地址欄敲入地址來發送請求到服務器端2、 服務器接收到請求之后,發給相應的服務器端頁面(也就是腳本)來執行,腳本產生客戶端的響應,發送回客戶端3、 客戶…
- 支付寶小程序:my.ix.tinyCommand 簡介my.ix.tinyCommand 是發送小指令的 API。發出指令給遠端設備接收。本接口主要服務于蜻蜓設備與收銀機雙向通信,蜻蜓與收銀機的雙端聯動過程中的發送小指令操作。詳細配置請參見 IoT 小程序功能指南 蜻蜓連接收銀機。使用限制小指令發送的數據編碼格式為 UT…