【解决方案】Java 互联网项目中消息通知系统的设计与实现

前言

消息通知系统(notification-system)作为一个独立的微服务,完整地负责了 App 端内所有消息通知相关的后端功能实现。该系统既需要与文章系统、订单系统、会员系统等相关联,也需要和其它业务系统相关联,是一个偏底层的通用服务系统。

App 端内的消息通知类型常见有这几项:评论通知、点赞通知、收藏通知、订单通知、活动通知、个人中心相关通知等。该系统在可拓展性、高性能、较高可用性、数据一致性等方面有较高要求,最终目的是提升用户粘性、加强 App 与用户的互动、支撑核心业务的发展。

文章的(上)篇将从需求分析、数据模型设计、关键流程设计这 3 部分来说明,(下)篇将从技术选型、后端接口设计、关键逻辑实现这 3 部分来进行说明。


一、需求分析

主要从发送通知、撤回通知、通知消息数、通知消息列表这 4 个子需求来展开。

1.1发送通知

  • 该操作一般由业务系统发出通知,业务系统包括了 App 端和管理后台这两种;

  • App 内的发起的通知一般由 App 用户即会员(member)自己来操作,如:在评论区回复评论,则其父评论的发布者需要收到评论回复通知;

  • 管理后台发出的通知一般是管理员将某种类型(文本or图片等)的消息发送至 App 用户,如:某个活动的运营者在后台给 App 用户发送获奖通知。

1.2撤回通知

  • 这是一个可选操作,一般也是由业务系统来操作,具体会由管理后台来完成,在 App 端一般较少有此类操作;

  • 管理后台可以针对已经发送成功的通知进行单条撤回或者批量撤回,App 用户的通知列表和未读消息数将会随之变化。

1.3通知消息数

  • 在App ”我的“模块,新增消息通知 icon,建议命名为”通知“;

  • 当有新通知时显示 x 条新消息(红色数字),显示数字为该用户所有未读新消息数之和;

  • 有新增一条未读消息时数量+1,撤回一条未读消息数量-1;

  • 未读消息数需要与消息通知列表的未读消息数一致。

1.4通知消息列表

  • 点击 “通知” icon后进入消息通知列表,根据通知类型分为不同的 tab 页;

  • 列表展示该用户收到的所有消息通知,并按通知时间倒序展示;

  • 新消息用红点标识,查看后退出的状态标记为已读,即红点会消失;

  • 点击具体的消息,如果是链接,则支持跳转到对应地址;如果是图文,则支持查看;如果是文章,则支持跳转查看。


二、数据模型设计

该系统的数据模型分为两部分:数据库与缓存。其中对数据库的概念模型(E-R图)和逻辑模型(表设计)进行展开,对缓存的数据结构在关键逻辑实现章节会进一步说明。

2.1概念模型

该系统目前设计为3张表,命名为:notification(通知记录表)、notification_config(通知配置表)、external_sys(外部系统表)。

概念模型使用 E-R 图来表示,其中 notification 与 notification_config 为1对多的关系,且下面为了便于描述,只给出关键字段,其它字段可以作为冗余。

E-R图 1

external_sys 为单独记录外部业务系统的信息,用于业务系统调用通知系统接口时的身份校验:

E-R图 2

2.2逻辑模型

下面只给出关键字段的表设计,其它字段可以作为冗余:

notification 表设计

notification_cofig 表设计

external_sys 表设计


三、关键流程设计

下面是业务简单拆分后的泳道图,基于此图再做关键流程的设计。

业务流程泳道图

下面通过一个简单的时序图(不含撤回)来进行关键流程的拆解:

业务流程时序图

本篇小结

到这里Java 互联网项目中消息通知系统的设计与实现(上)篇就暂告一段落了,剩下的部分包括技术选型、接口设计、关键逻辑设计会在下篇来进行说明。

系统设计的文章都是通过大量的实践与验证,最后才能下笔成文分享给大家的。如果文章有不足和错误,还请大家指正。或者你有其它想说的,也欢迎大家在评论区里交流!

文章转载自:CodeBlogMan

原文链接:https://www.cnblogs.com/CodeBlogMan/p/18184987

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/30028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker-compose设置永久启动、自动重启

步骤一 找到 docker-compose.yml 文件 步骤二 vim 打开文件 找到 image: PS:就是为了对齐格式 步骤三 在其下方添加: restart: always而后保存即可

注意力机制简介

为了减少计算复杂度,通过借鉴生物神经网络的一些机制,我们引入了局部连接、权重共享以及汇聚操作来简化神经网络结构。神经网络中可以存储的信息量称为网络容量。一般来讲,利用一组神经元来存储信息的容量和神经元的数量以及网络的复杂度成正…

表面声波滤波器——工艺 (5)

制作工艺流程 声表面波器件制作采用半导体集成电路的平面工艺,首先在压电衬底上通过光刻、镀膜、剥离或刻蚀等工艺制备出叉指换能器,然后经过划片、粘片、压丝、封焊等后续封装工艺得到最后的器件。 整个工艺过程中需要操作使用各种机台 清洗机光刻机涂胶显影台全…

专业和学校到底怎么选,兴趣和知名度到底哪个重要?

前言 2024高考已经落下帷幕,再过不久就到了激动人心的查分和填报志愿的时刻,在那天到来,小伙伴们就要根据自己的分数选取院校和专业,接下来我就以参加22年(破防年)河南高考的大二生来讲述一下我自己对于如何选取院校和专业的看法以…

香港电讯高可用网络助力企业变革金融计算

