用户系统设计

基于用户画像的电商界面动态重构系统设计 《基于用户画像的电商界面动态重构系统》通过构建多维度用户画像(含RFM模型、品类偏好等),结合微服务架构与实时计算技术(Flink+Kafka),实现电商界面毫秒级动态适配。系统核心包括:1)用户标签体系(静态属性+动态行为)实时更新;2)前端动态渲染引擎基于规则配置自动调整组件属性;3)通过Elasticsearch混合推荐算法优化商品展示。实际应用显示,该方案使高价值用户ARPU值提升43.5%,详情页跳出率下降22.6%,支持日均亿级用户画像处理,具备高并发场景下的稳定性与业务扩展性。 阅读详情

用户系统,主要分为账号体系和用户信息两大类。账号体系包括,登陆验证、注册、第三方授权、以及权限管理。用户信息包括,用户地理位置、用户属性、用户设备信息、还有用户日志信息。本文会介绍用户系统的具体落地方案。

登陆验证

在一般项目账号体系中,一般会要求支持手机、邮箱、账号、QQ、微信、微博实现登陆。后面三种方式都是基于第三方授权后,完成的身份验证。手机、邮箱、账号则是相对传统的登录方式。

用户身份与登录的授权方式是独立开的,即用户uid和登录方式是一对多的关系。举例来说,用户A在使用微博授权登陆后,服务端鉴别身份信息为uid=123。用户A下次使用微信登陆,服务端鉴别身份同样为uid=123。不存在同一用户A拥有多个账号信息的现象。登陆授权表设计如下。

