Dubbo 源码剖析与实战
何辉
平安壹钱包架构师
4711 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 33 讲
开篇词 (1讲)
Dubbo 源码剖析与实战
15
15
1.0x
00:00/00:00
登录|注册

24|拦截扩展:如何利用Filter进行扩展?

你好,我是何辉。今天我们继续学习 Dubbo 拓展的第二篇,拦截扩展。
再次见到“拦截”功能,有没有熟悉的感觉,我们前面学过的“参数验证”“缓存操作”,都利用了过滤器特性,对你来说,使用过滤器来编码解决实际问题,应该不是什么难事了。
但是会用,并不代表能用好,很多人在遇到问题或接到新增的业务需求时,面临的常见问题是:是否真的需要使用过滤器?如何适当地利用过滤器进行扩展?
我们进入今天的学习,尝试回答这些问题。

四个案例

想回答第一个问题是否该用过滤器,理解清楚“拦截”到底能达到什么效果就很重要。
我们先看四个可以使用拦截的实际场景,分析一下“拦截”在其中的作用。
案例一,已有的功能在之前和完成时,都记录一下日志的打印。
案例二,查询发票详情功能,需要在查询之前先看看有没有缓存数据。
案例三,用户在进行支付功能操作时,需要增加一些对入参字段的合法性校验操作。
案例四,获取分布式 ID 时,需要增加重试次数,如果重试次数达到上限后,仍无法获取
结果,会在后置环节进行失败兜底逻辑处理,防止意外网络抖动影响正常的业务功能运转。
这四个案例,细心的你想必发现了一些共性,都在执行业务功能之前干一点事情,执行后又干一点事情。逻辑结构看起来是一段一段的,而且每段又各自承载着独立于整体的聚焦功能,功能的层次划分非常清晰。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了Dubbo拦截扩展的应用,强调了分离关系和包含关系的重要性。作者首先列举了四个实际场景,并分析了拦截在其中的作用。随后,讨论了前置、后置与核心业务功能之间的关系,并展示了如何分析新老功能之间的相对关系,以低侵入的方式调整代码逻辑结构,实现具体的业务诉求。文章还提供了一个简单的包含关系的示例代码,并指出了可能带来的后遗症。通过实际案例和技术原理,读者可以了解如何利用过滤器进行扩展,以及如何解决通用性解密诉求。同时,文章还提出了消费方维度的思考题,引发读者对拦截扩展的更深层次思考。整体而言,本文对于需要利用Filter进行扩展的读者具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Dubbo 源码剖析与实战》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部