消息中心构架设计说明书(2)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
消息中心构架设计说明书
版本:1.0
变更记录
目录
1 1. 文档介绍 (4)
1.1文档目的 (4)
1.2文档范围 (4)
1.3读者对象 (4)
1.4参考文献 (4)
1.5术语与缩写解释 (4)
2系统概述 (5)
3设计约束 (6)
4设计策略 (7)
5系统总体结构 (8)
6子系统N的结构与功能 (15)
7开发环境的配置 (27)
8运行环境的配置 (28)
9测试环境的配置 (29)
10其它 (30)
1 1. 文档介绍
1.1 文档目的
消息中心接收别的系统发送的消息,再基于一定的规则以邮件、短信、消息等方式推送消息到pc端和手机端,比如对于attendance迟到、早退、tour超时提醒等需要及时推送相应的信息给相关人员,中心对规则、用户、消息进行管理。
为此,根据“先进实用、稳定可靠”的原则设计本消息中心。
1.2 文档范围
消息的接收、发送、保存,对应用用户的管理。
1.3 读者对象
开发人员
1.4 参考文献
1.5 术语与缩写解释
2 系统概述
系统主要完成消息的接收、发送和保存,再基于一定的规则以邮件、短信、消息等方式推送消息到pc端或手机,以及对用户、规则、消息进行管理。
系统接收来自别的系统应用用户的消息,然后基于一定的规则把消息进行推送。
3 设计约束
1.系统必须遵循国家软件开发的标准。
2.系统用java开发,服务器中间件为tomcat。
3.系统必须稳定可靠,性能高,满足每天40-500万次的推送量。
4.保证消息的成功送达,如果不成功就重发。
4 设计策略
1. 系统高可用、高性能、易扩展,安全稳定,实用可靠,满足用户的需要。
2. 系统可以进行扩展,增加推送的消息种类,增加消息推送的规则。
3. 系统可以复用于别的系统的消息推送。
5 系统总体结构
5.1 系统架构设计
1.逻辑架构
系统采用接口用rocketMQ实现应用用户的消息接收,用drools依据一定的规则进行消息转发,发送邮件、短信、消息到pc端和手机端,消息发送后用rocketMQ发送结果消息给应用用户。
用户管理发送规则,对不同的消息、发送的方式、发送的时间、接收者进行设置,以后消息中心按照这些规则发送消息。
规则处理采用drools完成。
系统采用MQTT服务器 mosquito实现消息对手机端的推送,采用winsocket 发送消息给pc端。
MQTT通过发布/订阅方式发送消息给手机,方式为发布/订阅,为了实现点对点发送,需要在发送的消息里加上手机端的imei和用户名,同时在手机端进行判断,如果imei和用户名符合则接收此消息。
采用winsocket实
现推送消息到pc端,为实现点对点的推送,可以在消息中加上要发送的pc端的用户名,pc端对消息的用户名进行判断,如果和自己的一样则接收消息。
对于群发,大家都可以收到。
应用用户通过接口发送消息给消息中心,消息采用json格式,包含应用用户id、发送消息方式id、Title、content、usrId,sendTime。
采用mqtt QoS level 2协议,保证自动重发发送不成功的消息,而且可以保证消息的顺序到达,可以设置超时时间,防止断网。
Mqtt不建立长连接,省电、省流量。
还可以用mosquitto实现集群发送,集群可以线性扩展。
应用系统用户在注册、登陆后申请发送消息的类别,有邮件、短信、手机消息、pc消息4种,注册后要记住自己的id,然后通过接口发送消息;管理员审批用户的申请,管理消息;消息中心发送消息或邮件、短信到相应的pc端或手机端用户。
系统的管理功能包括对规则、用户、消息进行管理。
中心的时区设当地的时区,系统用ntpdate命令让系统使用NTP(Network Time Protocol 网络时间协议)协议来从网络同步时间的命令,这样即使有夏令时的变化,系统也会自动更新。
中心使用时间时需要得到系统的时区。
2.网络架构
5.2 系统包含模块
1.消息接收发送模块。
1)提供发送接口用于接收应用用户的消息和参数,然后通过规则发送消息,用户通过接收接口得到发送结果:
发送消息到手机端。
发送消息到pc端。
发送邮件。
发送短信。
2.手机、pc接收模块。
手机接收消息中心发送的消息。
Pc接收消息中心发送的消息。
3.管理模块。
1)用户和管理员注册、登陆。
2)实现用户申请消息发送方式申请、查看消息、修改密码、统计消息。
用户可以申
请邮件、短信、手机消息、pc消息4种方式发送消息。
3)管理用户、审批用户发送方式、管理员密码修改、查看和统计发送过的消息。
4)管理规则,可以增加、修改、删除查询规则。
5.3 用例图
1.应用用户用例图
2.管理员用例图
3消息用户用例图4.应用用户用例图
5.4 流程图
1.发送消息流程图
6 系统模块的结构与功能
系统包括消息接收送接模块、手机、pc接收消息模块、管理模块,共3个模块。
6.1 消息接收发送模块
提供接口用于接收应用用户的消息,然后用drools通过规则异步发送消息,用户调用接收接口得到发送结果:
发送消息到手机端。
发送消息到pc端。
发送邮件。
发送短信。
系统采用rocketmq接收消息和返回消息发送结果给用户,系统给pc、手机采用@Async异步发送邮件等消息,并得到发送结果,把结果返回给调用者,消息及发送的情况入库,入库时需要检查消息是否已经存在。
用户采用异步调用本接口,得到发送结果,如果不成功,用户可以重发。
因为中心的时区与各用户的时区不同,用户需要发送自己的时区,系统返回发送时间时要根据时区转换时间。
当手机离线没有收到消息,则在定时器中重发;对于需要定时发送的消息,通过定时器完成发送。
定时器20分钟执行一次,对这2种情况通过规则发送消息。
系统确定时间时要根据时区进行转换,按照用户的时区时间来发送消息。
6.1.1单元定义
6.1.2接口描述
1. 发送接口
接口定义:public void sendMessage(String applicationId,String typeid,String title,String content,String userId) throws Exception;
●描述:通过调用此接口可发送消息及参数,接口在
com.isoftstone.message.MessageBiz中。
●入口参数
2. 接收接口
接口定义:public Integer getMessageResult(String applicationId,String typeid,String title,String content,String userId) throws Exception;
●描述:通过调用此接口可得到发送消息的结果,如果发送失败,用户则调用发送接
口重发。
接口在com.isoftstone.message.MessageBiz中。
●入口参数
接口返回:
时序图
基本场景
以下场景触发模块:
用户调用接口发送消息。
时序图及描述
流程描述:
1. 用户使用接口发送消息及参数。
2. 接口对消息参数进行分析,判断是否可以发送。
3. 接口根据参数分别异步发送邮件、短信、手机、pc消息,并得到发送结果,反馈给
接口调用者。
4. 发送消息后保存消息到数据库。
异常描述
IO异常:数据插入失败,写入日志。
数据库操作异常:数据插入失败,写入日志
网络连接超时异常:网络异常,发送失败,写入日志并反馈给用户。
6.2 手机、pc接收模块
6.2.1手机接收消息中心发送的消息
手机用mqtt接收消息。
6.2.2P c接收消息中心发送的消息。
Pc用winsocket接收消息。
6.3 管理模块。
6.3.1用户和管理员注册、登陆。
用户和管理员注册、登陆。
应用用户注册后记住自己的id,以后发送消息时会用到。
6.3.2用户操作功能。
实现用户申请消息发送方式申请、查看消息、修改密码、统计消息。
用户可以申请邮件、短信、手机消息、pc消息4种方式发送消息。
6.3.3管理功能。
管理规则、用户、审批用户发送方式、管理员密码修改、查看和统计发送过的消息。
规则以xml格式生成。
6.3.4注册、登陆界面
完成应用用户和注册、登陆。
6.3.5用户申请界面
实现用户申请消息发送方式申请。
用户可以申请邮件、短信、手机消息、pc消息4种方式发送消息。
1.应用用户消息管理
2.应用用户消息管理
3.应用用户密码管理
4.发送管理
5.应用用户消息统计
6.3.6管理界面
管理员实现对应用用户的管理、对应用用户申请的管理和对消息的管理,及管理员注册、登陆。
1.应用用户管理
2.应用用户消息审批管理
2. 消息管理
4..管理员密码管理
5.消息统计
5. 规则管理
6. 规则编辑
7 开发环境的配置
8 运行环境的配置
9 测试环境的配置
同开发环境。
10 其它
10.1 数据库设计
t_ m obile_message
id
title content sendTime status remark
receiveUserId
applicationTypeId deleted
bigint varchar(80)varchar(500)datetime tinyint
varchar(100)varchar(50)bigint tinyint
<pk>t_timeZone
id
country timeZone key
createTime updateTime remark deleted ...
bigint varchar(80)varchar(100)varchar(100)datetime datetime datetime tinyint
<pk>t_application _message_type id
applicationId typeId name remark agree deleted applyTime ...
bigint bigint bigint
varchar(50)varchar(100)int int
datetime
<pk>t_message_subscribe_type id name reamark deleted ...
bigint varchar(50]varchar(100)tinyint
<pk>t_admin
id name email telephone remark passWord registerTime deleted ...
bigint varchar(50)varchar(128)varchar(32)varchar(100)varchar(50)datetime tinyint
<pk>t_application_user
id name email telephone remark passWord registerTime deleted ...
bigint varchar(50)varchar(128)varchar(32)varchar(100)varchar(50)datetime tinyint
<pk>t_ e mail_message
id
title content sendTime dst status remark
receiveUserId
applicationTypeId
bigint varchar(80)varchar(500)datetime tinyint tinyint
varchar(100)varchar(50)bigint
<pk>t_ s hort_message
id
title content sendTime status remark
receiveUserId
applicationTypeId deleted
bigint varchar(80)varchar(500)datetime tinyint
varchar(100)varchar(50)bigint tinyint
<pk>t_pc_ m essage
id
title content sendTime status remark
receiveUserId
applicationTypeId deleted
bigint varchar(80)varchar(500)datetime tinyint
varchar(100)varchar(50)bigint tinyint
<pk>t_userd_timeZone
id
country timeZone key
createTime updateTime remark deleted ...
bigint varchar(80)varchar(100)varchar(100)datetime datetime datetime tinyint
<pk>t_rule
id name content createTime updateTime
remark deleted ...
bigint varchar(100)varchar(1000)datetime datetime datetime int
<pk>
10.1.1邮件消息表t_email_message
⏹ 主要用途:保存发送的邮件 ⏹ 数据增长频率:个
⏹ 数据保存周期:由用户调用操作
10.1.2手机消息表t_mobile_message
⏹主要用途:保存发送的手机消息
⏹数据增长频率:个
⏹数据保存周期:由用户调用操作
10.1.3短信消息表t_short_message
⏹主要用途:保存发送的短信消息。
⏹数据增长频率:个
⏹数据保存周期:由用户调用操作
10.1.4管理员表t_admin
⏹主要用途:保存管理员信息。
⏹数据增长频率:个
⏹数据保存周期:由用户注册、修改决定。
10.1.5发送消息用户表t_application_user
⏹主要用途:保存发送消息用户信息。
⏹数据增长频率:个
⏹数据保存周期:由用户注册、修改决定。
10.1.6消息订阅类别表t_message_subscribe_type
⏹主要用途:保存用户消息订阅方式信息。
⏹数据增长频率:个
⏹数据保存周期:由管理员操作决定。
10.1.7国家时区表t_timeZone
⏹主要用途:提供各个国家时区,为管理员指定中心的时区服务。
⏹数据增长频率:个
⏹数据保存周期:由管理员修改决定
10.1.8使用时区表t_userd_timeZone
⏹主要用途:保存消息中心的时区,时区可以由系统自动获取,也可以由管理员指定。
⏹数据增长频率:个
⏹数据保存周期:由管理员修改决定
10.1.9用户消息类型注册表t_application_user
⏹主要用途:保存发送消息用户信息。
⏹数据增长频率:个
⏹数据保存周期:由用户注册、修改决定。
10.1.10pc消息表t_pc_message
⏹主要用途:保存发送pc的消息
⏹数据增长频率:个
⏹数据保存周期:由用户调用操作
10.1.11消息推送规则t_rule
⏹主要用途:保存发送规则
⏹数据增长频率:个
⏹数据保存周期:由用户调用操作
10.11日志管理
系统用scribe保存日志。