闲鱼策略中枢业务扩展模块实现

开网店2022-10-24

阅读 84
msc640

欢迎关注慕思城:

扩展能力是我们在做平台、中台时都会面临的技术思考。为了平台能尽可能覆盖更多的业务场景,我们需要设计可扩展,可复用的扩展模块,不断拓宽平台能力的边界。本文介绍闲鱼策略中枢平台Luxury做业务扩展模块时遇到的问题以及解决思路,希望能为同样做平台扩展模块的读者提供一些启发。

背景

闲鱼策略中枢Luxury是面向闲鱼全域业务的用户精细化策略运营平台,旨在引导用户认识、参与闲鱼的各业务场景、精准的传递平台价值。

以下面的红包投放为例,它就是Luxury的一条投放策略投放到客户端上之后的展现形式。

一条投放策略包含了:

其中,钩子的定位是负责对接二三方的接口与服务,为素材投放提供动态数据。

现状

目标

技术方案

钩子模块的总体思路是采用适配器模式,抽象出钩子接口层,二三方服务可以通过实现接口来接入Luxury平台。

适配器模式是可扩展性的经典解决方案。例如:

适配器模式做统一抽象的解决方案一般是对出入参做数据映射,适配到统一的接口模型,对上层屏蔽底层实现差异。

钩子模块架构图:

钩子模块链路图:

入参构造

静态配置可视化

一份生成的表单与对应的schema例子如下:

{"type": "object","properties": {"appId": {"type": "integer","title": "app id","required": true},"callSource": {"type": "string","default": "fleamarket","title": "call source","required": true},"tppParam": {"type": "array","items": {"type": "object","properties": {"key": {"type": "string","title": "tpp入参","required": true},"value": {"type": "string","default": "${input.}","description": "支持从input或config从动态获取参数","title": "解析表达式","required": true}}},"description": "从input或config中根据mvel表达式获取参数,最后组装为kv结构的tppParam","title": "tpp请求param"}}}

出参标准化

一个通过字典配置触点的例子如下:

数据映射可配置化

问题:在做红包权益钩子的时候,我们发现红包权益钩子的可复用性不强,因为它仅是TPP算法中台上的一种业务场景,我们一旦需要接TPP算法中台的另一个算法业务场景,就需要重新扩展实现一遍钩子。

分析:可复用性不强的原因在于对接中台类钩子时,中台本身有很强的拓展能力,而我们的出入参的数据映射针对中台上的一种业务场景写死的,导致不能复用到中台上的其他业务场景。因此,我们需要做到数据映射的可配置化。

解决方案:当发现数据映射成为扩展性的瓶颈时,就要着手解决数据映射灵活性的问题。因此需要实现数据映射的可配置化,钩子实现可配置的数据映射引擎,将入参出参的数据映射配置关系抽出放到静态参数里。这样中台钩子就不与任意一个场景耦合,变更场景时只需要修改数据映射配置,不需要重新开发。当钩子实现不与具体场景耦合时,也就实现了最大化灵活性。

效果

总结

扩展模块的设计都很“难”,难的原因在于为了保证可扩展性,在方案设计阶段就不能预设接入服务的结构。接入服务可以是任意一个接口,任意一个服务。对于这样没有边界的服务要做统一和抽象是很困难的。

关键的地方在于统一接口层的定义,也是“规范”和“协议“定义。需要我们从业务特点出发,在保证可扩展性的前提下,保证接口层的语义清晰,在可扩展性和易用性之间找到最佳的平衡点。

这个问题还有疑问的话,可以加幕思城火星老师免费咨询,他的微信号是 huoxing051

点击加我微信【没看懂?那就加我微信直接一对一沟通交流】
>

更多资讯请关注幕思城。

推荐阅读:

淘宝生意参谋有没有免费破解版软件?生意参谋越狱版在哪里下载?

为什么淘宝买家好评不显示?淘宝买家好评多久显示出来?

关闭自选计划多久生效?自选计划使用指南

闲鱼
0 条评论
点击加载
文章教程工具
店铺指导服务 >>
返回资讯工具教程首页