7.聊天室设计
目的
设计qq聊天,discord
场景
需要
- 发送消息
 - 注册登录
 - 通讯录
 
其他功能
- 限制登录状态
 - 用户在线状态
 
qps计算
微信越活10亿,每日发送450B
qps最大是520k
一条记录是30bytes,那就是1.3T一天

服务
- 信息存放
 - 实时推送消息(fcm)
 
存储

出现无法进行群聊存放,而且查询where太多了
这边是使用一个thread作为一个会话,thread就相当于你与每一个人的会话

只需要查询,thread——id就可以确定会话,然后会话id联系一条msg


添加未读取的消息数量
这样就需要查分thread表格
个人设置这个会话的属性+为读取数量

问题
如何查询threadid

1  | SELECT thread_id FROM threads WHERE user_ids = SORT(ARRAY[user_id_A, user_id_B]) AND thread_type = 'private'  | 
直接进行排序后,然后查询uid就可以得到,使用haxi加快

存储
使用sql来存放

推送

自救就是poll或者pull

web接受消息
- 打开一个推送服务,推送服务自己推送
 

支持群聊
群聊500+,490死人,那就是浪费了490push机会
应该使用channel方式,上线才进行检验属于那个channel,执法一次消息

单机登录’
使用redis,查找session,看是不是存在web

All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.


