1 需求描述及分析

需求分析的目的是使产品和开发,对所要实现的功能细节达成一致,这是一个不断沟通协商的过程。

开发人员需要针对需求中没有明确描述的内容,提出自己的思考及意见。

1、需求描述

本章希望在基础服务框架上实现一个聊天服务。

聊天以聊天室的形式出现。

1.1 登陆

用户可以连接到聊天室服务,并申请一个会话id,保存到本地。

用户可以在服务上设置昵称,并与会话id绑定。

1.2创建

用户可以创建一个聊天室,并获取一个聊天室房间号,房间号为6位数字。

1.3 加入

用户可以通过聊天室房间号加入聊天室。

1.4 解散

聊天室创建后保留30分钟,等待用户进入,若30分钟无人进入,则聊天室解散。

30分钟后,聊天室内还有人,所有用户离开聊天室后,聊天室解散。

1.5 消息

聊天室内有人发消息,所有在聊天室内的人都可以收到。

服务端不保存历史消息,不提供聊天内容漫游功能,属于阅后即焚。

暂不支持语音、图片、视频等多媒体消息,仅支持文字消息。

1.6 交互

用户可以从聊天室拉取当前聊天室内的用户列表,以便可以通过@方式提及某个用户。

2、需求分析

产品提供的需求文档,往往只关注他想实现的需求,会再多一些界面展示的UI示意图,其他技术细节需要开发人员自己补充。在需求分析时,需要看到需求中没有明确的一些点,和产品做好充分沟通。

服务架构

本次需求只需要实现一个小的聊天室服务,支持聊天。由于初期使用人数较少(10个以内),所以只考虑实现一个服务即可。暂不考虑分布式部署多台聊天服务的情形。

服务功能比较简单,预估单台服务可承载上限为3000人左右。

登陆

登陆功能适合接入一个统一的登陆平台,这里没有其他服务,仅做简单支持,后期可以独立出一个登陆注册服务。

创建

创建需求只提到可以创建一个聊天室,并没有提到创建上限,一般沟通后可能确定,一个人同一时间,只能创建一个聊天室,但可以随意加入其他聊天室,但同一时间只能进入一个聊天室。因此,客户端需要能够拉取自己相关的聊天室列表,包括自己创建的聊天室,加入过的聊天室(最近10个),当前所在的聊天室。

加入

用户可以通过聊天室ID进入聊天室,因此聊天室ID不能重复分配。因此需要一个单独的模块分配和回收聊天室ID,后期可能独立出一个服务,专门用于管理聊天室ID。

解散

聊天室设置有效期,30分钟应该是可配置值,后期又可能变化。

服务可以每分钟检查所有的聊天室状态,符合需求的,直接解散即可,不需要为聊天室单独设置定时器。用户离开聊天室时,也不需要单独检查,精度要求不高,在每分钟检查时处理即可。

聊天室需要记录创建时间,有效期,以及一个检查可以关闭的函数。

消息

由于需要支持聊天室内的消息广播,一条用户消息,需要发给聊天室的N人,变为N条消息。若每人每秒发一条消息,则每秒广播消息数为N*N条,消息数随人数增加指数级增长。因此,需要控制聊天室人数上限,可以暂定单个聊天室人数上限为50。(注:这个内容产品一般不会考虑到,需要开发人员自己注意,避免后期出现单个聊天室人数太多,消息数暴涨,导致服务卡顿。)

以上为针对产品需求,进行的需求分析,开发经验越丰富,考虑到的细节点越多,大家平时可以注意积累。下一节我们一起做概要设计。

Last updated