第二轮迭代--张燕涛
服务端设计学习
- 服务端主要设计两个模块,http 服务模块 以及 websocket 模块
http 服务模块主要用于处理用户信息,以及辅助 websocket 通信(例如 聊天图片)
websocket 模块主要用于通信,通过 websocket 服务作为用户之间转接的接口,实现消息传递
websocket 提供的服务的特点主要在于即时性,http 提供接口服务
- 服务端使用 mysql 以及 redis 数据库 作为数据来源,为 http 和websocket 模块提供服务
针对 http 服务,目前只涉及 mysql 数据库,只对 mysql 数据库进行操作,以及文件服务
针对 websocket 服务,既要使用 msyql 数据库 为用户提供里离线消息转储,也要使用 redis 数据库为用户信息加一层缓存,避免 websocket 服务进程多次操作 Mysql 数据库。
用户上线时,首先会根据 Mysql 数据库得到用户的好友,群聊信息,缓存到 redis 中,在用户在线过程中,只操作 redis 数据库,当用户下线时,处理 redis 数据库中关于用户的信息,同步到 Mysql 数据库即可
- 目前实现 http 服务,为客户端提供接口
- 数据库表格设计完成
- websocket 提供临时接口,使用 redis 提供在线服务,暂时未和 mysql 实现通信
- 通信安全 http -> https 考虑使用 https 双向认证
当前设计中 http 模块 未和 websocket 模块进行关联,后期设计中可能会设计中间服务模块,来实现这两个模块间的通信
http 模块提供的服务
- 用户注册
- 用户登录
- 用户信息更新
- 查找用户
- 用户重置密码
- 为 客户端提供 文件服务
websocket 模块提供的服务
- 单对单通信
- 群聊通信
- 好友申请(即时推送) 可以考虑 http 模块
- 群聊申请 (即时推送)
mysql 主要作用 : 提供离线消息临时转储
redis 主要作用 :标记用户,减少 mysql 操作 单线程保证多进程并发时数据安全
浙公网安备 33010602011771号