消息中心构架设计说明书2.docx
《消息中心构架设计说明书2.docx》由会员分享,可在线阅读,更多相关《消息中心构架设计说明书2.docx(31页珍藏版)》请在冰豆网上搜索。
消息中心构架设计说明书2
消息中心构架设计说明书
版本:
1.0
变更记录
序号
版本
变更说明
修改人/日期
审批人/日期
1
1.0
创建
李万鸿
11.文档介绍
1.1文档目的
消息中心接收别的系统发送的消息,再基于一定的规则以邮件、短信、消息等方式推送消息到pc端和手机端,比如对于attendance迟到、早退、tour超时提醒等需要及时推送相应的信息给相关人员,中心对规则、用户、消息进行管理。
为此,根据“先进实用、稳定可靠”的原则设计本消息中心。
1.2文档范围
消息的接收、发送、保存,对应用用户的管理。
1.3读者对象
开发人员
1.4参考文献
1.5术语与缩写解释
缩写、术语
解释
QoSlevel
QualityofServicelevel
SD
系统设计,SystemDesign
…
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。
采用mqttQoSlevel2协议,保证自动重发发送不成功的消息,而且可以保证消息的顺序到达,可以设置超时时间,防止断网。
Mqtt不建立长连接,省电、省流量。
还可以用mosquitto实现集群发送,集群可以线性扩展。
应用系统用户在注册、登陆后申请发送消息的类别,有邮件、短信、手机消息、pc消息4种,注册后要记住自己的id,然后通过接口发送消息;管理员审批用户的申请,管理消息;消息中心发送消息或邮件、短信到相应的pc端或手机端用户。
系统的管理功能包括对规则、用户、消息进行管理。
中心的时区设当地的时区,系统用ntpdate命令让系统使用NTP(NetworkTimeProtocol网络时间协议)协议来从网络同步时间的命令,这样即使有夏令时的变化,系统也会自动更新。
中心使用时间时需要得到系统的时区。
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单元定义
单元名称
单元功能描述
备注
com.isoftstone.message.domain.Message
消息实体
com.isoftstone.message.MessageBiz
消息发送接收业务类
com.isoftstone.message.dao.MessageDao
消息管理dao类
com.isoftstone.message.service.MessageService
消息管理service类
com.isoftstone.message.mailMessage
发送邮件
com.isoftstone.message.shortMessage
发送短信
com.isoftstone.message.pcMessage
发送pc消息
com.isoftstone.message.MobileMessage
发送手机消息
6.1.2接口描述
1.发送接口
接口定义:
publicvoidsendMessage(StringapplicationId,Stringtypeid,Stringtitle,Stringcontent,StringuserId)throwsException;
●描述:
通过调用此接口可发送消息及参数,接口在com.isoftstone.message.MessageBiz中。
●入口参数
父元素
元素
必须
类型
备注
applicationId
M
String
typeid
O
String
title
String,
content
O
String
userId
String
sendTime
String
timeZone
String
2.接收接口
接口定义:
publicIntegergetMessageResult(StringapplicationId,Stringtypeid,Stringtitle,Stringcontent,StringuserId)throwsException;
●描述:
通过调用此接口可得到发送消息的结果,如果发送失败,用户则调用发送接口重发。
接口在com.isoftstone.message.MessageBiz中。
●入口参数
父元素
元素
必须
类型
备注
applicationId
M
String
typeid
O
String
title
String,
userId
String
sendTime
String
timeZone
String
接口返回:
返回码
含义
备注
0
成功
1
失败
2
数据重复提交
3
服务器异常
4
没有发送权限
5
网络异常
时序图
基本场景
以下场景触发模块:
用户调用接口发送消息。
时序图及描述
流程描述:
1.用户使用接口发送消息及参数。
2.接口对消息参数进行分析,判断是否可以发送。
3.接口根据参数分别异步发送邮件、短信、手机、pc消息,并得到发送结果,反馈给接口调用者。
4.发送消息后保存消息到数据库。
异常描述
IO异常:
数据插入失败,写入日志。
数据库操作异常:
数据插入失败,写入日志
网络连接超时异常:
网络异常,发送失败,写入日志并反馈给用户。
6.2手机、pc接收模块
6.2.1手机接收消息中心发送的消息
手机用mqtt接收消息。
6.2.2Pc接收消息中心发送的消息。
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开发环境的配置
类别
标准配置
最低配置
计算机硬件
Pcwindos
软件
eclipse
网络通信
Tcp/ip
其它
8运行环境的配置
类别
标准配置
最低配置
计算机硬件
服务器
软件
Linux
网络通信
Tcp/ip
其它
9测试环境的配置
同开发环境。
10其它
10.1数据库设计
10.1.1邮件消息表t_email_message
⏹主要用途:
保存发送的邮件
⏹数据增长频率:
个
⏹数据保存周期:
由用户调用操作
FIELDNAME
FIELDCODE
FIELDYPE
FIELDLENGTH
KEY
O/M
DEFAULTVALUE
DESCRIPTION
id
id
bigint
pk
M
标题
title
varchar(80)
M
内容
content
varchar(500)
M
发送时间
sendTime
datetime
M
接收时间
ReceiveTime
datetime
发送状态
status
tinyint
M
接收用户id
receiveUserId
varchar(50)
应用用户id
applicationTypeId
bigint
是否删除
deleted
tinyint
10.1.2手机消息表t_mobile_message
⏹主要用途:
保存发送的手机消息
⏹数据增长频率:
个
⏹数据保存周期:
由用户调用操作
FIELDNAME
FIELDCODE
FIELDYPE
FIELDLENGTH
KEY
O/M
DEFAULTVALUE
DESCRIPTION
id
id
bigint
pk
M
标题
title
varchar(80)
M
内容
content
varchar(500)
M
发送时间
sendTime
datetime
M
接收时间
ReceiveTime
datetime
发送状态
status
tinyint
M
接收用户id
receiveUserId
varchar(50)
应用用户id
applicationTypeId
bigint
是否删除
deleted
tinyint
10.1.3短信消息表t_short_message
⏹主要用途:
保存发送的短信消息。
⏹数据增长频率:
个
⏹数据保存周期:
由用户调用操作
FIELDNAME
FIELDCODE
FIELDYPE
FIELDLENGTH
KEY
O/M
DEFAULTVALUE
DESCRIPTION
id
id
bigint
pk
M
标题
title
varchar(80)
M
内容
content
varchar(500)
M
发送时间
sendTime
datetime
M
发送状态
status
tinyint
M
接收时间
ReceiveTime
datetime
接收用户id
receiveUserId
varchar(50)
应用用户id
applicationTypeId
bigint
是否删除
deleted
tinyint
10.1.4管理员表t_admin
⏹主要用途:
保存管理员信息。
⏹数据增长频率:
个
⏹数据保存周期:
由用户注册、修改决定。
FIELDNAME
FIELDCODE
FIELDYPE
FIELDLENGTH
KEY
O/M
DEFAULTVALUE
DESCRIPTION
id
id
bigint
pk
M
姓名
name
varchar(30)
M
email
email
varchar(128)
M
电话
telephone
varchar(32)
M
密码
passWord
varchar(50)
M
注册时间
registerTime
datetime
是否删除
deleted
tinyint
10.1.5发送消息用户表t_application_user
⏹主要用途:
保存发送消息用户信息。
⏹数据增长频率:
个
⏹数据保存周期:
由用户注册、修改决定。
FIELDNAME
FIELDCODE
FIELDYPE
FIELDLENGTH
KEY
O/M
DEFAULTVALUE
DESCRIPTION
id
id
bigint
pk
M
姓名
name
varchar(30)
M
email
email
varchar(128)
M
电话
telephone
varchar(32)
M
密码
passWord
varchar(50)
M
注册时间
registerTime
datetime
是否删除
deleted
tinyint
10.1.6消息订阅类别表t_message_subscribe_type
⏹主要用途:
保存用户消息订阅方式信息。
⏹数据增长频率:
个
⏹数据保存周期:
由管理员操作决定。
FIELDNAME
FIELDCODE
FIELDYPE
FIELDLENGTH
KEY
O/M
DEFAULTVALUE
DESCRIPTION
id
id
bigint
pk
M
方式
name
varchar(30)
M
邮件
备注
reamark
varchar(128)
M
是否删除
deleted
tinyint
10.1.7国家时区表t_timeZone
⏹主要用途:
提供各个国家时区,为管理员指定中心的时区服务。
⏹数据增长频率:
个
⏹数据保存周期:
由管理员修改决定
FIELDNAME
FIELDCODE
FIELDYPE
FIELDLENGTH
KEY
O/M
DEFAULTVALUE
DESCRIPTION
id
id
bigint
pk
M
国家
country
varchar(80)
M
时区
timeZone
varchar(100)
M
key
key
datetime
M
用于国际化id
产生时间
createTime
datetime
备注
remark
bigint
是否删除
deleted
tinyint
10.1.8使用时区表t_userd_timeZone
⏹主要用途:
保存消息中心的时区,时区可以由系统自动获取,也可以由管理员指定。
⏹数据增长频率:
个
⏹数据保存周期:
由管理员修改决定
FIELDNAME
FIELDCODE
FIELDYPE
FIELDLENGTH
KEY
O/M
DEFAULTVALUE
DESCRIPTION
id
id
bigint
pk
M
国家
country
varchar(80)
M
时区
timeZone
varchar(100)
M
key
key
datetime
M
用于国际化id
产生时间
createTime
datetime
备注
remark
bigint
是否删除
deleted
tinyint
10.1.9用户消息类型注册表t_application_user
⏹主要用途:
保存发送消息用户信息。
⏹数据增长频率:
个
⏹数据保存周期:
由用户注册、修改决定。
FIELDNAME
FIELDCODE
FIELDYPE
FIELDLENGTH
KEY
O/M
DEFAULTVALUE
DESCRIPTION
id
id
bigint
pk
M
用户id
applicationId
bigint
M
消息类别id
typeId
bigint
M
类别名称
name
varchar(50)
M
备注
remark
varchar(100)
M
申请时间
applyTime
datetime
是否删除
deleted
tinyint
是否同意
agree
tinyint
10.1.10pc消息表t_pc_message
⏹主要用途:
保存发送pc的消息
⏹数据增长频率:
个
⏹数据保存周期:
由用户调用操作
FIELDNAME
FIELDCODE
FIELDYPE
FIELDLENGTH
KEY
O/M
DEFAULTVALUE
DESCRIPTION
id
id
bigint
pk
M
标题
title
varchar(80)
M
内容
content
varchar(500)
M
发送时间
sendTime
datetime
M
发送状态
status
tinyint
M
接收时间
ReceiveTime
datetime
接收用户id
receiveUserId
varchar(50)
应用用户id
applicationTypeId
bigint
是否删除
deleted
tinyint
10.1.11消息推送规则t_rule
⏹主要用途:
保存发送规则
⏹数据增长频率:
个
⏹数据保存周期:
由用户调用操作
FIELDNAME
FIELDCODE
FIELDYPE
FIELDLENGTH
KEY
O/M
DEFAULTVALUE
DESCRIPTION
id
id
bigint
pk
M
规则标题
name
varchar(80)
M
规则内容
content
varchar(500)