服务间调用要通过网关吗_Asp.Net Boilerplate微服务实战(二)架构解析
????這一章節,我來介紹一下Asp.Net Boilerplate框架在微服務開發中所用到的技術及其大體的組織架構。由于本系列僅討論ABP框架在微服務架構下的應用方案,不涉及具體的業務邏輯,所以在文中,不討論服務拆分方案等細節,也未采用中臺架構等復雜架構方案,此類方案可依據業務需求進行設計,與Asp.Net Boilerplate框架本身無關。
????雖然Asp.Net Boilerplate和AbpvNext從框架層面有很大區別,會影響到微服務的分層和模塊組織方式等細節實現,但是對于微服務的總體架構及技術選型方面差別不大。
? ? 這里,我借用ABPvNext的一張微服務架構示意圖:
我們會用到圖中提及的一下技術:????
API網關作為服務調用的總入口,同時負責了負載均衡、身份認證、熔斷、限流等功能,Ocelot是基于.NetCore實現的一個主流API網關,對于以.Net技術為主的研發人員來說,更容易使用及修改。
IdentityServer也是基于.NetCore開發,是ABP官方推薦的身份認證框架。在這里,我們也同樣以IdentityServer4作為身份認證中心。
ELK(Elasticsearch、Logstash、Kibana)是目前最常用的日志服務之一(不僅限于.Net技術棧),實際使用中,我們通常會有直接寫入lasticsearch、使用ELK+Filebeat、ELK+Kafuka等多種方式。
微服務間通訊方式有同步和異步兩種方式,需要依據不同業務場景進行選擇。其中同步通訊有多種實現方式,這里我使用了和AbpvNext微服務Demo相同的內外雙網關方式,服務間調用通過內網關調用WebAPI接口方式實現。
AbpvNext提供了跨服務的事件總線機制,但是Asp.Net Boilerplate未對此進行封裝和支持,需要我們額外進行開發。
? ? 除此之外,我們還會用到其他一些組成微服務架構必須的技術組件:
服務注冊和發現采用Consul
配置中心采用Apollo
應用性能監測采用Skywalking
? ? 在此基礎上,我們會發現即使我們按照業務聚合拆分了不同的網關,單一網關能夠承載的服務數量依舊非常有限。通常我會使用Nginx作為作為上層負載均衡機制,組成網關集群。或依據項目訪問量需求,使用云服務提供商提供的SLB組成更加復雜的負載均衡方案。
????最終我們用到的技術模塊如下:
????后面幾期,我會按照各個模塊分別對Asp.Net Boilerplate在微服務架構中的應用細節進行分享,敬請期待……
總結
以上是生活随笔為你收集整理的服务间调用要通过网关吗_Asp.Net Boilerplate微服务实战(二)架构解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python range从大到小排列_p
- 下一篇: 板材开料最优算法_板材套料软件AutoN