专栏名称: 亿级流量网站架构
开涛技术点滴
目录
相关文章推荐
OSC开源社区  ·  2024年中国开源模型:崛起与变革 ·  3 天前  
OSC开源社区  ·  继V3之后,沐曦GPU再完成DeepSeek ... ·  3 天前  
码农翻身  ·  漫画 | ... ·  2 天前  
程序猿  ·  清晰的、模块化的编码风格 ·  3 天前  
51好读  ›  专栏  ›  亿级流量网站架构

插件化,让业务开发变轻松

亿级流量网站架构  · 公众号  · 程序员  · 2019-11-23 11:42

正文

起因和思路:

达达商城里有多种类型的商品,每种商品有不同的展示,定价,发货,库存管理,退款逻辑。在项目开发半年后,代码逻辑繁杂混乱,难以维护。在2016年的十一,我们实施了一次重构,思路为:

  • 商品购买流程是不变的,明确每个流程节点的触发方法。

  • 流程节点上业务的逻辑是灵活多变的,受到前端框架react组件化的启发,用插件的形式拆分隔离,对不同的商品做插件配置。

  • 商品可以在后台绑定和修改插件,及调整插件参数。

结构图

商品,节点和插件:

每一个商品会绑定多个插件,每个商品可动态的添加删除插件:

用户购买任何类型商品,都会经历如下图的各个节点。当某个节点被触发时,系统会检测购买的商品有哪些插件,并按顺序执行绑定插件在该节点的代码逻辑。

插件的灵活性和可读性:

插件的参数是可以实时配置的,可以针对商品的需求,调整插件参数。

插件的流程所执行的逻辑可以直接在后台看到,方便理清该商品的购买流程细节,无需再写文档。

编写一个插件:

接到新需求,你要做的只是编写一个插件文件。 系统通过反射的方式,自动获取到路径里的新的插件,展示在后台界面上。后台配置后,插件即可生效。

插件基础属性:

属性 说明
plugin_id 插件id
plugin_name 插件展示名称
category 插件分类
priority 插件的执行顺序
desc 插件在不同节点的逻辑描述

插件配置参数Props:

继承Props Class,定义了该参数的属性,默认值等。Props是可以在后台配置的,实时生效。

节点方法:

节点的业务代码都写在节点方法中。当一个节点被触发,绑定的插件上的节点方法就会按priority的顺序依次执行。节点方法会输入该插件的配置参数Props,API传入的参数Form,和贯穿不同插件的参数Data。每个插件执行结束后也会返回标准的Output Class,来处理一些异常情况。







请到「今天看啥」查看全文