一、前言
查阅了大多数相关资料,查阅到的IdentityServer4 的相关文章大多是比较简单并且多是翻译官网的文档编写的,我这里在
Asp.Net Core 中IdentityServer4 的应用分析中会以一个电商系统架构升级过程中普遍会遇到的场景进行实战性讲述分析,同时最后会把我的实战性的代码放到github 上,敬请大家关注!
这里就直接开始撸代码,概念性东西就已经不概述了,想要了解概念推荐大家查看我之前的文章和官方文档:
二、应用实战
2.1 模拟场景
最初小团队的电商系统场景如下图:
这张架构图缺点:
- 发布频繁,发布影响整个电商系统
- 很难做到敏捷开发
- 维护性可能会存在一定的弊端,主要看内部架构情况。
大多数小电商团队对于多客户端登录授权来说可能已经实现了Oauth 2.0 的身份授权验证,但是是和电商业务集成在一个网关里面,这样不是很好的方式;由于公司业务横向扩大,产品经理调研了代理商业务,最终让技术开发代理商业务系统。架构师出于后续发展的各方面考虑,把代理商业务单独建立了一个独立的网关,并且把授权服务一并给独立出来,调整后的电商系统架构图如下:
身份授权从业务系统中拆分出来后,有了如下的优势:
- 授权服务不受业务的影响,如果业务网关宕机了,那至少不会影响代理商网关的业务授权系统的使用
- 授权服务一旦建立,一般就很难进行升级,除非特殊情况。
- 在敏捷开发中,业务系统可能发布频繁,电商业务系统可能每天都是在频繁升级更新,这样也不至于影响了授权系统服务导致代理商业务受到影响
代理商业务引入进来后,同时又增加了秒杀活动,发现成交量大大增大,支付订单集中在某一时刻翻了十几倍,这时候整个电商业务API网关已经扛不住了,负载了几台可能也有点吃力;开发人员经过跟架构师一起讨论,得出了扛不住的原因:主要是秒杀活动高并发的支付,以至于整个电商业务系统受到影响,故准备把支付系统从业务系统中拆分出成独立的支付网关,并做了一定的负载,成功解决了以上问题,这时候整个电商系统架构图就演变成如下:
支付网关服务抽离后的优势:
- 支付网关服务更新不会太频繁,可以减少整个系统的因为发布导致的一系列问题,增强稳定性
- 支付系统出现宕机不影响整个电商系统的使用,用户还可以浏览商品等等其他操作,技术和运维人员也比较好排查定位问题所在;提升用户体验,同时提升排查问题的效率。
授权中心
:单独一个服务网关,访问支付业务网关
、电商业务网关
及代理商业务网关
都需要先通过授权中心
获得授权拿到访问令牌AccessToken
才能正常的访问这些网关,这样授权模块就不会受任何的业务影响,同时各个业务网关也不需要写同样的授权业务的代码;业务网关
仅仅只需关注本身的业务即可,授权中心
仅仅只需要关注维护授权;经过这样升级改造后整个系统维护性得到很大的提高,相关的业务也可以针对具体情况进行选择性的扩容。
上面的电商网关演变架构图中我这里没有画出具体的请求流向,偷了个赖,这里还是先把OAuth2.0 的授权大体的流程图单独贴出来:
由于授权网关服务
之前单独抽离出来了,这次把支付业务网关拆分出来就也比较顺利,一下子就完成了电商系统的架构升级。今天这篇文章的目的架构升级也就完成了,想要深入后续电商系统架构升级的同学可以关注后续给大家带来的微服务的相关教程,到时继续以这个例子来进行微服务架构上的演变升级,敬请大家关注。好了下面我们来回归该升级的和核心主题授权网关服务
IdentityServer4
的应用。