消息中心构架设计说明书

  • 1.文档介绍
    • 1.1 文档目的
    • 1.2 文档范围
    • 1.3 读者对象
    • 1.4 参考文献
    • 1.5 术语与缩写解释
  • 2 系统概述
  • 3 设计约束
  • 4 设计策略
  • 5 系统总体结构
    • 5.1 系统架构设计
      • 1逻辑架构
      • 2网络架构
    • 5.2 系统包含模块
    • 1. 消息接收发送模块。
    • 2.手机、pc接收模块。
    • 3.管理模块。
  • 6 系统模块的结构与功能
    • 6.1 消息接收发送模块
      • 6.1.1单元定义
      • 6.1.2接口描述
    • 6.2 手机、pc接收模块
      • 6.2.1 手机接收消息中心发送的消息
      • 6.2.2 Pc接收消息中心发送的消息。
    • 6.3 管理模块。
      • 6.3.1 用户和管理员注册、登陆。
      • 6.3.2 用户操作功能。
      • 6.3.3 管理功能。
      • 6.3.4 注册、登陆界面
      • 6.3.5 用户申请界面
      • 6.3.6 管理界面
  • 10.1 数据库设计
    • 10.1.1邮件消息表t_­email_message
    • 10.1.2手机消息表t_­mobile_message

1.文档介绍

1.1 文档目的

消息中心接收别的系统发送的消息,再基于一定的规则以邮件、短信、消息等方式推送消息到pc端和手机端,比如对于attendance迟到、早退、tour超时提醒等需要及时推送相应的信息给相关人员,中心对规则、用户、消息进行管理。为此,根据“先进实用、稳定可靠”的原则设计本消息中心。

1.2 文档范围

消息的接收、发送、保存,对应用用户的管理。

1.3 读者对象

开发人员

1.4 参考文献

1.5 术语与缩写解释

缩写、术语 解 释
QoS level Quality of Service level
SD 系统设计,System Design

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(NetworkTime Protocol 网络时间协议)协议来从网络同步时间的命令,这样即使有夏令时的变化,系统也会自动更新。中心使用时间时需要得到系统的时区。

2网络架构

5.2 系统包含模块

1. 消息接收发送模块。

1)提供发送接口用于接收应用用户的消息和参数,然后通过规则发送消息,用户通过接收接口得到发送结果:
发送消息到手机端。

发送消息到pc端。

发送邮件。

发送短信。

2.手机、pc接收模块。

手机接收消息中心发送的消息。

Pc接收消息中心发送的消息。

3.管理模块。

1)用户和管理员注册、登陆。

2)实现用户申请消息发送方式申请、查看消息、修改密码、统计消息。用户可以申请邮件、短信、手机消息、pc消息4种方式发送消息。

3)管理用户、审批用户发送方式、管理员密码修改、查看和统计发送过的消息。

4)管理规则,可以增加、修改、删除查询规则。

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. 发送接口

接口定义:public void sendMessage(String applicationId,String typeid,Stringtitle,String content,String userId) throwsException;
l 描述:通过调用此接口可发送消息及参数,接口在com.isoftstone.message.MessageBiz中。
l 入口参数

父元素 元素 必须 类型 备注
applicationId M String
typeid O String
title String
content String
userId String
sendTime String
timeZone String
  1. 接收接口

接口定义:public Integer getMessageResult(String applicationId,String typeid,Stringtitle,String content,String userId) throwsException;

l 描述:通过调用此接口可得到发送消息的结果,如果发送失败,用户则调用发送接口重发。接口在com.isoftstone.message.MessageBiz中。

l 入口参数

父元素 元素 必须 类型 备注
applicationId M String
typeid O String
title String
content 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.2 Pc接收消息中心发送的消息。

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.应用用户消息审批管理
3. 消息管理
4.管理员密码管理
5.消息统计
5. 规则管理
6. 规则编辑
7 开发环境的配置

类别 标准配置 最低配置
计算机硬件 Pc windos
软件 eclipse
网络通信 Tcp/ip
其它

9 测试环境的配置
同开发环境。

10.1 数据库设计

10.1.1邮件消息表t_­email_message

n 主要用途:保存发送的邮件

n 数据增长频率:个

n 数据保存周期:由用户调用操作

字段名 字段码 字段类型 key O/M
id id bigint pk M
标题 title varchar(80) M
内容 content varcahr(500) M
发送时间 send_time datetime M
接收时间 receive_time datetime
发送状态 status tinyint M
接收用户id receive_user_id varchar(50)
应用用户id application_user_id bigint
是否删除 deleted tinyint

10.1.2手机消息表t_­mobile_message

n 主要用途:保存发送的手机消息

n 数据增长频率:个

n 数据保存周期:由用户调用操作

字段名 字段码 字段类型 key O/M
id id bigint pk M
标题 title varchar(80) M
内容 content varcahr(500) M
发送时间 send_time datetime M
接收时间 receive_time datetime
发送状态 status tinyint M
接收用户id receive_user_id varchar(50)
应用用户id application_user_id bigint
是否删除 deleted tinyint

