责任链模式之模仿Sentinel实现

在实际的项目生产活动中,我们经常会有很多前置处理,以及后置处理的需求。例如就拿简单的支付过程来说。
之前我们可能需要经过如下的环节:

  1. 根据支付请求,查询订单实际信息
  2. 根据实际订单信息,我们需要报送风控信息
  3. 查询优惠信息,进行优惠鉴权操作

以上就是可能出现的流程环节。那实际生产过程中,我们应该考虑用什么样的方式更合理的完成呢?
如果大家有阅读源码的习惯,其实可以在各种各样的开源框架中发现这种需求的存在。
比如 Spring的filter,Sentinel的限流操作,还有netty的pipline
这就是我们今天要说的责任链模式

责任链模式

定义:创建多个对象,使这些对象形成一条链,并沿着这条链传递请求,直到链上的某一个对象决定处理此请求。
特点:

  1. 接受请求的对象连接成一条链,对象之间存在层级关系
  2. 这些对象可以处理这些请求,也可以传递请求
    责任链UML

实战练习

接下来就来实现一下开头说的支付前流程,通过看Sentinel 源码,实现的责任链模式。

</
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值