[AbpvNext微服务实践]-服务通讯
简介
服务通讯是微服务架构中必不可少的功能,服务通讯的效率决定了微服务架构的优略。常⽤的微服务通讯策略有两种,分别是rpc、http,其中rpc以gRpc框架为代表使⽤者最多。abp vNext微服务架构中当然也有服务通讯策略,采⽤的是http⽅式进⾏服务通讯。
gRpc和http对⽐
虽然gRpc⾼效安全,但是相关的框架实在臃肿难⽤,这⼀缺陷在 core3.X后可能会得到完美解决。abp vNext微服务架构出现在 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起来吧。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论