微服務系列實踐 .NET CORE

zengql發表於2018-12-30

從事這個行業轉眼已經6年了,從當初剛畢業的在北京朝八晚十,從二環到五環,仍每天精力充沛的小憤青;再到深圳一點一滴的辛勤在軟體行業的耕種,從當初單體應用架構到現在微服務架構的經歷,回想起來自己的收穫倒是不少。人生也許算是比較平淡,運氣到也還算不錯,做過的專案剛好讓我在這些方面能有不錯的認知和自我學習的空間。

本來這個系列能帶來的更早,奈何去年打王者荒廢了太多的時間(有點收穫的可能就是連續三賽季王者了),好在自己還算醒悟及時,最近看到微服務的所使用的框架或者工具倒也是非常多,但大多都需要自己研究的內容太多,而且由於少有的docker化,很難再實際生產環境靈活的應用,這次帶來全docker化的實戰體驗。

image

實踐部署架構圖

實踐原始碼https://github.com/zengqinglei/microservice-deploy

為了更加接近生產環境的部署方式,我們使用vmware建立如下幾臺主機:

  1. centos-02:192.168.0.102 應用叢集節點-2
  2. centos-03:192.168.0.103 應用叢集節點-3
  3. ubuntu-04:192.168.0.104 應用叢集節點-4
  4. ubuntu-05:192.168.0.105 資料庫節點-5

虛擬IP:192.168.0.110

main-1

mic-service-arc

系列導航目錄

由於文章中涉及內容較多,所以其中如設計docker構建、配置等複雜教程都會引導大家去github檢視詳情,大家注意一下引導連結地址,文章中儘可能通過簡要的原理及對於微服務架構的作用配合圖講解,讓文章更加通俗易懂。

1. 微服務系列介紹

2. 搭建伺服器(cenos + ubuntu)環境

3. 搭建docker,docker-compose環境

4. 負載叢集及高可用(keepalived + nginx)

5. 搭建consul叢集服務發現、註冊、健康檢查環境

6. 搭建mysql,sqlserver資料庫環境

7. 搭建攜程Apollo叢集統一配置中心

8. 基於Skywalking的服務跟蹤及效能監控

9. 搭建統一服務日誌中心

10. .NET CORE 微服務示例

11. 叢集完整版

推薦一下我的 Asp.Net Core 框架

名稱:Creekdream.AspNetCore
開源地址:http://github.com/zengqinglei/Creekdream.AspNetCore

簡單介紹

我自己的框架參考了一些Abp框架,根據近一兩年針對微服務開發設計,總結開發出來的。
首先,說明一下Abp框架確實很優秀,但隨著微服務的發展,框架整體相對較為臃腫,模組化設計不夠徹底,核心類庫都依賴了各種介面的實現,我們團隊在使用的過程中可能由於不熟悉會導致一些莫名的問題,再加上微服務盛行,使得更多的模組變得沒有必要。

微軟的 .NET CORE 已經做到很優秀,提供Service注入統一入口,中介軟體、日誌、依賴注入的加入等,使得模組化以及開發模式的規約都使得開發變得更加規範可控,框架的設計原則儘可能遵從 .NET CORE 的設計理念。

簡要特點

  • 分離模組化,獨立模組都有自己的核心庫
  • 依賴注入,抽象使其能替換依賴注入框架
  • DDD領域分層
  • 提供快捷生成專案模板
  • 提供EntityframeworkCore以及Dapper兩種ORM
  • 工作單元支援
  • 核心模組僅依賴必要的介面

框架架構圖

app-arc

總結

本次微服務系列從基本概念到一步步的基礎設施的搭建最後晚上的一套服務架構體系,用完全docker化的方式給大家呈現,方便根據實際的生產或者測試環境進行調整。
微服務之路是漫長的,我們仍還需要很多工作要做,在工作中,根據業務需求劃分邊界,微服務API的定義,服務內部的模組劃分都需要我們花更多的時間去推敲。

最後呢,這兩年 .NET 在國內實在有些低迷,從接觸 .NET CORE 到現在真心感覺到它的優秀,也希望我們能共同在 .NET 方面能貢獻出更多的力量,能幫助它發展的越來越好!

相關文章