多平台统一用户系统设计

0x00 引言

现在越来越多的产品都实现了在不同平台上的功能支持。比如原来的 App 为了微信上的流量,开发了小程序。原来只做微信公众号的,后来为了更好的体验开发了 App 等等。这里面临用户账号迁移的问题。对于用户来讲,希望原来一个平台上的账号,在另外一个平台也能直接使用,而不需要重新注册。对于企业来讲,原来平台上的用户使用了新的平台,也希望能够识别是同一用户,对用户的分析可以更精确,从而带来一致的体验。

但是很多系统在开发初期没有做出有足够扩展的设计,在后续业务扩大的时候又急急忙忙,导致多平台统一用户的目标很难实现,造成很多意想不到的问题。

这篇文章里面我将说明一个自己的方案。从功能、数据表设计、接口设计三部分展开。能够在系统构建之初就为未来的需求提供足够扩展的可能。

0x01 多平台统一用户相关功能

系统中用户部分最基础的功能,包括注册,登录,绑定/解绑。下图中涵盖了市面上能看到几乎所有方式。

由于微信实在太过强大,基于微信平台上的子类型也需要考虑。

多平台统一用户注册/登录功能

0x02 数据库表结构设计

表结构的核心在于用户主表和平台用户表。用户主表对内,主要用于系统内部使用。平台用户表,则作为第三方平台与系统内部打交道的通道。系统的复杂度就只在于这两张表之间的逻辑了。

注意:用户表设计未考虑到足够的安全策略。正确的方式是需要对密码进行加盐Hash保护

表结构设计

0x03 相关请求接口

图示中的接口,在设计时考虑了两点:

  1. 接口返回用户信息时以有时效的 token 作为用户标识。可以在一定程度上实现接口的保护。
  2. 其他需要用户信息的接口,通过 token 参数在服务端获取到真正的用户ID,再进行操作。

相关请求接口

0x04 最后

以上就是多平台统一用户系统的设计要点。对于系统的快速起步开发已经足够了,也不需要担心未来扩展平台的问题。

打好基础,以后事半功倍。

获取思维导读源文件,请加QQ群:429039234

长按识别二维码

1.2k 声望
89 粉丝
0 条评论
推荐阅读
入行 10 年总结,作为开发必须知道的 Maven 实用技巧
Maven 是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具,简单的说就是用来管理项目所需要的依赖且管理项目构建的工具。

fatfoo12阅读 5.8k

【十亿级高并发系统设计】如何设计一套高并发系统?
我们知道,高并发代表着大流量,高并发系统设计的魅力就在于我们能够凭借自己的聪明才智设计巧妙的方案,从而抵抗巨大流量的冲击,带给用户更好的使用体验。这些方案好似能操纵流量,让流量更加平稳的被系统中的...

椒太郎1阅读 669

封面图
如何将微前端项目部署在同一台服务器同一个端口下
因为线上部署主应用时需要用到子应用的线上可访问地址,因此部署顺序应该是先部署子应用,保证子应用能够线上可访问后,再将子应用的线上可访问地址配置到主应用,最后再将主应用部署到线上环境。

京东云开发者阅读 612

封面图
系统设计:快速粗略计算系统容量和性能需求
"Back-of-the-envelope estimation",直译是信封背面估算的意思,"Back-of-the-envelope estimation"是一个短语,用于描述使用简化的假设和基本原理进行的粗略或快速计算,通常在信封背面或任何可用的纸上进行。...

气势凌人的鞭炮阅读 506

如何设计一个速率限制器(令牌桶/漏桶/固定窗口/滑动窗口)
在网络系统中,速率限制器被用来控制客户端或服务发送的流量的速率。在 HTTP 领域,速率限制器限制了在指定周期内允许发送的客户端请求的数量。如果 API 请求的数量超过了速率限制器定义的阈值,所有超出的调用都...

气势凌人的鞭炮阅读 501

系统设计面试的框架
你刚刚得到了梦寐以求的公司现场面试机会。招聘协调员给你发送了当天的日程安排。扫视这个列表,你对此感到非常满意,直到你的目光落在这个面试环节上——系统设计面试。

气势凌人的鞭炮阅读 486

一种通用的业务监控触发方案设计 | 京东云技术团队
业务监控是指通过技术手段监控业务代码执行的最终结果或者状态是否符合预期,实现业务监控主要分成两步:一、在业务系统中选择节点发送消息触发业务监控;二、系统在接收到mq消息或者定时任务调度时,根据消息中...

京东云开发者1阅读 221

封面图
1.2k 声望
89 粉丝
宣传栏