开发黑名单功能demo_中台实践:通用化黑名单平台

业务中台的价值主要体现在对通用化业务能力的沉淀、整合,通过对可复用业务流程和业务功能的设计,向不同业务方提供标准化且可扩展的服务能力。本文来聊一聊笔者工作过程中设计的通用化黑名单平台,通过将用户管控能力的下沉,为各业务团队提供一套通用的黑名单/白名单业务能力。

ec6ed0fd512086c69f8bf39eb5fb117a.png

业务定义

黑名单平台,泛指在业务流程当中,需要对特定用户进行管控的方式,通常会有黑名单、白名单两种用户类型。

业务场景

在风控识别、业务运营等流程当中,会涉及到对于某类用户进行“特殊对待”,比如恶意用户、高风险用户,在业务流程中可能会增加对用户的使用功能的限制,这类用户就属于黑名单用户。在不同的业务场景中,会基于不同规则去定义黑名单用户,并这种符合这类特种的用户进行统一化的管控。

当然还有一类特殊的用户群体,他们因为使用场景的特殊化也可能命中黑名单用户的规则。但是业务场景中又是允许这类用户存在的,那么这类用户就属于白名单用户,属于凌驾于黑名单规则之上的一类特殊用户群体。

业务问题

目前在现有中台架构下,不同业务模块都维护各自的黑名单体系,存在同一个业务场景的黑名单维护多套,或者同一套黑名单可以多个业务团队共用的问题。这就导致各团队开发既可能产生数据冗余,重复开发资源浪费的问题。

基于当前的问题,通过搭建中台黑名单平台,由各业务团队介入黑名单平台,针对各业务场景维护统一黑名单,可以由不同业务团队共享黑名单数据资源进行业务使用。

业务边界

既然做通用化,那么黑名单平台尽可能不做具备业务属性的逻辑,即通用户平台负责提供黑名单/白名单数据的统一使用服务,也就是针对数据的增、删、改、查能力。同时,为了保证各业务使用方可以实时获取数据,平台提供一套消息广播机制,可以让业务使用方可以快速获取数据的更新状态,即时针对不同状态做出业务响应。

业务架构

基于上面提到的业务场景、业务边界,设计了业务架构模式如下:

6ce4703c32c545afb5ff2419f6e3e696.png

业务设计

(1)通用化平台由业务方接入,针对不同业务场景和业务规则,由业务方(如上图中业务方A、B)定义什么是黑名单用户、什么是白名单用户;由通用化平台提供黑名单数据的统一服务,这个服务包含增删改查能力。

(2)业务方(如上图中业务方A、B)可以通过通用户平台提供的前端可视化页面,通过给不同业务方配置不同权限体系,支持业务方进行数据的增删改查。同时也支持基于系统调用的API接口方式,进行数据的使用。

(3)为保证数据更新后的即时响应,在数据更新后,如数据的新增、删除,通用化平台通过消息广播机制,向业务使用方(如上图中业务方C、D)进行广播,如果业务方关系数据更新消息,可基于业务场景做出相应的业务动作,保证数据更新与业务的同步性。

中台化设计的关键

(1)统一化

在设计数据的使用方式方面,做了尽可能的统一化设计。在设计底层数据接口方面,针对增删改查的数据接口,先对尽可能全的业务场景进行梳理,针对不同颗粒度的业务进行规划,保证数据接口服务的统一性,后续各业务团队接口,都是统一的接入流程和接口服务。

(2)个性化

针对不同业务场景,数据的表现形式终归会有不同的地方,除了对整个业务流程中没有异议的数据内容进行标准化定义外,为满足不同团队的业务需求,在数据存储方面,数据结构中增加了可扩展的json字段。这个字段的数据内容由各业务方自助定义数据的业务含义,在数据查询时基于各业务的团队的场景进行解析后使用,既保证了各业务团队数据使用的个性化需求,由保证了中台通用化模块的通用能力。

