图解设计模式:身份认证场景的应用(一)

发布于 2022-6-21 16:37
浏览
0收藏

 

今天和大家聊一聊,如何合理的将多种设计模式放到同一个业务场景中

 图解设计模式:身份认证场景的应用(一)-开源基础软件社区
业务背景
最近接到一个认证的需求,C 端用户在购买公司保险时,需要先进行 实名认证确认身份

 

为了保证 业务复用,单独将认证的逻辑拆分为微服务模块

 

C 端用户下单购买保险的逻辑大致如下

 图解设计模式:身份认证场景的应用(一)-开源基础软件社区
先说下关于认证相关的一些基本知识。简单来说,你如何证明你是你自己

 图解设计模式:身份认证场景的应用(一)-开源基础软件社区
一些云服务厂商都会有关于验证身份的付费接口,接下来我们就以腾讯云姓名、身份证二要素认证为参考进行举例

 

说完认证知识,我们再来拆解下用户购买保险的步骤

  1. 用户在前端发起认证行为
  2. 请求经过网关调用保险服务,保险服务调用认证服务
  3. 认证服务调用腾讯云认证付费 API,返回认证结果信息
     图解设计模式:身份认证场景的应用(一)-开源基础软件社区
    认证流程
    在整个块认证流程中,我们会讲解三种设计模式,按照顺序分别是策略、责任链、模板模式

 

策略模式
定义一组算法类,将每个算法分别封装起来,让它们可以互相替换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化,客户端代指使用算法的代码
我们拿认证来说,定义一个认证接口,然后实现二、三、四要素以及人脸识别实现;将这些实现类放到一个 Map 容器中,并和业务规定好对应的标识 Key,通过标识 Key 获取对应的认证策略实现

 图解设计模式:身份认证场景的应用(一)-开源基础软件社区
如果真的像上面这么简单,if-else 判断加上拆解几个认证函数就可以搞得定,还真的不一定需要策略模式

 

我们再延伸来看一种复杂场景:假设后续不满足于腾讯云的认证,为了保证可用性以及更多的流量,需要对接更多的认证平台

 

可用性:平台的接口不太可能保证全年百分百可用,需要有容灾降级或者替换方案

更多的流量:腾讯云认证接口限流 100次 / S
 图解设计模式:身份认证场景的应用(一)-开源基础软件社区
这个时候策略模式的优点就体现出来了,简化代码的复杂性 以及 保证开闭原则,增加程序的健壮性以及可扩展性

 

后续再增加三方认证平台和认证方式,都不需要改动原有逻辑,添加对应实现即可

 

文章转自公众号:龙台的技术笔记

标签
已于2022-6-21 16:37:04修改
收藏
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