基于优先级配置矩阵的套餐系统
在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合。
有限的因变量与自由发挥的自变量
先设定一下业务场景,假设我们要做电话套餐系统。
一个电话套餐里直接影响客户使用体验的是:
价格
通话
每月免费接听时长
每分钟接听收费
每月免费拨打时长
每分钟拨号收费
短信
每月免费条数
每条收费金额
流量
是否降速无限流量
流量包购买价格
套餐内包含流量
本文称呼上述的内容是一个套餐系统中的因变量,是最终结果,其值由多个自变量联合确定。电话套餐的因变量可能不止于这些内容,但其总是有限可枚举的。
对应的,本文将以下内容称为 自变量:
地域(这个无限流量的套餐只能给广东省客户的)
身份(看在他还在读书的份上,套餐费用给他减几块钱吧)
公司(这个是合作公司,整个公司都用我们的短号,这个套餐必须要优惠点)
客户画像(这货看起来很有钱,对他展示一些高价套餐,同时象征性给他多一点通话时长吧)
营销入口(这个从我们的活动链接进来薅羊毛的,还是给他减点价吧)
使用的客户端(最近在推广APP,在APP申请的套餐给他送点流量吧)
基础套餐定义(这个套餐叫 无线流量卡,客户申请这个套餐时,我们给他一个基准内容吧)
......
导致因变量变化的自变量很多,同时多个自变量也有可能联合使用触发新规则:
地域为广东地区身份为学生的客户购买套餐时 额外送1G
公司为 X 的 领导岗位 免话费
......
相对于因变量,自变量及其组合的数量可能难以想象的庞大。
如果每个自变量的组合等情况都要在我们的系统中通过代码来定义,这是一个难以想象的灾难。
此时此刻产品、渠道等自变量究竟是什么
一个人,在公司里是员工,在父母前是儿子,在老婆前是丈夫,在车里他是司机。
人是多面的,在每个不同的场景有不同的表现,并且在特定的场景也只需要有特定的表现,而不能串场。
我们业务系统里的渠道可能是 APP,小程序,H5,桌面应用等,这些渠道自身有很多其他的特性,但在套餐系统关心的渠道仅仅是:
当渠道为APP时,额外赠送1G流量,减免5块钱
当渠道为小程序时,送100M流量
......
这些对套餐的影响,定义了在 套餐场景下,一个渠道是什么。
同理,我们依然可以通过同样的形式,定义套餐系统里 地域的含义,身份的含义,营销入口的含义,这与NLP中的词向量有异曲同工之妙。
自变量类型 | 自变量值 | 流量 | 免费通话时长 | 套餐价格 | 赠送彩铃 |
---|---|---|---|---|---|
营销入口 | 合作公司A | + 1G | null | 95折 | 否 |
营销入口 | 合作公司B | null | +10min | 95折 | 否 |
渠道 | APP | +1G | null | -5元 | 是 |
渠道 | 公众号 | +100M | null | null | 否 |
基础套餐定义 | 流量霸王套餐 | 5G | 30min | 58元 | 否 |
基础套餐定义 | 通话大咖套餐 | 1G | 180min | 58元 | 否 |
通过自变量确定因变量
要通过自变量(外部套餐,渠道,营销入口等)计算出因变量(最终面向客户的套餐内容),首先要确定的是 计算规则。
一个可供的参考的形式如下:
为每个自变量类型确定整体的执行优先级
为每个因变量类型确定计算的形式
如上一节的表格中,我们可以定义各类自变量计算优先级:
基础套餐定义 低
渠道 中
营销入口 高
那么 合作公司A引流的客户在App中 选择了 流量霸王套餐 ,那么它的流量是
5G + 1G + 1G = 7G
上面的规则很简单,就是简单的加减操作
而赠送彩铃可以选择另外的规则,只要出现过“是”,那就“是”
否 + 是 + 否 = 是
多自变量联合确定的操作内容的场景
如果出现了
“当 营销入口为 A 公司 渠道用的是 APP时,
给我再额外送2G流量”
又或者
“我不管你什么设计,我的这个套餐就是不允许
其他乱七八糟的 渠道、营销入口修改内容”
等需求时,就会打破上述简单的按照单个自变量优先级排序的规则
我们可以额外新增一个更高优先级的自变量,以实现特定的需求
自变量类型 | 自变量类型优先级(数字越大越优先) |
---|---|
基础套餐定义 | 10 |
渠道 | 20 |
营销入口 | 30 |
营销入口 + 渠道 | 50 |
特殊不可修改套餐 | 100 |
这样我们就可以解决业务的特殊需求。
优缺点分析
我们分析一下,该种解决方案的优缺点。
优缺点是通过比较而得到的,我们对比的解决方案假定上述的套餐最终定义是通过Hard-Code实现的,那么:
优点:
自变量定义显式化
我们可以快速地知道所谓的 渠道、营销入口、省份等概念,在套餐系统中起到的作用是什么
最终套餐表现显式化
只要确定了自变量的值,我们就可以从,配置表中抽取出特定配置,构建出一个按照行优先级排序的矩阵,从而快速得到最终套餐的表现
节约开发资源
在确定套餐内容过程中,可以统一处理所有自变量对应的属性
在没有新增 因变量时,开发工作量极少,甚至免于开发
业务获得了其最大的灵活度
特殊逻辑外置化
业务有时会像上面提出的“这个套餐不能被任何其他自变量配置修改”的需求时,我们可以让其自行通过配置实现,而不用污染我们的代码
至于后续这个业务配置变得怎么乱,其都是由于业务自身思考不合理导致,配置信息由业务主管,其需要为自己的配置负责。
缺点:
可能需要给业务提供一个友好的配置界面,需要点开发工作量
上面的电话套餐只是一个举例,我们可以很容易地将这个简单的设计迁移到其他类似的场景,如汽车定制套餐,贷款套餐等。
关于作者
作者曾在两家排名前三的股份制商业银行工作过,目前在一家排名前二的互联网银行工作,做过业务,做过中间件,做过架构,也带过小团队。
公众号会定期分享个人关于 技术、架构、业务 等的思考,欢迎关注公众号。
同时欢迎添加个人微信skyesx探讨技术相关问题,请备注名字+公司。
本文有任何不妥欢迎留言斧正,若本文能带给你收获,请不吝分享!
推荐阅读
从分治的思想到架构的设计
谈复用的成本与中台的建设
基于优先级配置矩阵的套餐系统相关推荐
- SysTick系统定时器(功能框图和优先级配置)
SysTick系统定时器(功能框图和优先级配置) SysTick-系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中.系统定时器是一个 24bit (2^24)的向下递减的计数器,计数器 ...
- python dlib caffe人脸相似度_基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【一】如何配置caffe属性表...
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- 基于stm32Cubemx的矩阵键盘配置
矩阵键盘的选择 我这里使用的是某宝一块四包邮的4*4矩阵键盘,感觉对大部分简单工程的实现绰绰有余 Cubemx工程的配置 新建工程,配置RCC,SYS,时钟树等基础功能 一般设置为最大速率,之后点击O ...
- android9彩蛋小米,外媒曝光小米9外观配置 运行基于Android P的MIUI 10系统
每年高通旗下骁龙旗舰移动平台的上市都会引发一波抢购狂潮,而随着骁龙855的发布,谁会是第一款搭载该平台的国产手机成为大家关注的焦点.以小米和高通紧密的合作关系来看,小米下一款旗舰机肯定会搭载骁龙855 ...
- 诊断网络层和应用层交互_基于SoC的数据采集与交互系统解决方案
引言 Internet的快速发展和成功促进了以太网(Ethernet)技术的发展和应用的扩展,所涉及的领域十分广泛,如传统的工业控制.信息家电.智能家居.安全监控.楼宇自动化.医疗.环境监测等.大多数 ...
- 路由器snmp配置_基于keepalived配置数据库主从实现高可用
基于keepalived配置数据库主从实现高可用 使用keepalived来监听端口,实现数据库的高可用.实现效果,其中一台数据库服务器突然出故障或关机时,应该不影响应用正常运行,等待服务器启动之后, ...
- 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【三】VGG网络进行特征提取
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- 基于DE2的开源片上系统Freedom E310移植
引言:伯克利大学于2014年发布了开源指令集架构RISC-V,其目标是成为指令集架构领域的Linux,应用覆盖IoT(Internet of Things)设备.桌面计算机.高性能计算机等众多领域[1 ...
- Nachos进程数量限制128、ID号分配以及基于优先级的调度算法详解
文章目录 写在前面 运行环境配置 最大线程限制 实现可回收的线程ID机制 基于优先级的先来先服务调度算法 修改完毕的nachos我已经上传了,需要的话可以点击这里下载,积分不够可以私信我,CSDN设置 ...
最新文章
- linux-glibc内存管理小结2(内存相关系统调用的实现)
- Django中配置自定义日志系统
- 对 Linux 新手非常有用的 20 个命令
- EventLoop 与Channel 的关联
- win10子系统ubuntu图形界面_win10系统中安装ubuntu子系统及图形界面
- 2. PHP 编译安装
- 让博客园博客自动生成章节目录索引
- 和包支付的钱哪里来_老瓦发问国际乒联:道理我都懂!问题钱从哪里来?
- jdk 各版本官网下载
- doc 问卷调查模板表_Word制作电子版问卷调查模板表「教你方框内打钩」
- 控件ShowWindow(SW_HIDE)不起作用
- QQ号大规模被盗与你我有什么关系?你我该如何做?
- IEEE 802.3av 10Gbits EPON 中文翻译(一)
- vivox5l的Android是5.0,步步高Vivo X5 X5L刷机教程(官方固件rom升级教程)
- C++病毒——鼠标乱飞
- Docker push命令推送镜像到远端仓库
- Emgucv摄像头使用
- 从源码角度了解react工作原理
- 在线网络考试系统源码
- 高等代数_第8章:证明_商空间的维数公式