消息中心构架设计说明书相关推荐

  1. 聊聊消息中心的设计与实现逻辑

    厌烦被消息打扰,又怕突然间的安静: 一.业务背景 微服务的架构体系中,会存在很多基础服务,提供一些大部分服务都可能需要的能力,比如文件管理.MQ队列.缓存机制.消息中心等等,这些服务需要提供各种可以复 ...

  2. java netty聊天室_netty实现消息中心(二)基于netty搭建一个聊天室

    前言 上篇博文(netty实现消息中心(一)思路整理 )大概说了下netty websocket消息中心的设计思路,这篇文章主要说说简化版的netty聊天室代码实现,支持群聊和点对点聊天. 此demo ...

  3. 业务消息中心系统设计与实现(一)

    目录 解决问题场景? 那么这款内部业务消息中心需要满足哪些功能呢? 哈喽小伙伴,我是kilde,和有需要的小伙伴分享一个业务消息中心的设计思想与实现,喜欢的小伙伴可以点赞关注博主,觉得有用的也可以打赏 ...

  4. 仿微博消息中心的系统设计与实现

    最近在实现一个类似于微博.网易云的消息中心模块.主要实现的功能是,将系统中的点赞.评论.@等消息做汇合.今天跟大家分享下,我们的设计和实现思路. 首先说明,我们目前是微服务的架构.所以本篇文章中对于消 ...

  5. 系统构架设计应考虑的因素

    摘要: 本文从程序的运行时结构和源代码的组织结构两个方面探讨了系统构架设计应考虑的各种因素,列举了系统构架设计文档应考虑的一些问题. 关键字: 系统构架.设计.考虑.因素 正文: 约公元前25年,古罗 ...

  6. 网络游戏服务器构架设计

    网络游戏服务器构架设计(一):前言 这篇blog题目涉及的范围真大!以至于在这里需要先写一篇前言把范围缩小.选择写这样一个系列的文章,主要是想给工作了两年的自己一个交代,或者说是一个阶段性的总结.两年 ...

  7. 网络游戏服务器构架设计(四):云风的轨迹

    最近闲着没事把云风的< 开发笔记>看了个遍,希望能从大牛的开发轨迹中得到一些启发.但可能是因为本人level太低,一遍看下来还是云里雾里,不甚明白.没办法只好再看一遍,希望能对他们的服务器 ...

  8. 魔方机器人机械方面设计说明书

    魔方机器人机械方面设计说明书 写在前面 总体情况 这是第二次接触实验班的项目,其实准确的来说还是应该说是第一次,因为第一次的小车项 目我参与的并不是很多,我当时仅仅是画了一个 Soiled works ...

  9. 网络游戏服务器构架设计(三):刀剑Online - 总控服务器、场景服务器

    转载于http://www.cnblogs.com/ychellboy/archive/2012/09/17/2675347.html 上一篇<网络游戏服务器构架设计(二)>介绍了刀剑On ...

最新文章

  1. 水题/poj 1852 Ants
  2. 人工智能热门技术研究课题
  3. ubuntu for nvidia-drivers for AI
  4. 【STM32】STM32f4学习之路--时钟
  5. Python模块和包:导入制作模块、name、模块定位顺序(文件名与模块名重复、功能名与功能名重复、函数名与功能名重复、变量名与模块名重复)、from 模块名 import *__all__列表、包
  6. java 包 划分_Java包的命名与划分
  7. 【★★★★★】提高PHP代码质量的36个技巧
  8. 有些生意很偏门,也有一定门槛,但是效益非常好
  9. 前端单页路由《stateman》源码解析
  10. Redis集群的搭建与主从复制,redis-cluster
  11. webpack资源的输入与输出
  12. word打开提示“所用加密类型不可用”
  13. Android网络小说阅读器的实现
  14. 数据结构---第四章:串
  15. rails + devise 用户注册登录及权限判断
  16. 拆分一个链表为偶数链表和奇数链表
  17. no such file or directory, open
  18. 大数据能力_大数据基础能力_脑图
  19. 中兴软件笔试 c语言,中兴通讯软件工程师面试经验
  20. 离散数学图论全部知识点罗列

热门文章

  1. 商用室内机器人才是未来机器人开发的热点与趋势
  2. programming notes - 在线学习资源
  3. php求价格最低,php-将Woo-commerce变体销售价格调至低于实际价格
  4. 基于深度学习的目标检测算法对比分析(RCNN、SPP、YOLO、SSD、FPN、RetinaNet)
  5. “海马体”平替教程:把拍海马体的钱省下来买排骨不香嘛?好用哭了
  6. Declaration of Interest Statement
  7. static定义静态方法
  8. Nepxion Discovery【探索】微服务企业级解决方案
  9. 2022年全球汽车头枕行业调研及趋势分析报告
  10. 360:2017汽车行业大数据报告(附下载)