基于surging 的stage组件设计,谈谈我眼中的微服务
一、前言
surging 開源地址:https://github.com/dotnetcore/surging
隨著業務的發展,并發量的增多,業務的復雜度越來越大,對于系統架構能力要求越來越高,這時候微服務的設計思想應運而生,但是對于微服務需要引擎進行驅動,這時候基于.NET CORE 的微服務引擎surging 就誕生了。
?1.那么怎么樣去理解微服務呢?
? ??微服務是針對業務的松耦合,是對于業務的解耦,也是粒度最小的功能業務模塊,對于本地和遠程的抽象化,對于遠程調用提供了服務治理保證了可靠性通信。
2. 那么什么是微服務引擎呢?
? 微服務引擎是微服務的容器,是掃描或引用加載業務服務模塊驅動生成服務提供者,針對于行業解決方案,集成相應的service host,而針對于業務需要一些中間件來輔助,比如緩存中間件,eventbus中間件(消息中間件),數據儲存中間件,而各個服務又可 以互相通過rpc進行可靠性通信。
3. 是不是需要有非微服務不可的心態去重構系統?
? 微服務是針對于業務的松耦合,是針對于調用的抽象,所以相關復雜的系統都可以使用微服務的設計思想去重構,但是團隊對于微服務把握不到位的話,我建議還是使用SOA去設計系統,后面可以使用k8s做服務治理。
4.那么surging 又能做什么呢?
構建Web應用程序,微服務和api網關
微服務可以部署在docker。可以使用k8s、rancher服務編排彈性擴容
提供了多協議支持
支持負載平衡分流壓力
基于.NET Core的跨平臺可以在Windows,macOS和Linux上運行;也可以移植到其他操作系統。
簡化的服務調用,通過服務規則的指定,就可以做到服務之間的遠程調用,無需其它方式的侵入
服務自動注冊與發現,不需要配置服務提供方地址,注冊中心基于ServiceId 或者RoutePath查詢服務提供者的地址和元數據,并且能夠平滑添加或刪除服務提供者。
軟負載均衡及容錯機制,通過surging內部負載算法和容錯規則的設定,從而達到內部調用的負載和容錯
分布式緩存中間件:通過哈希一致性算法來實現負載,并且有健康檢查能夠平滑的把不健康的服務從列表中刪除
事件總線:通過對于事件總線的適配可以實現發布訂閱交互模式
容器化持續集成與持續交付 :通過構建一體化Devops平臺,實現項目的自動化構建、部署、測試和發布,從而提高生產環境的可靠性、穩定性、彈性和安全性。
業務模塊化驅動引擎,通過加載指定業務模塊,能夠更加靈活、高效的部署不同版本的業務功能模塊
針對于以上描述,我們再來看看surging 2.0 新提供的stage組件,在引擎中又有什么作用呢?
??
5. Stage(關卡)組件介紹
stage 從字面翻譯是關卡,階段。而取名設計的目的是通過這個階段關卡就能進行下一個階段的訪問。其作用針對于對外訪問,其功能有路由轉發,鑒權,第三方調用,服務聚合網關,中轉服務。
二、功能使用
?1.swagger與stage同時使用
swagger組件可以通過加載的業務接口在線生成API文檔,這樣可以給開發人員進行測試和調試,那么配合stage組件使用就可以針對鑒權服務進行測試。
設置jwt 鑒權 ?
通過設置HttpPort 或者stage 的HttpsPort和HttpPort,就能通過相關端口訪問,默認是280,然后可以通過http://127.0.0.1:280/swagger/index.html就能訪問
?2.服務聚合和中轉服務
?針對于第三方或者移動端調用,需要做服務聚合,以滿足業務結果返回的需要, 這個時候就可以使用stage組件了
??注:
?? 聚合服務、中轉服務沒有服務治理,服務注冊與發現
?? 聚合服務、中轉服務調用微服務,可以支持服務治理,服務注冊與發現,服務緩存降級
3. 文件服務
?通過引用stage 組件,然后設置Policy配置就能跨域進行文件上傳和下載功能,而且文件服務可以水平擴展部署
需要按照以下代碼進行編碼,最主要是注意參數和返回結果類型
?然后可以通過swagger 進行測試
上傳文件
?下載文件
4. SSL認證
?可以通過配置HttpsPort、CertificateFileName、CertificateLocation、CertificatePassword來生成ssl認證
5. 網關
?stage 可以生成對外訪問網關,其作用是路由轉發和鑒權
三、性能
測試環境
CPU:Intel Core i7-4710MQ
內存:16G
硬盤:1T SSD+512G HDD
網絡:局域網
版本:.net core 2.2
?
四、總結
surging 2.0將在下月底進行發布,敬請期待
原文地址:https://www.cnblogs.com/fanliang11/p/11204793.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結
以上是生活随笔為你收集整理的基于surging 的stage组件设计,谈谈我眼中的微服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 架构杂谈《六》
- 下一篇: 推荐10个技术圈优质的公众号大号