前言
大家好,我是程序員阿木!
很高興和大家一起分享.NET Core 系統架構實戰系統課程.
在前面的課程和文章當中,我為大家分享了VMware、Centos、Nginx 以及 .NET Core SDK的安裝和使用, 有朋友用 Linux 的創始人 Linus Torvalds 的一句話評論說 "Talk is cheap, Show me the code", 翻譯過來就是"別BB,上代碼"!哈哈!
OK, 從這節課開始呢,我們就正式開發一個基於.NET Core 的web項目,並將它部署在Linux上面,讓大家對於.NET Core 項目的開發與部署有一個清晰的瞭解。
正文
首先,我們看一下整個項目的演示:
前端演示:
服務端代碼結構 (Visual Studio For Mac, Windows上也一樣):
整個項目採取前後端分離開發的模式:
前端採用HTML5+CSS3, 支持移動端, PC端的自適應縮放,可以很方便的做一個功能強大的後臺管理系統,我們會將它部署在Nignx上面, 與後端通過RESTFul api 交互。
後端基於.NET Core 3.0, 提供 Web API 接口,既可以供PC端,也可以供移動端去調用。整個後端的開發學習,我們會分為三部份:
- 基礎部份的學習:包括 .NET Core 項目創建,頁面的增刪改查,VMWare/Centos 安裝,在Linux下的項目部署,Nginx的安裝與使用,Supervisor 守護進程,FastDFS分佈式文件系統,MySql、MSSqlServer 數據庫的安裝與Dapper操作類,MongoDB,Redis的安裝與操作類,Kafka 分佈式消息隊列, 項目的Docker 容器化部署。此部份我們關注各組件的安裝,部署以及使用,但是站在一個架構師的角度,如果只關注這些基礎的功能實現,則只能算是一個高級開發工程師!
- 系統的水平擴展:分佈式與集群, Kestrel服務器的集群與Nginx反向代理,Redis集群,MongoDB集群,MySql/MSSQLServer的水平復制與讀寫分離,Redis的高級特性:如發佈訂閱,消息隊列,Keepalived 高可用, 數據備份容災等。 此階段我們關注系統的可擴展性,可伸縮性,穩定性以及高可用性!
- 項目開發: 我們會開發一個完整的項目,使用爬蟲+多線程去抓取股票數據,包括歷史交易數據,實時交易數據,股票分析策略,整個股票數據有將近上億的數據量,我們也會使用分庫分表的方式去存儲數據以及利用MongoDB存取實時交易數據,前端和後端的交互方式也由Http 改為Websocket! 此階段我們將技術應用於實戰!
這是個人開發的基於 WPF 版本的股票分析系統:
有人說,這樣的系統有什麼用呢?我覺得一來可以用於研究技術,股票系統的大數據量,數據的實時性,對技術要求還是挺高的!二來如果您同時也是一個股票愛好者,那麼您會發現從均線,換手率,成交量這三個指標去分析趨勢,還是有一定的規律的(這個可一起交流交流),當然沒有百分百的事情,只是概率的高低而已!當然, 股市有風險,投資需謹慎!
結語:
一個完整 IT Web系統的開發其實是基於軟件,硬件,運維三部份相輔相成的,很多人覺得像Nginx,Redis,Mongodb, Docker 等等這些東西的部署都是運維的範疇,但其實不是,站在一個架構師的角度,我們絕對有必要知道系統運行在一個什麼樣的環境,對系統的穩定性,可擴展性,可伸縮性,高可用性, 持續交付了然於胸,這樣才能應對不斷增長的PV與用戶量。
在同名視頻中,我會把這個項目部署在Linux上面,希望大家持續關注, 有問題可以一起交流!給個優質評論送代碼~~ ^-^
閱讀更多 NET架構設計實戰 的文章