首页 > 其他分享 >通用规则平台的设计与应用

通用规则平台的设计与应用

时间:2023-09-05 09:33:05浏览次数:28  
标签:通用 流程 平台 校验 接口 规则 聚合 数据

 

获取更多技术干货哦~

通用规则平台的设计与应用_Java作者:罗京部门:增长中心
一、背景

当下,直播带货已经成为一种重要的消费场景。它重构了传统商场乃至电商的人货场关系,打造了一种即时的、沉浸式的消费体验。有赞做为一个商家 SaaS 服务公司,为商家提供了商品管理,售卖的全流程服务,其中就对接了许多直播带货的渠道,例如快手、陌陌、微博、虎牙等等。有赞的商家可以在上述的渠道直播卖货。但是不同于 SaaS 服务,直播带货属于平台级的业务,平台有义务对平台商家的商品进行审核,剔除部分因为资质或者商品类目不满足平台要求等等原因而不允许售卖的商品。然而,不同的直播卖货渠道审核规则多样化。为满足这个规则多样化且多变的商品审核场景,通用规则平台应运而生。

二、流程2.1 历史

通用规则平台的设计与应用_Java_02

历史流程通过查询接口获取校验字段,硬编码规则对商品类目、标题等一系列商品属性进行校验,对于不符合规则的商品返回相关的提示文案。因为是代码维护规则,所以规则的变更一般需要代码更改发布,涉及到代码修改就会牵扯出之后一系列的发布测试回归流程。存在以下痛点:

  • 商品审核规则不够灵活,只支持校验阈值的快速变更
  • 更改依赖代码修改发布,变更周期长
  • 回归测试流程繁琐,不支持灰度

2.2 目标

通用规则平台的设计与应用_Java_03全流程配置化避免了代码的变更,通过规则的灰度发布简化了流程,并且一定程度降低了发布可能导致的风险。

三、整体设计通用规则平台的设计与应用_Java_04

 整体分为2个大的模块:实时数据的聚合查询、规则执行系统。

  • 数据作为规则校验的基础。复杂的规则有复杂的数据校验,是以大量数据做为基础。而这部分数据大多是通过调用三方接口获取并聚合而来的。
  • 数据产出后,就会流转到规则引擎。基于查询聚合产出的数据,解析配置的规则,执行条件返回最终结果,并给出提示文案。

3.1 实时数据聚合 

初始传入的数据可能只是很少的部分,例如商品的主键id。但是规则又要基于商品类型、商品类目等信息做规则校验。就需要实时查询商品信息接口,提取出必要数据信息。不同业务方的接口又有定制的接口参数和返回数据结构。所以接口参数和返回数据解析也要配置化。同时业务接口之间又有依赖关系,需要各自组成并行或者串行的调用流程。

3.1.1 数据源

数据源接入方式有 dubbo 接口、http 接口。其中,dubbo 使用泛化调用的方式实现,dubbo 数据源配置服务名、方法名和入参模板,调用业务方。再根据返回结果的解析,提取需要的返回数据。 通用规则平台的设计与应用_Java_05

3.1.2 整体流程通用规则平台的设计与应用_Java_06

实时数据聚合接口和规则执行系统是相互独立的。串在一起才是完整的规则平台,但是又可以独立使用,实时数据聚合可以提供通用的查询能力,提供配置化的接口灵活取数,可以提供给后台界面做简单的聚合查询。规则系统也可以不依赖实时数据聚合系统,只要业务方直接传入所有校验参数,规则也能执行得出结果。

3.2 规则系统 

3.2.1 规则模型

通用规则平台的设计与应用_Java_07

每个条件由左值、操作符、右值组成,多个条件通过逻辑表达式组成规则,文案可以在任意条件或者规则中配置。多个规则并行组成规则组。其中左值大多是数据聚合的某个字段,操作符是大于、小于、等于之类的判断条件,也可以是个自定义方法,注册到 QLExpress 。右值通常会是阈值,也可以填入数据聚合的字段。自定义的文案可以支持 QLExpress 的函数解析,主要用于拼接数据聚合中的字段。 通用规则平台的设计与应用_Java_08

3.2.2 执行引擎

基于现有业务场景以及开发成本,选择了轻量化的 QLExpress 做规则引擎,基于 QLExpress 封装一套结构化的规则定义,基于固化的规则模型,开发配置化的规则解析。QLExpress 是由阿里的电商业务规则、表达式、数学公式计算、语法分析、脚本二次定制等强需求而设计的一门动态脚本引擎解析工具。在本系统中用于操作符的支持和注册,以及文案的解析。基础表达式则是使用 QLExpress 的比较操作符号,有>、<、==、!=等等。也可自定义函数来实现更加高级的表达式,如正则匹配,字符串 in 操作,甚至是 dubbo 接口调用。除此之外,文案的解析也使用了脚本执行引擎,来支持动态的文案参数解析和逻辑解析。

