玩转用户身份权益——详解闲鱼身份权益体系的实现 -阿里云开发者社区

开发者社区> 闲鱼技术> 正文

玩转用户身份权益——详解闲鱼身份权益体系的实现

简介: 本文以闲鱼的身份权益体系实现为例,介绍了如何对常见的用户身份权益体系进行概念定义、模块拆解、技术实现。
+关注继续查看

背景

用户身份权益体系(或会员权益体系)几乎是各大成熟app的标配,用户身份权益体系通过对用户赋予身份(会员、等级)的方式,提供不同级别的产品权限给不同的用户,是用户活跃度运营以及商业化的重要工具。同时,用户身份也是用于区分用户影响力、优质程度等关键能力的重要标记(如微博的大v),对于不论是电商类还是社交类产品,都有着非常关键的作用。
本文将从技术实现的视角,以闲鱼app的用户身份权益体系为例,介绍如何设计一个具有良好扩展性的用户身份权益体系。

问题与挑战

  • 【身份权益的管理】在常见身份权益管理场景中,用户可以同时获得多个不同的身份、多个身份可能持有重叠的权益、相同的权益可能存在内容上的差异(如数量大小)、权益重复时需要处理权益的合并策略。如何对身份、权益的概念进行抽象设计,是整个系统最核心需要解决的问题。
  • 【身份的透出】当用户获得了一个身份,不论是大v标记还是会员等级,都希望在app上进行显示,以传递身份特有的心智,不同身份可能有同样的标签(例:闲鱼的领域卖家、会玩达人都显示v标),同一身份可能有不同的个性化标签内容(例:某某领域达人),如何统一管理用户身份在app全链路的透出,也是身份权益体系需要解决的一个问题。
  • 【身份的赋予】不同的产品中,身份的赋予方式各不相同,常见的有付费购买、积分升级、认证、运营加白等等,在赋予过程中还会加入丰富的升级路线(等级体系等),同一产品中多见的会同时具备多种赋予的方式。如何支持多元的身份赋予途径,以及如何支持不同身份的扩展,也是技术上需要解决的一个重要问题。

本文将以闲鱼的身份权益体系为例,针对身份权益体系中的身份权益的定义、管理,身份的透出进行了详细的介绍,同时以闲鱼的用户认证流程为例,介绍了如何解耦身份管理与身份赋予两个过程,并在身份赋予过程中做到身份的可扩展。

技术实现

概念梳理

image.png

  • 身份是指,用户满足某些准入条件后,被授予的一个身份标记。一个身份在技术实现上,是一个和用户关联的记录/系统标签。
  • 权益是指,用户因为具有某个身份,而获得的在现有的一些业务中的一些特权。我们用一个键值对表示一条权益,key表示的是权益,value表示的是权益的值,这个值可以是一个数字、boolean、一个带占位符的文本等,权益的提供方根据这个权益的值提供具体的权益。
  • 透标标签是指,根据某个身份外显权益而获得的一个基于用户的可展示的描述符,这个描述符可以在客户端和前端页面进行渲染,从而实现身份的外显。一个标签的描述可以是:一个文本、一个图片url、一组客户端可以识别的元素等,客户端根据这个标签的内容进行渲染。
  • 认证是指,用户因希望获得某个身份而发起的一个认证申请,认证后会获得一个身份。一个认证在技术实现上是一条认证记录,包括了认证的状态、这次认证所关联的信息(包括提交的表单,审核的结果等)。

注:认证是获得身份方式的一种,本文以认证流程为例,介绍如何实现一个身份赋予的过程。值得注意的是,在我们的设计中,身份的透出,作为一种权益进行设计。

系统拆分