(3)扩展性

对于黑名单/白名单数据存储,数据存在多维度属性,通过数据业务类型分类进行区分,例如用户维度类型,可通过枚举区分身份证号、会员卡号、手机号等类型,字段的类型设计相对兼容,在后续数据类型扩展上,可以做到减少底层逻辑的重新开发带来的时间、资源成本。

(4)如何做到上述3点呢?

关键是要对业务有充分的了解,这样才能更好的把握统一化和个性化的平衡。例如,针对于用户维度的黑名单设计,要对当前业务场景中标识用户的方式有相对全面的了解:手机号、会员卡号、微信账号、支付账号等等,只有对实际业务的了解,才能设计符合业务方需求的功能。

综上

所有的中台化产品设计都是在对业务充分了解的基础上,将统一化、个性化、扩展性进行设计与权衡,当然在方案落地过程中不可避免的要做出各种各样的妥协与让步,但是作为业务中台设计者,要坚守产品设计的边界与底线,这才是中台产品存在的意义与价值。

#专栏作家#

记小忆,公众号:PM龙门阵,人人都是产品经理专栏作家,OTA中后台产品经理。

本文原创发布于人人都是产品经理,未经许可,禁止转载

题图来自 Unsplash,基于 CC0 协议

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java注解教程 pdf_Java注解详解

在使用SpringBoot作为Web敏捷开发的框架之后,SpringBoot除了自动装配配置的便捷之外,在很多时候需要基于注解来开发。注解不仅增加了代码的可读性,还增加了开发的速度。这篇文章主要讲述Java 注解。元注解元注解用于注解其他注解的。Java 5.0…

●BZOJ 1855 [Scoi2010]股票交易

题链: http://www.lydsy.com/JudgeOnline/problem.php?id1855 题解: DP,单调队列优化。(好久没做 DP题,居然还意外地想出来了) 定义 dp[i][k] 表示前 i天,手上还有 k股的最大收益。(注意这个定…

java无权图求最短路径_求有权图和无权图的最短路径

