abp vNext中的微服務通信

簡介

服務通信是微服務架構中必不可少的功能,服務通信的效率決定了微服務架構的優略。經常使用的微服務通信策略有兩種,分別是rpc、http,其中rpc以gRpc框架爲表明使用者最多。abp vNext微服務架構中固然也有服務通信策略,採用的是http方式進行服務通信。json

gRpc和http對比

雖然gRpc高效安全,可是相關的.net框架實在臃腫難用,這一缺陷在.net core3.X後可能會獲得完美解決。abp vNext微服務架構出如今.net core3.0之前,因此選擇了靈活方便的http進行服務通信。微服務通信中http策略效率雖然低於gRpc,可是包裝json後經過容器服務內部調用效率也是槓槓的。http做爲服務通信的最大好處是用戶請求http api接口後,內部服務請求其餘服務時會攜帶用戶的http header(身份信息)。abp vNext微服務架構中使用ids4集成了統一的受權服務,全部接口受權均經過jwt-bearer形式,這種方式讓http服務內部通信策略的身份和權限驗證變得簡單方便,能夠說 "用戶的請求-->接口身份和權限驗證-->微服務接口身份和權限驗證" 從始而終一鼓作氣,不用在服務通信時構造token或者從新驗證用戶。abp vNext微服務通信效果基本以下:api

abp vNext服務通信

abp vNext微服務架構中提供了內部通信網關(InternalGateway),全部內部服務接口調用均經過該網關服務。下面將介紹如何經過內部網關調用微服務接口。安全

step1:引用AbpHttpClientIdentityModelModule、AbpIdentityHttpApiClientModule模塊

在ApplicationModule中添加AbpHttpClientIdentityModelModule、AbpIdentityHttpApiClientModule模塊依賴,上述模塊分別在Volo.Abp.Http.Client.IdentityModel、Volo.Abp.Identity.HttpApi.Client程序集,也能夠直接引用nuget包。架構

step2:注入應用服務

以用戶應用服務爲例,微服務某應用服務中構造注入IIdentityUserAppService框架

private readonly IIdentityUserAppService _userAppService;微服務

step3:調用接口

在應用服務接口中調用用戶應用服務接口:post

var user = await _userAppService.GetAsync(per.UserID);性能

step4:配置遠程服務接口

配置微服務中遠程服務地址,遠程服務就是內部網關地址。測試

 測試接口spa

 儘管接口查詢業務比較複雜,並且通過遠程服務接口調用,可是postman測試接口時間在100ms內,總的來講性能優越。

總結

以上介紹了abp vNext微服務架構中的服務通信和微服務接口調用方式,經過測試代表abp vNext微服務通信性能可靠,並且經過內部網關分發的api接口都須要身份和權限驗證,保證了微服務通信的安全。總結abp vNext服務通信的優勢以下:

一、簡單,經過以上操做能夠看出,abp vNext中的微服務接口調用十分簡單,就像普通的倉儲調用同樣。

二、高效,雖然http方式的服務通信效率低於pRpc框架,可是json包裝後的http請求速度也很是可觀。

三、安全,相比gRpc框架,使用http進行服務通信時會驗證身份和權限,保證了微服務的通信安全。

 最近ABP發佈了1.0版本,想要轉型微服務的盆友感受get起來吧。

相關文章
相關標籤/搜索