有哪些方面可以做拓展的?
性能上的拓展 支持更多的用户 有更快的响应速度
功能上的拓展 支持群聊 支持在线状态的显示。

对表格的扩充 以及当表的贵吗足够大以至于需要拆分表格 应该怎么样去拆?
Message表是储存在NoSQL里面 其自带Scale属性 Tread表格按照User_id进行sharding

how to speed up?(因为我们每隔十秒才主动刷新一次消息 聊天体验太差)
我们需要引入一个新的service–push service. push service 的目标是提供socket连接服务 可用与client 保持TCP长连接。这个长连接使得 当有人发送消息之后 message service收到消息 通过Push service把消息发出去 如果一个用户长期不活跃 可以断开链接 释放掉网络端口。
那么断开连接之后 如何收到新消息?打开APP的时候主动PULL。
图解流程如下:
Scale step of system design of whatsApp_nosql

how to support a large group chat?
为什么large group chat是我们要考虑的问题呢?
Scale step of system design of whatsApp_服务器_02
为了解决这个问题:
采取了订阅和广播的信息发送方式,专业的一些说 叫 引入 Channel service解决问题
Scale step of system design of whatsApp_服务器_03

how to check/update online status?
这个展示在线状态包含两个部分:
服务器需要知道谁在线不在线 用户需要知道我的哪些好友在线
这些可以通过Push或者Pull来实现
通过Push来实现:
这两个部分一方面需要用户告诉服务器我开了/或者我走了
Scale step of system design of whatsApp_发送消息_04
另一方面服务器需要告诉我的我来了/我走了
Scale step of system design of whatsApp_it技术_05
通过Pull来实现:
Scale step of system design of whatsApp_nosql_06

如何限制某段时间的访问次数,比如说一个小时内不能重设超过五次密码?
详见我的博客《System design of rate limiter》