客户背景 客户是一家金融行业知名的量化私募对冲基金公司,专注于股票、期权、期货、债券等主要投资市场,在量化私募管理深耕多年,目前资管规模已达数百亿级,在国内多个城市均设有办公地点。 客户需求 由于客户业务倚重量化技术…

从“野人饭”走红,探索品牌户外化营销趋势丨小红书内容分析

wildeat,户外是人的天性的回归 近来,“wildeat(户外野吃)”的风潮在小红书逐渐兴起。越来越多的人选择到户外吃一顿,做一次“野人”,主打一个只要氛围到了,就地开饭,不愁吃什么&…

屏蔽房是做什么用的?为什么需要定期检测?

屏蔽房对于不了解的人来说,可能光看名字不知道是做什么的,但是对于一些企业或者机构,却是再熟悉不过的了。和名字一样,屏蔽房是对空间内的信号以及一些外界环境条件进行隔绝,在一些有特殊要求的企业机构中,…

睿治数据治理平台焕新升级,推出全新建模与调度平台

在数据治理的浩瀚征途中,企业常常面临着数据冗余如同连绵山峦,使得关键信息的获取变得困难重重;在数据检索的海洋中,有时迷失方向,消耗大量时间精力,严重影响了运营效率;特别是在处理大规模数据…

assertJ-db 科普

前言 今日我们看看 java 大名鼎鼎的 assertj 是怎么做断言的 数据库断言 在实际的测试中我们总是跟业务打交道的。跟业务打交道一般很难避免验证数据库中的东西。尤其在接口测试中,一个常见的例子是你测试一个下单的接口。 接口返回可能就是成功过或者失败。你无…

安装 Fedora CoreOS 操作系统

首发日期 2024-06-16, 以下为原文内容: 有一台吃灰几年的 e5-26v3 古老机器, 最近翻出来用一下. 首先从安装操作系统开始. 目录 1 FCOS 简介2 安装过程 2.1 下载 iso 镜像文件并制作安装 U 盘2.2 编写安装配置文件2.3 编译安装配置文件2.4 从 U 盘启动并安装 3 SSH 连接并测试…

直播平台美颜技术分析:视频美颜SDK功能实现原理

本篇文章,笔者将深入分析视频美颜SDK的功能实现原理,探讨其在直播平台中的应用。 一、视频美颜技术概述 通过这些功能,用户可以在直播过程中呈现更加理想的自己,从而提高观众的观看体验和互动积极性。 二、视频美颜SDK的功能 1…

不“卷”低价,品牌如何让客户愿意“留下”?

天猫取消预售制度,满减力度大于往年,京东直接将“又便宜又好”定为大促主题。今年的618,离不开两大关键词:拼低价 和 回归用户。 价格“内卷”,消费者可以花更少的钱买到商品,但对商家来说,意味…

6月19日(周三)A股行情总结:A股震荡收跌,恒生科技指数大涨3%,10年期国债期货转涨续创新高

内容提要 车路云概念延续昨日涨势,华铭智能20CM 3连板。贵金属及PEEK材料概念全日走强;港股有色金属及能源股走强,紫金矿业涨超3%,中石油涨超3%。国债期货午后全线转涨,10年期主力合约涨0.05%报104.925元,…

6.17继承

面向对象的特征:封装,继承,多态 使用背景:比如说在动物类底下可以有带毛的动物,带毛的动物符合所有的动物的特征,只是在这个基础上再继续添加一些特征 命名:原有类型称为“基类”或“父类”&a…

计算机网络(1) OSI七层模型与TCP/IP四层模型

一.OSI七层模型 OSI 七层模型是国际标准化组织ISO提出的一个网络分层模型,它的目的是使各种不同的计算机和网络在世界范围内按照相同的标准框架实现互联。OSI 模型把网络通信的工作分为 7 层,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、…

类加载器、反射、注解

1、类加载器 1.1类加载器作用 负责将.class文件(存储的物理文件)加载在到内存中。 1.2类加载的过程 类加载时机 创建类的实例(对象)调用类的类方法访问类或者接口的类变量,或者为该类变量赋值使用反射方式来强制创建…

Java学习 (一) 环境安装及入门程序

一、安装java环境 1、获取软件包 https://www.oracle.com/java/technologies/downloads/ .exe 文件一路装过去就行,最好别装c盘 ,我这里演示的时候是云主机只有C盘 2、配置环境变量 我的电脑--右键属性--高级系统设置--环境变量 在环境变量中添加如下配…

数字孪生涉及到的9大技术栈,都是难啃骨头呀。

数字孪生涉及到多个技术栈,包括但不限于以下几个方面: 数据采集和传感器技术: 数字孪生需要实时获取物理世界的数据,因此需要使用各种传感器技术(如温度传感器、压力传感器、运动传感器等)来采集数据&…

【猫狗分类】Pytorch VGG16 实现猫狗分类1-数据清洗+制作标签文件

Pytorch 猫狗分类 用Pytorch框架,实现分类问题,好像是学习了一些基础知识后的一个小项目阶段,通过这个分类问题,可以知道整个pytorch的工作流程是什么,会了一个分类,那就可以解决其他的分类问题&#xff0…

第6章 设备驱动程序(3)

目录 6.5 块设备操作 6.5.1 块设备的表示 6.5.2 数据结构 6.5.3 向系统添加磁盘和分区 6.5.4 打开块设备文件 本专栏文章将有70篇左右,欢迎关注,查看后续文章。 6.5 块设备操作 特点: 随机访问任意位置。 固定块大小的传输。 块设备在内…