歷史性突破:使用 .net core 日處理訊息量超過 1.7 萬條!
阿新 • • 發佈:2021-04-01
業餘時間用 .net core 寫了一個線上客服系統。並在部落格園寫了一個系列的文章,寫介紹這個開發過程:
.net core 和 WPF 開發升訊威線上客服系統:目錄
開始只是寫著玩玩,驗證一下 .net core 到底行不行。做這個選擇的時候還是比較擔心的,能不能扛得住一個後臺系統的資料處理壓力。
在編碼的過程中,查閱了大量的資料,.net core 和 c# 到底怎樣才能實現高效能的後臺服務。
好在功夫不負有心人,前幾天查了一下客戶的使用情況,當天處理的收發訊息量超過了 1.7 萬條!一家電子商務公司,線上諮詢量遠遠超過了我的預計。
雖然系統完全是免費的,免費給客戶使用,但是從技術上講,達到這樣一個成績,很欣慰。
也證明了使用 .net core 做為大型系統後臺的實力,是完全OK的!
![](https://docs-api.shengxunwei.com/StaticFiles/Upload/5b946db1-783f-4ea8-b848-b1c067e7ca7c.JPG)
===
在本文我簡單介紹一下系統後臺的架構,還請大家多多指正。
### 伺服器程式和資料庫
服務端程式除了提供一般資料增刪改查能力之外,重要的是需要實現穩定的訊息中件間,穩定的站點狀態、客服狀態、訪客狀態等上下文資料在記憶體中的管理,以及穩定的TCP/IP長連線維護機制。
綜合考慮技術指標和開發效率,我採用了 .net core 做為服務端程式,SQL Server 做為資料庫的方案。
.net core 目前已經具備了完善的技術指標,並且能夠提供其它開發平臺無法比擬的開發效率。得益於整個 .net 技術體系,使我靠一己之力完成整個系統成為可能。
資料庫我採用了 SQL Server ,它能夠藉助 Entity Framework Core 與 .net core 無縫融合,提供無與倫比的開發效率。同時,在資料處理的效能上,完全能夠滿足各項技術指標的要求,在日常使用和運維上,也提供了 Oracle 和 MySQL 無法比擬的便利性和工作效率。
### 客服端程式
客服端程式我使用了 WPF 框架。相比 WinForms 程式,WPF 提供了更高的開發效率和更完備的基礎框架,使得畫面呈現、資料處理、模組解耦更容易。同樣,基於 .net 體系的 WPF 所提供的極高的開發效率是其它開發平臺無法提供的。對於需要一天十幾個小時穩定執行不退出的程式而言,原生客戶端程式的穩定性也是基於 Web 頁面的程式所無法相比的。
---
在上文中,我們提到系統可以橫向擴充套件,具備彈性擴容的能力。在初期可以以較低的配置環境執行,使用者增加時,可以在不影響原有結構的基礎上,無感的橫向擴充套件。亦或因服務規模的減小而收縮。
下面我將從系統的整體結構來闡述這個問題:
![](https://blog-api.shengxunwei.com/StaticFiles/Upload/b376e73c-8488-4d6c-b20f-5de0a4f1c72a.JPG)
從上圖可以看出這是一個典型的分散式部署系統。客戶網站中嵌入的 JavaScript 檔案在執行是地,首先連線路由伺服器,路由伺服器儲存了一張表,每個站點所應該使用的應用伺服器地址。就好像DNS伺服器一樣,告訴客戶網站你應該向哪裡發起真正的連線請求。接著,客戶網站中嵌入的 JavaScript 程式向對應的應用伺服器發起連線,上報訪客狀態,接收伺服器指令。
那麼很容易理解,我們只需要擴充套件我們的應用伺服器數量,就可以輕鬆的增加系統的承載能力。反之也可以進行縮減操作。
在處理客戶的私有化部署需求時,我們也可以根據容易的實際需要,取消路由伺服器、取消檔案伺服器、取消CDN內容分發網路。以一個簡單的方案來應對訪問量不高的中小企業需求。在這個基礎上,我們還可以藉助現在的雲伺服器,實現彈性配置,以一個較低配置的伺服器開始執行,甚至將資料庫和快取服務完全部署在一臺伺服器上使用,在使用過程中發現確有需要,先增加單臺伺服器的配置,不能滿足需求的,再分離資料庫和快取服務,還不能滿足要求的,則增加路由伺服器,增加應用伺服器。