在上一篇博客中(淺談微服務架構與.Net Core)我們談到微服務架構與.Net Core,大體分析了下微服務架構的一些優勢,在這邊博客中,將談談架構設計的一些理念。
首先,代碼要清晰明了,層次分明,模塊間耦合度要盡量降低,代碼並不是要越復雜越好,可能有人認為,代碼寫得越復雜、算法用的越高級,讓別人越看不懂就越牛X,我認為恰恰相反,代碼越是簡單就能實現的就盡量做到簡單,能用幾行代碼能解決的問題何必要寫個牛X的算法來實現呢?
其次,能做到通用的模塊需要單獨提煉出來,不要在其他業務邏輯中混合實現,不利於代碼的移植,以下簡單說說常用的一些模塊或邏輯需要特別注意的;
1、底層數據訪問需要單獨寫,當我們數據庫發生變化,比如我們這個項目用的是SqlServer,下個項目用的是MySQL,要做到很輕易的切換;
2、緩存管理需要獨立出來,通常,我們開發都會用到緩存技術,能把緩存用好,系統性能也會得到大幅度提升,簡單舉個例子,比如我們開發一個系統,用的是MemoryCache,但是系統上線運行一段時間后,並發量增大,本機緩存已經不能滿足需求,我們需要對系統進行集群,減輕服務器壓力,此時需要用Redis來管理緩存,那么此時,我們需要做到很容易的從MemoryCache切換到Redis來做緩存管理,我們只需要改一下配置文件就能達到預期效果而不必在用到緩存的地方一個一個的去改再編譯上線。
3、日志模塊需要獨立出來,不管是錯誤日志還是操作日志,這基本每個系統都會用到的,我們可以借用一些第三方的開源日志系統來實現,比如ELK開源日志管理系統(后面再介紹如何整合)
4、權限管理,這對於每個系統來說都必不可少,但很多權限都和自己公司的一些行政制度相關,都有一些不通用的權限管理功能,比如涉及到數據權限的管理,此時,我們可以將功能權限的管理獨立出來,這一塊可以達到通用,功能權限獨立后,我們在開發新的系統的時候就不必再關心功能權限的問題,甚至都不需要將這一模塊移植到新項目中,直接將權限的接口開放出來,新系統直接調用即可;
第三,跨平台的支持,當然 .Net Core 就能很好的支持跨平台的移植;
第四,易擴展,隨着不同業務的開發,系統架構必須要支持對一些功能的擴展;
以上就是我對系統架構設計的一些簡單看法,當然還有另外一些模塊或功能沒講,因為有可能很多小型團隊沒有用到,比如系統性能的分析、監測等,若有說的不對的地方歡迎多多指教!