//用户授权表
CREATE TABLE `user_auth` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `uid` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '用户id',
  `identity_type` tinyint(4) unsigned NOT NULL DEFAULT '1' COMMENT '1手机号 2邮箱 3用户名 4qq 5微信 6腾讯微博 7新浪微博',
  `identifier` varchar(50) NOT NULL DEFAULT '' COMMENT '手机号 邮箱 用户名或第三方应用的唯一标识',
  `certificate` varchar(20) NOT NULL DEFAULT '' COMMENT '密码凭证(站内的保存密码,站外的不保存或保存token)',
  `create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '绑定时间',
  `update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新绑定时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `only` (`uid`,`identity_type`),
  KEY `idx_uid` (`uid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户授权表'

用户信息

用户信息,为便于扩展,分成两类。用户基础信息和用户拓展信息。基本信息用来保存用户的基本属性,年龄、性别、生日、头像、手机号码等。扩展信息,用来保存用户的设备信息或其他可扩展的内容。另外还有位置信息,这个可独立出来,也可合并到扩展信息中,根据自己的使用场景来定。

//用户基础信息
CREATE TABLE `user_base` (
  `uid` bigint(20) NOT NULL COMMENT '用户ID',
  `user_role` tinyint(2) unsigned NOT NULL DEFAULT '2' COMMENT '2正常用户 3禁言用户 4虚拟用户 5运营',
  `register_source` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '注册来源:1手机号 2邮箱 3用户名 4qq 5微信 6腾讯微博 7新浪微博',
  `user_name` varchar(32) NOT NULL DEFAULT '' COMMENT '用户账号,必须唯一',
  `nick_name` varchar(32) NOT NULL DEFAULT '' COMMENT '用户昵称',
  `gender` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '用户性别 0-female 1-male',
  `birthday` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '用户生日',
  `signature` varchar(255) NOT NULL DEFAULT '' COMMENT '用户个人签名',
  `mobile` varchar(16) NOT NULL DEFAULT '' COMMENT '手机号码(唯一)',
  `mobile_bind_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '手机号码绑定时间',
  `email` varchar(100) NOT NULL DEFAULT '' COMMENT '邮箱(唯一)',
  `email_bind_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '邮箱绑定时间',
  `face` varchar(255) NOT NULL DEFAULT '' COMMENT '头像',
  `face200` varchar(255) NOT NULL DEFAULT '' COMMENT '头像 200x200x80',
  `srcface` varchar(255) NOT NULL DEFAULT '' COMMENT '原图头像',
  `create_time` int(11) unsigned NOT NULL COMMENT '创建时间',
  `update_time` int(11) unsigned NOT NULL COMMENT '修改时间',
  `push_token` varchar(50) NOT NULL COMMENT '用户设备push_token',
  PRIMARY KEY (`uid`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户基础信息表'

//用户扩展信息
CREATE TABLE `user_extra` (
  `uid` bigint(20) NOT NULL COMMENT '用户 ID',
  `vendor` varchar(64) NOT NULL DEFAULT '' COMMENT '手机厂商:apple|htc|samsung,很少用',
  `client_name` varchar(50) NOT NULL DEFAULT '' COMMENT '客户端名称,如hjskang',
  `client_version` varchar(50) NOT NULL DEFAULT '' COMMENT '客户端版本号,如7.0.1',
  `os_name` varchar(16) NOT NULL DEFAULT '' COMMENT '设备号:android|ios',
  `os_version` varchar(16) NOT NULL DEFAULT '' COMMENT '系统版本号:2.2|2.3|4.0|5.1',
  `device_name` varchar(32) NOT NULL DEFAULT '' COMMENT '设备型号,如:iphone6s、u880、u8800',
  `device_id` varchar(128) NOT NULL DEFAULT '' COMMENT '设备ID',
  `idfa` varchar(50) NOT NULL DEFAULT '' COMMENT '苹果设备的IDFA',
  `idfv` varchar(50) NOT NULL DEFAULT '' COMMENT '苹果设备的IDFV',
  `market` varchar(20) NOT NULL DEFAULT '' COMMENT '来源',
  `create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间',
  `update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间',
  `extend1` varchar(100) NOT NULL DEFAULT '' COMMENT '扩展字段1',
  `extend2` varchar(100) NOT NULL DEFAULT '' COMMENT '扩展字段2',
  `extend3` varchar(100) NOT NULL DEFAULT '' COMMENT '扩展字段3',
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户额外信息表'

//用户位置信息
CREATE TABLE `user_location` (
  `uid` bigint(20) unsigned NOT NULL COMMENT '用户ID',
  `curr_nation` varchar(10) NOT NULL DEFAULT '' COMMENT '所在地国',
  `curr_province` varchar(10) NOT NULL DEFAULT '' COMMENT '所在地省',
  `curr_city` varchar(10) NOT NULL DEFAULT '' COMMENT '所在地市',
  `curr_district` varchar(20) NOT NULL DEFAULT '' COMMENT '所在地地区',
  `location` varchar(255) NOT NULL DEFAULT '' COMMENT '具体地址',
  `longitude` decimal(10,6) DEFAULT NULL COMMENT '经度',
  `latitude` decimal(10,6) DEFAULT NULL COMMENT '纬度',
  `update_time` int(11) unsigned DEFAULT '0' COMMENT '修改时间',
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户定位表'

用户日志信息

日志信息,用来保存用户注册或者登陆行为的。另外会有一些修改密码或者修改重要信息的日志记录。

//用户登陆日志
CREATE TABLE `user_login_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `uid` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '用户uid',
  `type` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '登录方式 第三方/邮箱/手机等',
  `command` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '操作类型 1登陆成功  2登出成功 3登录失败 4登出失败',
  `version` varchar(32) NOT NULL DEFAULT '1.0' COMMENT '客户端版本号',
  `client` varchar(20) NOT NULL DEFAULT 'dabaozha' COMMENT '客户端',
  `device_id` varchar(64) NOT NULL DEFAULT '' COMMENT '登录时设备号',
  `lastip` varchar(32) NOT NULL DEFAULT '' COMMENT '登录ip',
  `os` varchar(16) NOT NULL DEFAULT '' COMMENT '手机系统',
  `osver` varchar(32) NOT NULL DEFAULT '' COMMENT '系统版本',
  `text` varchar(200) NOT NULL DEFAULT '',
  `create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '操作时间',
  PRIMARY KEY (`id`),
  KEY `idx_uid_type_time` (`uid`,`type`,`create_time`) USING BTREE,
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='登陆日志表'

//用户注册日志
CREATE TABLE `user_register_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `uid` bigint(20) unsigned NOT NULL COMMENT '用户ID',
  `register_method` tinyint(2) unsigned NOT NULL COMMENT '注册方式1手机号 2邮箱 3用户名 4qq 5微信 6腾讯微博 7新浪微博',
  `register_time` int(11) NOT NULL COMMENT '注册时间',
  `register_ip` varchar(16) NOT NULL DEFAULT '' COMMENT '注册IP',
  `register_client` varchar(16) NOT NULL DEFAULT '' COMMENT '注册客户端',
  PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COMMENT='用户注册日志表'

//修改信息日志
CREATE TABLE `user_info_update` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `uid` bigint(20) unsigned NOT NULL COMMENT '用户ID',
  `attribute_name` varchar(30) NOT NULL COMMENT '属性名',
  `attribute_old_val` varchar(30) NOT NULL DEFAULT '' COMMENT '属性对应旧的值',
  `attribute_new_val` varchar(30) NOT NULL DEFAULT '' COMMENT '属性对应新的值',
  `update_time` int(11) NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COMMENT='用户注册日志表'

全局uid

建议不要使用表的主键作为用户ID,而是使用ID生成器(发号器)生成用户的唯一标示guid。当用户量急剧上升时,往往会采取分库分表的方法,然后通过将uid取余写到不同的表中。如果单纯的以某个表主键作为ID。会限制插入性能和增加业务复杂度,其次在分布式数据库中也无法保证ID唯一性。

全局ID生成,是有很多方案的。简单一点,可以采用redis自增属性,因为其具有原子性,在分布式坏境中,能保证ID的唯一性。另外还有其他的一些开源方案,可自行Google。

Access Token

与传统的Session相比,Access Token比较适合做RESTful Api开发。传统Web应用中,用户登陆后会写用户信息到cookie中,服务端通过Session就能得到用户的身份。

Access Token的是OAuth2.0中用户经过授权后,返回调用API的凭证。对于自己的应用来讲,用户在登录后,即返回access_token。在token有效期内可凭借此凭证,调用其他接口。对于access_token的刷新有两种方案,第一种每次用户重启app时,重新refresh。第二种,在调用周期内服务端发现access token可能过期时,返回新的token给客户端。

至于Access Token的生成,这个并没有规定,只要保证其唯一性即可。简单点,对用户uid和当前时间哈希得到新的Access Token,并设置过期时间。另外也可以采用JWT实现。

5、以用户为中心的系统设计:理解用户与优化设计 本文探讨了以用户为中心的系统设计方法,强调通过深入理解用户的思维、行为和社会交互来优化设计。文章分析了用户认知负担的减轻方式、社会因素对设计的影响,并介绍了如何利用认知架构(如ACT-R)模拟用户行为。同时,文章总结了当前系统设计中面临的挑战,如信息过载、社会动态的复杂性以及美学与功能的平衡等,并提供了设计实践中的思考路径和相关学习资源,助力设计更易用、更符合用户期望的系统。 阅读详情

相关推荐

2、以用户为中心的系统设计:从理解用户开始

本文探讨了以用户为中心的系统设计方法,强调深入理解用户的重要性。通过ABCS框架剖析用户的核心特征,包括人体测量学、行为、认知和社会因素。文章介绍了多种研究用户的方法,如任务分析、认知维度分析和实证评估,并讨论了错误研究的价值。此外,还概述了如何利用风险驱动模型优化系统设计。最终目标是设计出更符合用户需求、提升用户体验的系统。

t4y5u6i7o的博客 61

大型网站的用户登录系统是如何设计的?

最近开始研究系统设计,本想着提升能力用在年后面试上,现在面试机会还没有…算了,先跟大家分享一些学习心得。 这是我总结的关于用户登录系统时需要了解的内容及设计方案(带案例及练手项目),详情也可以移步《系统架构设计 System Design》 首先,单点登录是指在多系统应用群中登录一个系统时,无需从其他系统中得到授权即可做到再次登录的过程。他的解决方案的核心是cookie。是实现session的一种方式。 所以在了解登录系统之前,应该先去了解cookie,session,单点登录SOS。 一、se·ssion

九章算法的博客 3566

1、以用户为中心的系统设计:原理、方法与实践

本文深入探讨了以用户为中心的系统设计原理、方法与实践,强调了理解用户需求的重要性,并介绍了用户特征分析的ABCS框架,以及如何通过认知架构和任务分析模拟用户行为。文章还涵盖了错误分析、用户模型构建、风险驱动的设计模型等内容,旨在帮助设计人员打造更可用、安全和符合用户期望的系统。随着技术的不断发展,文章展望了未来设计面临的挑战与创新方向,为系统设计提供了全面的理论支持和实践指导。

t4y5u6i7o的博客 82

系统设计实例(一)百万级别用户系统

有状态Web层的问题在于同一客户端的每个请求必须路由到同一台服务器,我们将状态(例如用户会话数据)从Web层中移出,做法是将会话数据存储在持久性存储中,如关系型数据库或NoSQL数据库。用户的HTTP请求可以发送到任何Web服务器,这些服务器从共享数据存储中获取状态数据。它们从 CDN 获取以获得更好的性能。负载均衡器会将传入的流量均匀分配给在负载均衡集合中定义的Web服务器,用户直接连接负载均衡器的公共IP。在正常运行时,用户会根据地理位置通过geoDNS路由到最近的数据中心,其中在美国东部的流量占。

qq_42767993的博客 1298

50、系统设计中用户知识的组织与应用

本博客探讨了系统设计中用户知识的组织与应用,重点分析了人体测量学、行为、认知和社会(ABCS)四类用户特征,并介绍了统一认知理论在系统设计中的实际应用案例。同时,文章总结了用户模型的局限性与挑战,并展望了未来发展趋势,旨在帮助设计更加符合用户需求的人性化系统。

t4y5u6i7o的博客 66

多账号体系下用户系统的设计.txt

系统解析多账号体系下的系统设计

【案例】用户管理系统设计

UMS:UserManagementSystem(用户管理系统)DB:Database(数据库)API:ApplicationProgrammingInterface(应用程序编程接口)本文档详细描述了用户管理系统的设计思路和关键模块,为项目实施提供了指导。在实际开发过程中,需根据业务需求和技术发展不断调整和优化系统设计。

玖拾说架构 3399

用户登录系统(数据结构)

数据结构大型试验课程设计,用户登录系统模拟,基于二叉树操作。

用户权限系统设计方案

用户权限系统设计方案钟峰·2004年10月[版本:1.0.0]  摘要  本文介绍一个应用于企业应用通用的用户权限系统的设计框架,其设计思想与主要文档来源自 SunWu Software Studio 的 iSecurityManager® 产品。本指南适用于体系结构设计人员和开发人员。  目录 简介 用户与角色 动作定

johncools的博客 3284

用户登录系统的设计与实现

用户登录系统的设计与实现 教程与设计~ 系统功能与组成系统设机实现用户登录功能 系统调试

CHB-MIT波士顿儿童医院癫痫EEG脑电数据处理(一)

CHB-MIT癫痫EEG脑电数据处理CHB-MIT头皮脑电图数据介绍CHB-MIT头皮脑电图数据下载CHB-MIT头皮脑电图数据处理提取原始数据滤波(0.1~50hz)数据分块(时间窗口) CHB-MIT头皮脑电图数据介绍 该数据库收集自波士顿儿童医院,其中包括患有难治性癫痫发作的儿科患者的脑电图记录。停用抗癫痫药物后最多持续几天对受试者进行监测,以表征其癫痫发作并评估其对手术干预的候选资格。 从22位受试者中收集了23个病例的记录(5例男性,3至22岁; 17例女性,1.5至19岁)。 (案例chb21是

AI_DOG的博客 1万+

基于SpringCloudAlibaba的用户和认证系统设计

胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,Spring Cloud Alibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电子工业出版技术成长领路人称号,荣获2024年电子工业出版社博文视点20周年荣誉专家称号。

huxian1234的专栏 1710

SAP中成本估算没有找到工艺路线消息处理实例

在针对成品的标准成本核算处理过程中,系统中会经由设定好的策略来收集成品相关成本组成,最终计算出产成品的标准成本。关于成本组成,可以归纳为三个基本要素,料,工,费。即标准成本就是要知道,生产一件成品,需要消耗多少钱的原材料?消耗多少钱的人工?以及其它的间接消耗? 某日,接到CO同事的反馈,在用CK11N做产成品标准价格核算时,提示没有工艺路线确定,但该消息为绿灯,可以通过。基于业务上的谨慎,提出分析。 从提示可以看出问题与工艺路线有关。因为,成品工艺路线中设定有成品生产所耗工时,所以,在计算产成品标准

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 6278

电商系统设计之用户系统

电商大伙每天都在用,类似某猫,某狗等。 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初级工程师及中级工程师细看,大佬请随意 前言 设计以以下为工具讲起 PHP为开发语言 基于Laravel框架 MySQL为数据存储 电商的可变性与孩子的心情一样,变化极快,所以在设计之处就...

chengzi1291的博客 694

matlab tolx,Nelder-Mead算法matlab

Nelder-Mead算法适合变量数不是很多的方程求极值.原理:Nelder-Mead法是利用多面体来逐步逼近最佳点x*.设函数变量为n维,则在n维空间里多面体有(n+1)个顶点.设x1,x2,...,xn+1为多面体的顶点,且满足:f(x1)<=f(x2)<=...<=f(xn+1)Nelder-Mead法试着将多面体中最差的顶点xn+1(也就是函数的最大点)以新的最佳点替代,...

weixin_36485298的博客 1480

Duilib的简单使用(五、DuiDesigner/DuiEditor的下载编译)

一、前言 在Duilib的简单使用(一、duilib demo)中我们介绍了利用duilib简单的构造一个项目 在Duilib的简单使用(二、xml实现界面与业务分离)中我们介绍了XML在duilib中的使用 在Duilib的简单使用(三、界面逻辑交互)中我们已经知道如何简单的进行界面的交互 在Duilib的简单使用(四、换肤)中,我们提了一下Duilib强大的一键换肤功能。 通过之前的说明,我们知道duilib是通过xml来分离界面和业务逻辑的,但是xml如果不能预览,那每次敲一个再运行一下看看效果,这不

LyRics1996的博客 2888

atitit.userService 用户系统设计 v6 q413

atitit.userService 用户系统设计 v6 q413       1. 新特性1 2. Admin  login1 3. 用户注册登录2 3.1.   商家注册2 3.2. 3 3.3. 3 3.4. 4 3.5. 4 3.6. 4 3.7. 取回密码5 4. 商家体系5 4.1. 5 4.2. 5 4.3. 6

attilax的专栏 957

Java农产品质量溯源大数据管理系统源码

产品追溯基于“一物一码”从工厂生产环节至销售阶段,赋予产品唯一的数码,并关联产品名称、批号、生产时间等信息,建立包装关联关系,为后期产品的追溯、营销搭建信息基础。 农产品溯源,从原材料收购、生产、加工质检到包装运输、终端门店销售等环节追溯,可以保证产品质量,监管部门和消费者都可以查询产品信息。对生产进行层层把关、一旦发现问题、立即进行处理、提升产品质量。

xingchen优快云的博客 1805

游戏策划如何收集和分析用户反馈,调整系统设计以满足用户需求?

游戏策划通过收集、分析用户反馈并调整系统设计,能够有效地提升游戏的可玩性和玩家满意度。策划不仅需要依赖传统的玩家反馈渠道,还要通过数据分析、竞品分析和用户行为研究等方法,全面了解玩家需求。同时,系统设计的调整需要综合考虑游戏平衡、玩法机制、UI设计等多个方面,以确保每次调整都能带来更好的用户体验。通过持续的迭代和优化,策划能够在游戏生命周期内不断满足玩家期望,保持游戏的活力和吸引力。

小宝哥Code的专栏 4697

Dev C++调试程序方法详解

Dev C++调试程序方法详解

weixin_70641798的博客 1万+

rk3568 OpenHarmony4.0如何使用中文输入法

问题:rk3568开发板 OpenHarmony4.0release系统自带输入法kikaInput软件只有英文输入,不含中文输入,不方便。本文基于rk3568开发板 OpenHarmony4.0release移植了laval社区发布的开发者手机中的搜狗输入法(测试版),实现了中文输入,为OpenHarmony4.0release的其他开发板中文输入提供参考。

Devlin_的博客 2912
上一篇: Feed设计与实现
下一篇: PHP 7下安装Swoole和Yar、Yaf
gglinux
博客等级 码龄14年 68粉丝 64原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值