这周对公司的一个平台弄的项目进行了从新设计,有些当心得,记录一下。sql
这是一个短信类的项目,主要流程为渠道提交计费请求到咱们的系统,咱们的系统再把请求转发到上一级平台,上一级平台接收到请求后经过短信网关发一条短信到用户手机上,用户收到短信后回复指定的指定后就对用户的手机进行扣费,这中间由于涉及到收费分红的问题,因此须要对这些流水进行记录,同时要对下一级渠道进行管理,还须要生成一些报表统计短信的转化率(真正计费成功的短信与实际发送的短信的比率),统计并控制投诉比率(短信下发后被用户投诉是要被封停的)等。数据库
对需求做过度析后,我把这个系统划分红了三个相互独立,能够分开部署的模块:收发模块,管理模块,定时任务模块,三个模块间再创建起互相通信的协议,这三个模块的职责以下:工具
收发模块:负责接收渠道提交的请求,并对请求进行一些必要的控制(好比黑名单过滤,有效性判断,渠道是否被送信等)和处理,而后再把请求转发给上一级平台,上一级平台接收到请求后会提交短信网关发送一条确认收费的短信到用户手机,用户回复指定的指令后,上一级平台再把确认计费的信息下发到咱们的系统,系统找到对应的请求信息更新计费状态后再下发给对应的渠道。性能
管理模块:配置渠道,渠道用户,计费产品等信息,同时能够在管理模块查看统计报表,交易流水等信息。设计
定时任务模块:由于其中一些报表比较复杂,若是都在查询时临时生成sql去统计的话会很慢,并且会影响到数据库的性能,因此针对一些能够不用那么实时的报表,专门经过几个定时任务来跑出结果后插入或更新到汇总表中。部署
这周我主要对收发模块进行了设计,设计工具使用了visio,大概设计过程以下:产品
先整理与业务紧密相关的流程,这边主要是渠道提交请求流程,接收状态报告流程,使用的是visio中的基本流程图。io
划分主要模块,模块的设计基于高内聚,低耦合的概念,模块之间避免相互调用。配置
设计各模块中主要的类,先从最低层的类开始设计(最低层的类通常都是被其它层调用,不会调用其它层),这其中设计类的具体属性和方法时会一边看前面整理的流程图和模块图。定时任务
主要的模块和类设计完成后就基本能够开始写代码了。