无权图的最短路径思路:无权图的最短路径也就是要求两点之间最少几跳可达,那么我们可以这样,用广度遍历,从起点开始一层层遍历,如果第一次遍历到终点,那么肯定是最短路径。public static void findPath(int …

无限级分类及生成json数据

第一步,先去数据库查询类别数据,然后交给生成json数据的函数处理,代码如下: 1 /*生成类别JSON数据*/ 2 public function wirteJson(){ 3 $dataInfo \think\Db::query("select id as v,name as n,pid from think_pro_category"); 4 $data $this…

python游戏图像识别_利用python做图像识别

Python验证码识别处理实例(转)一、准备工作与代码实例1、PIL、pytesser、tesseract(1)安装PIL:下载地址:http://www.pythonware.com/products/pil/(CSDN下载)下载后是一个exe,直接双击安装,它会自动安装到C:\Python27\Lib\site-pa…

Java旅游动吧项目讲解_springboot动吧项目

架构分析页面流程业务分析:客户端向服务端发送一个请求,发向了Tomcat,如果Tomcat只有一个线程是不可能处理多个请求的,所以就需要一个多个线程的池资源,然后线程用I/O读取请求中的数据,然后服务器从http协议…

java并发-内存模型与volatile

JMM的关键技术点都是围绕着多线程的原子性、可见性和有序性来建立的。因此,我们首先必须了解这些概念 1,原子性 原子性是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰&#xf…

python glob函数_python glob 模块 map函数

昨晚有了点小想法,想写个小脚本。用到了 glob 模块 和 map 函数 觉得他们配合起来和不错的。#coding:utf8import globprint "glob.golb 方法返回 " , glob.glob(r"/var/log/*.log")a glob.iglob(r"/var/log/*.log")print &qu…

数据分析师免费课程网址

分享一些免费的课程以下课程免费,讲师都是领域的专家,需要提前报名,请注意开班的时间。Coursera.org:统计学。Coursera.org:机器学习。Coursera.org:数据分析的计算方法。Coursera.org:大数据。…

微信机器人红包java_微信机器人_奇迹蛋_java实现

【实例简介】参考了别人的一些微信开发方法,自己实现了一个简单的微信机器人,部署在百度云上,能够点歌,查询天气,调教对话。可关注微信公众号:奇迹蛋。实现说明:http://blog.csdn.net/elcarim/a…

python增量赋值是什么意思_关于python中的增量赋值的理解

增量赋值运算符 和 * 的表现取决于它们的第一个操作对象 操作首先会尝试调用对象的 __ iadd__方法,如果没有该方法,那么尝试调用__add__方法,所以 与 的区别实质是__iadd__ 与 __add__的区别,同理,* 操作首先会尝试调…

Notepad++使用教程

Notepad 快捷键 大全CtrlC 复制CtrlX 剪切CtrlV 粘贴CtrlZ 撤消CtrlY 恢复CtrlA 全选CtrlF 键查找对话框启动CtrlH 查找/替换对话框CtrlD 复制并粘贴当行CtrlL 删除当前行CtrlT 当行向上移动一行F3 查找下一个ShiftF3 查找上一个CtrlShiftF 组合在文件中查找CtrlF3 查找&#x…

安卓手机刷软路由_华为路由AX3 Pro上手测评:用过最方便的路由器,没有之一...

都说"科技改变生活",但我总觉着,现如今的人们似乎被数码产品"奴役"了。比如说:之前买过某品牌路由器,设置过程之繁琐,直接让当时是数码小白的我崩溃了。自打那之后,我选购数码产品的标…

ECharts.js学习(二)动态数据绑定

Echarts 数据绑定 简单的统计表已经可以生成,不过之前图标数据都是直接写在参数里面的,而实际使用中,我们的数据一般都是异步读取的。EChart.js对于数据异步读取这块提供了异步加载的方法。 绑定多组数据 很多时候需要展示的数据不单单是一组…

黑苹果2k屏_一加手机屏幕新特性:120Hz、2K+ OLED、10bit

在发布了旗下的首款概念手机Concept One后,再次有消息显示一加将在1月13日也就是今天举办“屏幕技术沟通会”。而在发布会正式到来前,一加CEO刘作虎则在微博表示,一加已经完成了120Hz屏幕的研发。沟通会上还会聊一聊一加90Hz 流体屏引领行业后…

popupmenu java_Java基于JPopupMenu实现系统托盘的弹出菜单,解决PopupMenu弹出菜单中文乱码...

本人萌新,利用业余时间学习Java。最近在写一个GUI程序的时候遇到一个问题,系统托盘创建弹出菜单中文乱码,网上搜索很多内容都没有找到解决方案,现将个人解决方案分享给大家,希望有所帮助一、PopupMenu存在的问题标准文…

QT获取主机名称

//获取主机名 QString localHost QHostInfo::localHostName(); 转载于:https://www.cnblogs.com/amwuau/p/8021758.html

Java哈利波特死亡圣器下_如果编程语言是《哈利波特》中的人物

如果编程语言是《哈利波特》中的人物,本文是作者的一些观点,如果你有不同的看法,欢迎在留言中告诉我们。C语言每个人都在说,C语言已经死了至少十年以上了。人们对它嗤之以鼻。当然它也曾不可一世,肆虐横行,…

序列每天从0开始_【算法打卡】分割数组为连续子序列

难度:中等题目:给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个长度为 3 的子序列,其中每个子序列都由连续整数组成。如果可以完成上述分割,则返回 true ;否则&#xff0c…

linux中 /dev/null命令

/dev/null :代表空设备文件 > :代表重定向到哪里,例如:echo "123" > /home/123.txt1 :表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/d…