大数据&云计算|大数据下的用户中心如何设计
用户中心 , 几乎是所有互联网公司 , 必备的子系统 。 随着数据量不断增加 , 吞吐量不断增大 , 用户中心的架构 , 该如何演进呢 。
什么是用户中心业务?
用户中心是一个通用业务 , 主要提供用户注册、登录、信息查询与修改的服务 。
用户中心的数据结构是怎么样的?
用户中心的核心数据结构为:
User(uid, login_name, passwd, sex, age, nickname, …)
其中:
(1)uid为用户ID , 为主键;
(2)login_name, passwd, sex 等是用户属性;
其系统架构又是怎么样的呢?
在业务初期 , 单库单表 , 配合用户中心微服务 , 就能满足绝大部分业务需求 , 其典型的架构为:
本文插图
(1)user-center:用户中心服务 , 对调用者提供友好的RPC接口;
(2)user-db:对用户进行数据存储;
当数据量越来越大 , 例如达到1亿注册量时 , 会出现什么问题呢?
随着数据量越来越大 , 单库无法承载所有的数据 , 此时需要对数据库进行水平切分 。
常见的水平切分算法有“范围法”和“哈希法” 。
水平切分 , 什么是范围法?
范围法 , 以用户中心的业务主键uid为划分依据 , 采用区间的方式 , 将数据水平切分到两个数据库实例上去:
本文插图
(1)user-db1:存储0到1千万的uid数据;
(2)user-db2:存储1千万到2千万的uid数据;
【大数据&云计算|大数据下的用户中心如何设计】范围法有什么优点?
(1)切分策略简单 , 根据uid , 按照范围 , user-center很快能够定位到数据在哪个库上;
(2)扩容简单 , 如果容量不够 , 只要增加user-db3 , 拓展2千万到3千万的uid即可;
范围法有什么缺点?
(1)uid必须要满足递增的特性;
(2)数据量不均 , 新增的user-db3 , 在初期的数据会比较少;
(3)请求量不均 , 一般来说 , 新注册的用户活跃度会比较高 , 故user-db2往往会比user-db1负载要高 , 导致服务器利用率不平衡;
画外音:数据库层面的负载均衡 , 既要考虑数据量的均衡 , 又要考虑负载的均衡 。
水平切分 , 什么是哈希法?
哈希法 , 也是以用户中心的业务主键uid为划分依据 , 采用哈希的方式 , 将数据水平切分到两个数据库实例上去:
本文插图
(1)user-db1:存储奇数的uid数据;
(2)user-db2:存储偶数的uid数据;
哈希法有什么优点?
(1)切分策略简单 , 根据uid , 按照hash , user-center很快能够定位到数据在哪个库上;
(2)数据量均衡 , 只要uid是随机的 , 数据在各个库上的分布一定是均衡的;
(3)请求量均衡 , 只要uid是随机的 , 负载在各个库上的分布一定是均衡的;
画外音:如果采用分布式id生成器 , id的生成 , 一般都是随机的 。
哈希法有什么缺点?
(1)扩容麻烦 , 如果容量不够 , 要增加一个库 , 重新hash可能会导致数据迁移;
用户中心架构 , 实施了水平切分之后 , 会带来什么新的问题呢?
使用uid来进行水平切分之后 , 对于uid属性上的查询 , 可以直接路由到库 , 假设访问uid=124的数据 , 取模后能够直接定位db-user1:
推荐阅读
- 智能穿戴|漫步者DreamPods体验:外观精致佩戴舒适降噪是最大惊喜
- 数据|智领云荣登“中国大数据企业50强” | 2020大数据产业生态大会盛大召开
- 大数据|华云数据荣获中国大数据50强、2020数字赋能先锋企业30强,入选大数据产业发展白皮书及百佳案例
- 驱动中国|即信Fintech智研中心:银行践行社交化运营的要诀--渠道通 交互通 数据通
- 行业互联网|华云数据荣获中国大数据50强、2020数字赋能先锋企业30强,入选大数据产业发展白皮书及百佳案例
- 技术编程|数据结构001之简介
- 行业互联网|爱数亮相第八届医药健康论坛,以数据赋能药企数字化
- 技术编程|边缘云计算到底是什么?
- 行业互联网|智领云荣登“中国大数据企业50强”| 大数据产业生态大会
- 互联网|图匠数据CTO梁柱锦:利用AI与大数据提升线下零售管理能力 | 公开课预告