.NET開發框架(三)-高可用伺服器端設計

来源:https://www.cnblogs.com/letyouknowdotnet/archive/2019/07/02/11123847.html
-Advertisement-
Play Games

ARR是應用級別的負載均衡方案,ARR只能做請求入口的分發服務,而NLB則是伺服器級別的負載均衡方案。我們將二者結合起來,形成高可用最佳方案。 ...


我們對框架功能作了簡述,演示視頻請點擊 這裡查看 ,若需要查看更多此框架的技術文章,請關註.NET框架學苑公眾號!

本章節,我們專門講解一下,如何在Window伺服器下,設計高可用的框架。

我們的框架設計採用的是Window版本的服務端設計:

整體框架圖如下,

為什麼我們需要如此設計?

本文僅簡述NLB與ARR的利與弊,更多技術文章往後推出。

我們引入NLB,相對於ARR來說,ARR是應用級別的負載均衡方案,ARR只能做請求入口的分發服務,而NLB則是伺服器級別的負載均衡方案

如果微軟的這兩款方案我們結合起來使用,即可搭建高可用網站方案。

Application Request Route與NLB高可用方案的演進

1、Application Request Route方案,如下圖

 

缺點:

ARR可以檢測到你的iis應用是否可用,並對用戶的請求實施負載均衡方案,根據我們配置的負載均衡演算法,把用戶的請求分發到應用伺服器中。

但是,如果我們的ARR伺服器down掉之後,我們的整個應用程式就無法使用,達不到24*7用不宕機的高可用要求。

 

2、NLB的網路負載平衡方案

缺點:

NLB可以最多可以配置32台伺服器,這32台伺服器通過擁有自己的獨立ip之外,還共有一個虛擬IP,用戶訪問虛擬ip,nlb集群根據配置的負載演算法來確定把用戶的請求分發給那台應用伺服器,如果一臺NLB伺服器down掉,則不會影響消息的分發可達到7*24小時不down機的高可用方案。

但是,NLB不能檢測應用你的iis網站是否down掉,只能檢測伺服器是否down掉,這樣一來,如果你的iis網站已經停止啦,nlb還給分發用戶請求,那樣麻煩可就來啦。

那麼我們使用微軟的技術怎麼樣做到網站的高可用呢?對,就是NLB+Application Request Route .

 

3、NLB+Application Request Route 方案

優點:用戶請求虛擬ip,接入nlb,nlb檢測一臺可用的伺服器,請求轉發給arr,arr檢測可用的網站把用戶請求給分派處理,形成高可用方案。

框架設計預研中,靈感來源參考文獻:https://cnblogs.com/knowledgesea/p/5157565.html

 

經過綜合分析後,我們最終採用了NLB+ARR的結合,形成如下設計圖

 

對於此框架的設計(優點與缺點),元芳,您怎麼看?歡迎掃右上方二維碼,關註公眾號,留言吐槽。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.1原理 1.session是伺服器端的技術 2.session是基於cookie技術的 1.2session操作 1.預設情況下,會話不會自動開啟,通過session_start()開啟會話 2.通過session_id()獲取會話的編號 3、通過$_SESSION操作會話 4、會話可以保存除了 ...
  • 8-9 魔術師:創建一個包含魔術師名字的列表,並將其傳遞一個名為show_magicians()的函數,這個函數列印列表中每個魔術師的名字。 8-10 了不起的魔術師:在8-9的程式中,編寫一個名為make_great()的函數,對函數列表進行修改,在每個魔術師的名字中都加入字樣“the Great ...
  • 小猿圈作業: 編寫裝飾器,為多個函數加上認證的功能(用戶的賬號密碼來源於文件),要求登錄成功一次,後續的函數都無需再輸入用戶名和密碼 tip:account文件的格式 1 dadada 123456 2 da da 3 da1 da 4 da2 1234 5 da3 1111 編寫裝飾器,為多個函數 ...
  • 一、JDBC 1、JDBC簡介 (1) JDBC(Java Database Connectivity),即Java資料庫連接。用於在Java程式中實現資料庫操作功能。 (2)是一種用於執行SQL語句的Java API,使用戶以相同的方式連接不同的資料庫。 (3)JDBC提供一套標準介面,即訪問數據 ...
  • 一、環境: 系統:win7 版本:Python 3.7.2 (32位) 二、問題: 利用Pyinstaller封裝exe 時, 報錯:TypeError: expected str, bytes or os.PathLike object, not NoneType 如下圖: 三、解決方法: 1.這 ...
  • 一直想瞭解python網路爬蟲方面的知識,苦於沒有小白方面的視頻教程,網路基本都是需要有一定基礎才可以學習的 這款由大講師平臺推出的教程,絕對是小白入門的不二之選 首先,這門課程循序漸進。從Python的基本語法函數開始介紹 並且留有獨立的作業,看完視頻教程獨立完成課後作業 鞏固練習 其次,這門課程 ...
  • 1. 自己用的番茄鐘自己做 在PC上我一直使用“小番茄”作為我的番茄鐘軟體,我把它打開後放在副顯示器最大化,這樣不僅可以讓它盡到本分,而且還可以告訴我的同事“我正在專心工作”。可是我總是嫌棄它的手感不夠愉悅,總想自己寫一個番茄鐘軟體,正好最近很久沒寫UWP應用了很手癢,於是就抽空寫了個自用的番茄鐘並 ...
  • 本文包括兩個部分: WebApi中使用swagger 項目打開之後,選擇 引用,右鍵,管理NuGet程式包 瀏覽,搜索swagger,選擇第一個swashbuckle,安裝 安裝好之後,右鍵項目,選擇屬性,生成,在下麵的輸出那裡勾選:XML文檔文件,如果沒有自動填充好路徑,需要自己填寫一下,文件名可 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...