ABP vNext微服务架构详细教程——架构介绍
總體架構(gòu)
所有應(yīng)用服務(wù)、API網(wǎng)關(guān)、身份認(rèn)證服務(wù)均部署在Kubernetes容器中,由Kubernetes提供應(yīng)用配置、服務(wù)治理、服務(wù)監(jiān)控等功能。
客戶端所有訪問均通過Kubernetes的Nginx-Ingress接入服務(wù)集群,并由API網(wǎng)關(guān)負(fù)責(zé)路由匹配和身份認(rèn)證后轉(zhuǎn)發(fā)至相應(yīng)的應(yīng)用服務(wù)處理。應(yīng)用微服務(wù)中不需要二次做身份認(rèn)證。
身份認(rèn)證服務(wù)用戶登錄、驗(yàn)證的相關(guān)接口。所有請(qǐng)求只在網(wǎng)關(guān)做身份認(rèn)證,下層服務(wù)不需要做二次身份認(rèn)證。
數(shù)據(jù)庫(kù)、緩存、日志服務(wù)等服務(wù)建議部署于獨(dú)立的服務(wù)器上,按需求也可以部署于容器中。
具體架構(gòu)如下圖:
分層架構(gòu)
這里我們主要講述服務(wù)端,服務(wù)分層架構(gòu)如下:
網(wǎng)關(guān)層作為業(yè)務(wù)服務(wù)的總出入口,所有服務(wù)調(diào)用均需要通過API網(wǎng)關(guān)。這里我們使用.Net Core中常用的Ocelot網(wǎng)關(guān)
身份認(rèn)證服務(wù)我們采用ABP vNext框架模板提供的身份服務(wù)模塊,其核心為封裝了IdentityServer4.0框架用于提供OAuth2.0協(xié)議各種接口。身份認(rèn)證服務(wù)所需數(shù)據(jù)直接來自數(shù)據(jù)庫(kù)或緩存。
聚合服務(wù)層主要用于聚合、調(diào)度服務(wù)層一個(gè)或多個(gè)微服務(wù)??蛻舳嗽L問的所有接口(除身份認(rèn)證服務(wù)接口以外)均由聚合服務(wù)層提供。應(yīng)用層服務(wù)不直接訪問數(shù)據(jù)庫(kù),而是通過調(diào)用服務(wù)層對(duì)應(yīng)服務(wù)實(shí)現(xiàn)數(shù)據(jù)操作。通常我們做詳細(xì)的接口權(quán)限管理,也是應(yīng)用層接口與權(quán)限做對(duì)應(yīng)。應(yīng)用層服務(wù)我們采用WebApi+ABP vNext框架實(shí)現(xiàn)。
基礎(chǔ)服務(wù)層,建議依據(jù)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)思想劃分,每個(gè)領(lǐng)域設(shè)計(jì)為一個(gè)微服務(wù)。該層服務(wù)提供具體的領(lǐng)域模型、領(lǐng)域業(yè)務(wù)的實(shí)現(xiàn)。通常每個(gè)微服務(wù)對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù),通過倉(cāng)儲(chǔ)實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作?;A(chǔ)服務(wù)層服務(wù)不直接提供客戶端訪問接口,收到請(qǐng)求時(shí)也不需要做身份認(rèn)證、鑒權(quán)處理。這里我把基礎(chǔ)服務(wù)層服務(wù)分為兩類:第一種是身份管理服務(wù),負(fù)責(zé)用戶角色權(quán)限管理,使用ABP vNext框架Application模板構(gòu)建;第二種是其他業(yè)務(wù)微服務(wù),提供用戶角色權(quán)限管理以外的其他業(yè)務(wù)功能,使用ABP vNext框架Module模式構(gòu)建。
數(shù)據(jù)庫(kù)這里我們采用MySQL、緩存這里采用Redis、日志服務(wù)采用Elasticsearch+Logstash+Kibana(ELK)。
具體服務(wù)圖中服務(wù)劃分以Demo為例,實(shí)際開發(fā)中請(qǐng)依據(jù)各自項(xiàng)目實(shí)際需求對(duì)服務(wù)進(jìn)行拆分設(shè)計(jì)。
由于Demo中設(shè)計(jì)的應(yīng)用場(chǎng)景相對(duì)簡(jiǎn)單,更多技術(shù)及ABP框架詳細(xì)用法請(qǐng)參考ABP官方文檔。
總結(jié)
以上是生活随笔為你收集整理的ABP vNext微服务架构详细教程——架构介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DispatcherCore ,一个WP
- 下一篇: .NET6之MiniAPI(十):基于策