杭州做网站外包公司有哪些,集团网站 备案,创建公司网站 优帮云,什么网站做的产品海报比较多大家好#xff0c;我是隐墨星辰#xff0c;今天和大家聊聊渠道路由设计。
这篇文章主要讲清楚#xff1a;渠道路由是什么#xff0c;为什么需要渠道路由#xff0c;渠道路由的几种形态#xff0c;一个简洁而实用的基于规则的渠道路由设计。
注#xff1a;有些公司称渠…大家好我是隐墨星辰今天和大家聊聊渠道路由设计。
这篇文章主要讲清楚渠道路由是什么为什么需要渠道路由渠道路由的几种形态一个简洁而实用的基于规则的渠道路由设计。
注有些公司称渠道为通道都是一个意思为方便起见本文统称为渠道。
1. 一些背景知识
有些支付公司没有区分支付方式咨询、渠道咨询、渠道路由而是混在一起做掉这样的好处是简单而实用缺点是扩展性不足。下面将以扩展性最好的拆分方式来讲解。 下面是三者之间的简单关系图 说明
支付方式咨询根据用户的请求组装可用支付方式列表返回给用户。由收银域提供服务。渠道咨询根据用户的请求组装可用的渠道列表和渠道属性返回给收银域再由收银域转换为支付方式返回给用户。由渠道网关提供服务。渠道路由当有多个渠道可用时选择出最优的一个渠道。由渠道网关提供服务。 再详细一点如下
支付方式咨询解决用户可以使用哪些支付方式比如余额、招行借记卡、招行信用卡等。比如虚拟商品不能使用信用卡这种支付方式的管理就是支付方式咨询的职责。
渠道咨询解决是否有渠道可以支持当前的支付行为。比如用户绑定了招行借记卡但招行当前正在维护无法提供服务那就将渠道状态设置为不可用收银域对应的支付方式会置灰。
渠道路由解决最优渠道问题。需要综合支付成功率、支付成本、用户体验、渠道状态等多种因素挑选出最优的一条渠道。 2. 渠道路由核心作用 渠道路由核心作用是当有多个渠道同时满足业务诉求时综合支付成功率、支付成本、用户体验、渠道状态等多种因素挑选出最优的一条渠道。具体如下
提高支付成功率通过选择最合适的渠道可以提高支付的成功率减少支付失败带来的用户流失。原因在于不同的渠道在其内部的风险偏好是不一样的同一个请求在A渠道会失败但在B渠道会成功。优化成本不同渠道的费用可能不同通过合理的路由可以降低支付成本。一些渠道还有阶梯收费需要通过分流不同的渠道保持整体成本最优。提升用户体验快速、稳定的支付体验能增强用户的满意度和忠诚度。用户如果经常在A渠道支付新的请求过来后仍然发给A渠道支付的成功率往往会更高。负载均衡将支付请求合理分配到不同的渠道避免某个渠道过载提升整体系统的稳定性。 举几个渠道路由应用的小场景
用户使用招行信用卡支付支付平台同时对接了网联和银联而网联和银联都支持招行信用卡那么就需要渠道路由挑选一个渠道。做实名认证平台对接了多个实名认证通道通过渠道路由挑选一个认证渠道。 由上面可以看到除了支付路由外还可能有信息类渠道路由比如实名认证类。
那退款有没有路由显示没有。在银联做的支付只能去银联退款。特殊的渠道也没有路由比如用户选择使用支付宝支付因为支付宝只能在支付宝做支付所以无需路由。
3. 渠道路由的设计原则
渠道路由作为支付系统的核心模块需要满足以下几个设计原则
灵活性路由规则需要支持动态调整。从业务的角度出发有些场景考虑成本有些场景考虑成功率都能方便支持。扩展性设计时要考虑到未来可能新增的支付渠道新增的决策因子这些都不能在代码中写死确保系统易于扩展。高可用性路由系统本身需要具备高可用性确保在高并发和故障情况下仍能稳定运行哪怕内部报错仍然能返回一条可用的渠道。性能在保证准确性的前提下路由决策需要快速不能成为支付流程的瓶颈。
4. 业界常见的几种路由形态
根据业务的需要通常有以下几种路由形态
硬编码取第一个。在项目上线初期为了赶进度同时渠道也不多常常在代码中写死取第一个先保证支付主流程能走通。基于规则的路由。通过预定义的规则提高灵活性和可扩展性。智能路由。利用机器学习和大数据分析根据历史数据和实时状态智能地选择最佳渠道。 5. 一种典型的基于规则的渠道路由设计
基于规则的渠道路由是最常见的设计。简单地说就是符合什么条件就执行什么样的分流逻辑。比如支付平台对接了网联和银联招行信用卡全部走网联工行信用卡500块以内的走网联500块以上的走银联。 5.1. 核心流程设计 说明
先进行唯一渠道判断如果只有一条渠道直接返回。判断规则如果规则没有命中那就从可用渠道中随机挑选一条。如果命中规则再根据规则中的分流逻辑进行分流。最后返回唯一的一条渠道。 5.2. 分流算法设计
如果一个请求既可以走银联也可以走网联还可以走直连有以下几种情况
没有命中任何一条规则随机选择一条渠道。有多条规则可以命中选择优先级最高的。命中的路由规则里银联和网联分别是40%和40%直连20%根据规则分流。如果当前银联挂了把银联按比例分配到网联和直连。 常见的分流算法是先把各渠道的分流比例换算成0-100区间的数字从大到小排序再根据用户ID取模、请求单号取模或生成一个随机数再看这个数落在哪个区间对应的渠道就是命中的渠道。 伪代码如下
int random 用户ID取模或请求单号取模或生成随机数;
for (int i 0; i 分流集合.size(); i) {if (random - 分流集合[i] 0) {return 命中的渠道;}
} 5.3. 路由规则配置模型 说明
路由规则用于规则引擎运算是否命中。核心字段包括规则ID、规则类型、规则表达式、优先级。实际实现时可根据各公司内部情况加字段。 规则ID用于分流配置做关联规则类型用于区分支付、实名认证等。规则表达式用于规则引擎运算优先级用于排序如果有多个规则都符合以优先级最高的为准
分流配置用于规则命中后如何进行分流。核心字段包括规则ID、渠道名、分流比例。 规则ID用于与路由规则进行关联。渠道名表示要分流去的渠道。分流比例说明有多少流量要分过去。
决策因子定义用于决策的条件。比如卡BIN卡品牌金额等。
5.4. 规则引擎选择
业务的规则引擎有很多比如大名鼎鼎的Drools等也可以选择自研各公司可以根据自己的技术生态来选择。
我个人推荐QlExpress。推荐理由简单实用。因为路由规则都非常简单没有过于复杂的运算不需要引入一些很重的规则引擎。
关于QlExpress的资料可参考官网介绍。
后面会有QlExpress的规则示例。
5.5. 决策子选择
决策因子就是路由规则匹配的条件一般有以下几种
金额比如小于某个金额或大于某个金额。卡品牌VISA、MASTER、UPAY等。发卡行CMB、ICBC等。卡类型借记卡、信用卡等。卡BIN某个号段的卡。业务场景字段各公司自定比如线下场景线上场景等。 5.6. 路由规则示例
规则的编写和规则引擎强相关。下面以QLExpress做个示例。实际落地时需要根据自己选择的规则引擎做改造。
假设支付平台对接了网联和银联要求
1招行信用卡全部走网联。
2工行信用卡500块以内不包含的40%走网联60%走银联。
3工行信用卡500块以上的走银联。 一些基本的变量定义
银行名称bankName
支付方式paymentMethod
卡类型cardType
金额变量amount
网联NUCC
银联UPAY
招行CMB
工行ICBC 定义规则
规则1paymentMethodcard cardTypecredit bankNameCMB
分流NUCC100 规则2paymentMethodcard cardTypecredit bankNameICBC and amount 500.00
分流NUCC40UPAY60 规则3paymentMethodcard cardTypecredit bankNameICBC and amount 500.00
分流UPAY100
5.7. 界面配置示例
下面只是示意一个简单的路由配置。如果是多层次的与和或关系需要产品经理做一些稍微复杂一点的界面。 说明
示例规则的业务诉求工行信用卡500块以内不包含的40%走网联60%走银联。后台保存的规则为“paymentMethodcard cardTypecredit bankNameICBC and amount 500.00”分流有2两条分别是“NUCC40”“UPAY60”。用于决策因子的元数据需要提前定义好包括这些字段的运算规则比如开户行就不能使用大于、等于。 5.8. 一些调优思路
用户最近支付成功记录优先提高成功率。比如用户可以用银联也可以使用网联如果5天内最近一次使用了银联是成功的那么为了成功率可以考虑再次路由到银联去。因为从渠道风控的角度已经成功的前提下再次成功的可能性更大余额不足除外。根据用户ID做分流而不是当前订单号做分流或者完全随机数。也就是使用伪随机。好处是同一个用户更大概率走到同一个渠道有利于提高成功率进而提升用户体验。适当使用缓存以提高运算速度。 6. 加入自动化开关的渠道路由
外部渠道服务经常不稳定通过自动化开关模块监听支付引擎或渠道网关的支付结果消息实时计算渠道的状态在渠道出现问题后自动关闭并推送给渠道路由。 说明
由自动化开关模块监听支付引擎的支付结果消息每秒计算一次渠道的状态在渠道出现问题后自动关闭并把结果推送给渠道路由。渠道关闭后再发起探测服务探测成功后灰度打开渠道。 下图是渠道自动化渠道开关的示意图。有多种技术手段可以实现基本原理就是基于滑动时间窗口算法来做具体落地可以使用时序数据库或者自己通过redis实现。 说明
初始是完成打开。指定时间内全部失败或指定时间内成功率低于阀值关闭渠道。指定时间后发起查询如果查询渠道失败持续关闭。如果查询成功就灰度打开如果灰度打开后的成功率不满足要求就继续关闭。如果灰度打开后的成功率满足要求就持续加大灰度直到完成打开。 后面会单独起一篇文章来讲自动化渠道开关的设计与实现。
7. 高阶的智能路由
一些有实力的公司通过算法和机器学习来做智能路由。所谓智能路由就是不仅是根据路由规则来计算路由而是根据当前的请求参数和渠道数据综合成功率、成本、用户使用习惯、地域等多因子计算出最优的一条渠道。
这个方案有几个难题不好解决。
首先是公司实力足够强。有人才来做算法且这些算法同学需要懂一点业务
其次是经验不好总结。比如成功率提升了2%是因为什么原因提升了有一些不可解释性。
最后业务无法直接操作调优。比如有些场景下业务希望保成功率有些场景下业务希望保较低的成本智能路由如何调参 我个人更倾向于【规则路由 离线数据分析】的组合。其中离线数据分析平台可以引入一些算法来分析各因子对成功率的影响供业务人员决策并调整路由规则。 说明
通过分析数据找到影响成功率成本的因子。更新路由规则。重复第1步。
8. 结束语
渠道路由在现代支付系统中扮演着至关重要的角色一个高效、灵活的渠道路由设计能够显著提升支付成功率优化成本并改善用户体验。通过本文的介绍希望能为大家在实际项目中设计和实现渠道路由提供一些有益的参考。
这是《百图解码支付系统设计与实现》专栏系列文章中的第25篇。欢迎和我一起深入解码支付系统的方方面面。 精选
《百图解码支付系统设计与实现》电子书_V20240525
专栏地址百图解码支付系统设计与实现领域相关部分支付行业黑话支付系统必知术语一网打尽跟着图走学支付在线支付系统设计的图解教程图解收单平台打造商户收款的高效之道图解结算平台准确高效给商户结款图解收银台支付系统承上启下的关键应用图解支付引擎资产流动的枢纽图解渠道网关不只是对接渠道的接口一
技术专题部分交易流水号的艺术掌握支付系统的业务ID生成指南揭密支付安全为什么你的交易无法被篡改金融密语揭秘支付系统的加解密艺术支付系统日志设计完全指南构建高效监控和问题排查体系的关键基石避免重复扣款分布式支付系统的幂等性原理与实践支付系统的心脏简洁而精妙的状态机设计与核心代码实现图解金融级密钥管理系统构建支付系统的安全基石一文搞懂支付安全用极简的工具画超帅的架构图资损防控搞定交易系统中金额处理规范