3.2.3 规则灰度发布流程

配置化导致了变更的便捷。但是便捷的流程如果没有可靠的保障,频繁变更之下就很容易出错。但是一个好的流程规范虽不能完全避免错误,但可以在一定程度上减少错误。 通用规则平台的设计与应用_Java_09所有的规则变更都需要经过灰度验证流程。在灰度配置中校验规则格式正确性,在灰度运行时校验规则逻辑正确性。

四、总结

配置化的规则替代了硬编码的校验逻辑,减少了修改规则发布代码维护的成本,使原本的规则变更周期从一周的修改测试发布变成了实时更改。同时规则的灰度发布也使验证变得简单。相较于其他规则系统,数据获取和规则执行各自功能完全独立,可以为其他场景复用单独的功能。但是也还存在许多待完善的地方,例如执行的结构化日志,日志的查询分析,数据源的实时监控等等。所以后续也会在这些可靠性优化上持续投入,完善整个系统。


标签:通用,流程,平台,校验,接口,规则,聚合,数据
From: https://www.cnblogs.com/lrzy/p/17678836.html

相关文章

  • ECshop仿顺丰优选综合购物商城平台源码旗舰版+团购+触屏版
    源码介绍:一款时尚简洁的综合通用类模板,整站宽屏,头部含多个下拉菜单、购物车及搜索功能,方便扫描;首页商品楼层功能,调用限时抢购和下期限时抢购功能,底部调用评论功能,添加了邮件订阅。二级分类页新增自定义组合筛选、商品排序、翻页等功能;商品详情页开发单选属性、数量加减、剩余件数、......
  • 如何让Android平台像网络摄像机一样实现GB28181前端设备接入?
    技术背景好多开发者在做国标对接的时候,首先想到的是IPC(网络摄像头),通过参数化配置,接入到国标平台,实现媒体数据的按需查看等操作。像执法记录仪等智能终端,跑在Android平台,对接GB28181平台的需求也非常大,网上相关demo也不少,但真正设计符合相关协议规范、功能完善、长时间稳定运行的并......
  • Lnton羚通视频分析算法平台OpenCV-Python 教程 Hough直线变换
    OpenCVPythonHough直线变换霍夫直线变换(HoughTransform)是一种在图像中检测直线的技术。它可以帮助我们从图像中鲜明地检测出直线段,并且对于噪声和不完整的线段也有较好的鲁棒性。霍夫直线变换的基本思想是将直线表示为参数空间中的曲线,通过统计参数空间中的交点来检测直线。以下......
  • JS中函数的上下文和上下文规则
    JS:函数的上下文、上下文规则、call和apply指定上下文JS中函数的上下文和上下文规则一、函数的上下文函数中可以使用this关键字,它表示函数的上下文函数中的this具体指代什......JS中函数的上下文和上下文规则一、函数的上下文函数中可以使用this关键字,它表示函数的上下......
  • 安防监控/视频汇聚/云存储/AI智能视频融合平台页面新增地图模式
    AI智能分析网关包含有20多种算法,包括人脸、人体、车辆、车牌、行为分析、烟火、入侵、聚集、安全帽、反光衣等等,可应用在安全生产、通用园区、智慧食安、智慧城管、智慧煤矿等场景中。将网关硬件结合我们的视频汇聚/安防监控/视频融合平台EasyCVR一起使用,可以实现多现场的前端摄像......
  • 视频监控管理平台EasyCVR部署后无法正常启用是什么问题?该如何解决?
    安防监控/视频监控/视频汇聚平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,视频云存储/安防监控汇聚平台EasyCVR支持多种播放协议,包括:HLS、HTTP-FLV、WebSocket-FLV、WebRTC、RTSP、RTMP,并且支持对外分享,平台可支持1、4、9、16......
  • Linux MeterSphere一站式开源持续测试平台远程访问
    @[TOC]前言MeterSphere是一站式开源持续测试平台,涵盖测试跟踪、接口测试、UI测试和性能测试等功能,全面兼容JMeter、Selenium等主流开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量的软件交付,推动中国测试行业整体效率的提升。下面介绍在L......
  • 视频监控/安防监控EasyCVR平台智能边缘网关硬件ubuntu系统如何取消休眠?
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。视频汇聚融合管理平台EasyCVR既具备传统安防视频监控的能力,......
  • 基于springboot+vue的商城系统(电商平台)(前后端分离)
    博主主页:猫头鹰源码博主简介:Java领域优质创作者、博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询项目介绍: 本系统以商城为主题,采用前后端分离,项目代码工整,结构清晰,适合......
  • 基于springboot的自助旅游服务平台
    博主主页:猫头鹰源码博主简介:Java领域优质创作者、博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询项目介绍: 该系统创作于2022年4月,包含详细数据库设计。基于springboot......