image.png
我们对应的将系统拆分为三个独立的模块:身份权益服务、用户标签服务、认证服务(以认证服务为代表的身份赋予模块)。
对于三个系统的功能和边界定义如下:

  • 【身份权益服务】:管理用户的身份以及身份-权益的关系,运营可以通过系统配置身份对应的权益,系统能够对用户的权益进行计算、合并,权益提供方可以通过身份权益服务查询用户的权益。
  • 【用户标签服务】:根据用户的权益、个性化数据以及其他外部服务等,按规则向全链路下发用户的透标标签。全链路的各个场景可以用不同规则查询当前场景可渲染的用户标签,标签系统对不同的规则可以有差异化的定制,做到不同场景按需订阅、扩展。
  • 【认证服务】:管理用户的认证流程,用户通过认证服务发起申请,系统对用户的准入和表单进行校验,将表单转发给运营审核,并对审核结果进行处理。认证通过后,通过身份权益服务接口对用户进行身份添加。同理,不论是积分、白名单还是用户等级体系,均可以以这种方式进行接入。

基于上述的设计,用户通过认证服务获得身份,权益提供方根据身份权益服务查询相应的权益提供特权,用户标签服务对其中的透标权益进行支持,在app侧渲染用户的身份,从而实现身份外显,完整的满足了用户身份认证-透标的能力。
下面展开介绍各个系统分别是如何实现的。

【身份权益服务】实现

image.png
【身份权益服务】基于身份权益配置和用户标签系统(集团中台的用户标签服务)实现。我们将身份权益的配置,写入到身份权益配置表,编辑完成后,通过配置中心,发布到各个服务器的内存中。
另一方面,用户认证流程、白名单等服务通过身份服务接口将身份写入到UIC的标签系统中,标签系统是集团实现的用户-标签的管理系统,可以基于缓存快速查询用户是否具有某个标签,一个身份由一个标签表示(没有标签系统的话也可以用数据库+缓存的方式实现)。
在权益提供方查询用户权益时,我们快速从用户标签系统中读取用户的全部身份标,根据内存中身份-权益的配置,通过一个身份-权益计算函数(输入身份标和权益配置schema,输出权益),对权益进行合并、择优去重后(不同权益的合并方式按权益配置,如逻辑或、最大值、字符连接等),将计算结果(权益)返回给权益提供方。

【用户标签服务】实现

image.png
【用户标签服务】实现了用户维度的标签透出。服务可以基于身份权益服务、用户个性化数据、外部服务等,返回用户需要透出的标签,标签的描述包括但不限于图片url,文本,复杂结构等。服务支持通过规则id进行定制,不同的规则id,可以定制需要透出的标签的组合,各个场景根据需要展示的标签,选用合适的规则id进行订阅,在原规则id不适用的情况下,可以定义新的规则id进行支持。

【认证服务】实现

image.png
【认证服务】定义了一套标准的认证流程,统一对认证的状态进行管理,同时通过扩展接口,让不同认证流程的业务对扩展接口进行实现,从而实现流程标准化,内容可扩展。
认证服务的整体流程分为认证查询、表单提交、审核结果处理三个阶段,在认证流程中,系统维护了未认证、审核中、审核未通过、审核通过四个不同的状态,不同的认证流程具有相同的状态流转,由认证服务统一维护。
在认证查询中,不同的认证流程具有不同的准入条件;在表单提交过程中,不同的认证流程具有不同的表单字段和合法性要求;在审核结果中,针对审核结果不同认证流程有不同的处理方式。因此,认证流程提供了三个扩展接口,第一个扩展接口用于实现获取用户的准入条件判定和表单渲染;第二个扩展接口用于用户表单的校验,同时生成审核用的数据表单;第三个扩展接口用于对审核结果进行处理。于是在我们的认证服务上,只需要实现上述三个扩展接口,就能完成一套新的认证流程的接入。

结语

本文以闲鱼的身份权益体系实现为例,介绍了如何对身份权益体系进行概念定义、模块拆解、技术实现,同时以闲鱼的身份认证流程为例介绍了如何实现、接入不同的身份赋予渠道,希望对大家系统中的身份权益设计起到一些参考作用。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
6935 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4504 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
7772 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
5466 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
9435 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
2147 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
16851 0
+关注
闲鱼技术
阿里巴巴旗下,闲鱼技术团队官方账号 简历投递:guicai.gxy@alibaba-inc.com
251
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载