10亿用户,同时在线用户1亿数据服务技术方案
目录
1. 一般方案
1.1. 用户数据构成
1) 用户名
具有唯一性,由用户在注册时由用户自己确定,如各类邮箱用户名; 或者由系统分配,如QQ号。
2) 用户ID
也具有唯一性,用户在注册时由系统分配。
3) 用户属性
用来描述用户的,如性别、年龄等。
4) 用户行为
对用户活动的记录,如最近一个月的淘宝消费记录。
1.2. 交互逻辑
1.3. 方案特点
一般方案的有点是实现简单,效率还不错,内存性价比不高。
2. 新方案
2.1. 数据组织
数据组织的目的是为了更高效更经济的提供数据服务。可以达到O(1)查找,和无锁化查询更新。
数据的组织采取经典的“image+editlog(也可叫binlog)”。离线处理放在每天访问量最小的时间段。
2.2. 交互逻辑
显然,取得用户ID后的后续操作都是O(1),这样具备极佳的性能。基于数组,还可以实现无锁化查询。
2.3. 大并发
按用户ID垂直切片,如切分成100片。20台机器时,每台加载5片;共10台机器时,每台加载10片。如此多集群服务,即可实现上亿同时在线服务。
2.4. 核心思想
数组化是新方案的核心。基于数组,不但提供了最快的查询,而且不浪费内存,“image+editlog”使得数据更新高效简单,且不需要中断服务。
x