[Abp vNext微服務實踐] - 服務通訊


簡介

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

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服務內部通訊策略的身份和權限驗證變得簡單方便。

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:調用接口

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

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

step4:配置遠程服務接口

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

 測試接口

 盡管接口查詢業務比較復雜,而且經過遠程服務接口調用,但是postman測試接口時間在100ms內,總的來說性能優越。

總結

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

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

2、高效,雖然http方式的服務通訊效率低於pRpc框架,但是json包裝后的http請求速度也非常可觀。

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

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

文章目錄:https://www.cnblogs.com/william-xu/p/12047529.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM