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