最近重构公司消息服务的架构设计
目标
研发一套独立的消息系统,此系统进行集中配置管理供各业务系统使用,用于支撑站内信、短信通知、短信验证码、邮件、微信消息、APP消息、IM等消息形式。
架构
1) 基于消息队列采用发布、订阅模式。消息的生产者为对外的消息接口,接收业务系统消息后将消息写入到消息队列指定的topic,订阅者对消息进行处理并行的发送消息。
2) 所有通知消息定义唯一“消息ID”来标识消息类型。
3) 通知消息由各消息模块(短信、邮件、站内信、微信、APP)自己负责本消息的发送,去读取消息节点配置信息,根据当前的消息ID判断自己是否需要发送消息,是则发送否则丢弃。
4) 消息体,消息体采用JSON报文格式,方便各系统之间对接。
消息数据定义
{
msghead:
{
msgtype:””,
msgid:””,
rcvuid:””,
rcvcid:””,
rcvmobile:””,
rcvemail:””,
time:””,
system:””
}
,
msgbody:
{
text:””,
noticemsg:””,
wxmsg:””,
appmsg:””,
immsg:””,
smsmsg:[{},{}]
}
}
字段 |
说明 |
值 |
msghead |
消息头 |
|
Msgtype |
消息类型 |
消息类型:notice/sms/email/im/wx |
Msgid |
消息id |
定义全局唯一 |
Rcvuid |
接收帐号id |
|
Rcvcid |
接收公司id |
|
Rcvmobile |
接收手机号 |
|
Rcvemail |
接收邮箱 |
|
Time |
发送时间 |
|
System |
发送系统模块 |
云仓 |
Msgbody |
消息体 |
|
Text |
文本消息内容 |
|
Noticemsg |
站内信消息内容 |
|
Wxmsg |
微信消息内容 |
|
Appmsg |
APP消息内容 |
|
Immsg |
IM消息内容 |
|
Smsmsg |
短信消息内容 |
标签->值数组,供短信模板使用 |
项目结构
消息接口API(msg_api)
1) 负责接收业务系统发送消息请求,将消息写到消息队列中;
2) 提供接口供业务系统查询,如查询用户的站内信消息列表、查询验证码是否正确等;
3) 提供数据接口供管理平台使用,如配置信息发送结点;
短信处理程序(msg_handle_sms)
1) 负责订阅消息,读取消息进行短信发送;
2) 负责验证码的生成处理;
3) 数据操作调用消息接口API;
4) 通知消息需要读取配置信息决定当前消息发送或丢弃;
邮件处理程序(msg_handle_email)
1) 负责订阅消息,读取消息进行邮件发送;
2) 数据操作调用消息接口API;
3) 通知消息需要读取配置信息决定当前消息发送或丢弃;
站内信处理程序(msg_handle_notice)
1) 负责订阅消息,读取消息进行通知;
2) 通知消息需要读取配置信息决定当前消息发送或丢弃;
3) 数据操作调用消息接口API;
数据库
1) 使用一个消息数据库;
2) 数据库表分为短信模块、站内信模块、IM模块(暂不做)、通知信息配置模块;
转载于:https://www.cnblogs.com/assion/p/7741562.html
最近重构公司消息服务的架构设计相关推荐
- pb 执行存储过程带参数_PB级海量数据服务平台架构设计实践
基于PB级海量数据实现数据服务平台,需要从各个不同的角度去权衡,主要包括实践背景.技术选型.架构设计,我们基于这三个方面进行了架构实践,下面分别从这三个方面进行详细分析讨论: 实践背景 该数据服务平台 ...
- 【数据分发服务DDS】软件定义汽车【二】- 面向服务的架构设计
引言 上一篇文章主要介绍了电子电气架构.车载操作系统.基础软件平台等之间的关系,以及软件定义汽车的基本概念,本篇将继续深入,重点阐述三个问题: 智能电动汽车软件范畴 软件+硬件升级的基础 面向服务的软 ...
- 数据传递型情景下事件机制与消息机制的架构设计剖析(目录)
目录 数据传递型情景下事件机制与消息机制的架构设计剖析(一) 转载于:https://www.cnblogs.com/hailan/p/3616766.html
- 阿里P8架构师谈:从单体架构、到SOA、再到微服务的架构设计详解
本文涉及的内容以及知识点如下: 1.单体架构 2.单体架构的拆分 3.SOA与微服务的区别 4.微服务的优缺点 5.微服务的消息 6.服务集成 7.数据的去中心化 单体架构 Web应用程序发展的早期, ...
- 谈一款MOBA类游戏《码神联盟》的服务端架构设计与实现 (转载)
原文链接 一.前言 <码神联盟>是一款为技术人做的开源情怀游戏,每一种编程语言都是一位英雄.客户端和服务端均使用C#开发,客户端使用,数据库使用MySQL.这个MOBA类游戏是笔者在学习时 ...
- 从单体架构、到SOA、再到微服务的架构设计详解
本文涉及的内容以及知识点如下: 单体架构 单体架构的拆分 SOA与微服务的区别 微服务的优缺点 微服务的消息 服务集成 数据的去中心化 单体架构 Web应用程序发展的早期,大部分web工程是将所有的功 ...
- 谈一款MOBA类游戏《码神联盟》的服务端架构设计与实现(更新优化思路)
一.前言 <码神联盟>是一款为技术人做的开源情怀游戏,每一种编程语言都是一位英雄.客户端和服务端均使用C#开发,客户端使用Unity3D引擎,数据库使用MySQL.这个MOBA类游戏是笔者 ...
- 阿里双十一微服务改造—架构设计
随着我互联网需求的压力逐渐增长,同时基础设施的不断完善,系统架构的微服务改造被正式提上日程.从微服务改造的目标架构蓝图设计开始讨论,架构组进行了整整两天的激烈讨论,明确了很多的业务边界.在此过程中我学 ...
- 谈一款MOBA类游戏的服务端架构设计
一.前言 <码神联盟>是一款为技术人做的开源情怀游戏,每一种编程语言都是一位英雄.客户端和服务端均使用C#开发,客户端使用Unity3D引擎,数据库使用MySQL.这个MOBA类游戏是笔者 ...
最新文章
- 用 C 语言开发一门编程语言 — 语法解析器
- mac brew 安装
- nimbus java_Java程序设置界面为Nimbus风格x
- 读取无线手柄数据_《宇宙机器人》×PS5手柄使用体验:登月级进化
- tomcat日志,用户以及启动时的一些问题
- mysql查询结果作为附件_python3+mysql查询数据并通过邮件群发excel附件
- Vue:axios中POST请求传参问题
- Caffe傻瓜系列(7):solver优化方法
- 新手抖音直播需要什么设备;看完让你少花冤枉钱。
- 系统分析师 VS 系统架构设计师,哪个证书含金量比较高?
- 好用的万年历API推荐
- java制作仿win7计算器之二完结篇
- 技术分享 | MySQL:caching_sha2_password 快速问答
- 图像分割论文 “RANet : Region Attention Network for Semantic Segmentation”
- 欧洲赢麻了!互联网巨头被迫拆围墙;git常用命令速查;Diffusion扩散模型实例教程集;高效C++机器学习库;前沿论文 | ShowMeAI资讯日报
- 解决发送push的emoji表情的实用方案
- 到底还有没有月薪3万以下的程序员?程序员工资真的这么高!
- 编写一个c语言 输入abc 输出最大数,C语言 输入abc,求最大数
- ping ip和端口
- 【论文】b站 - 读论文的麦小哲 学习笔记