电商后台系统中,消息系统是一个必不可少的功能模块,其核心是帮助后台人员及时了解业务消息,保障业务正常运行。本文作者以此为出发点,详细的概述了电商后台中的系统消息的设计思路,与大家分享。

后台系统是一个庞大的功能体系,及时的了解每个功能的使用状况,保障业务正常进行是每个系统的重点。通常系统内会开发大量的监控功能(可视化的报表和非可视化的报表)来对这些业务进行监控,同时通知相应的负责人以及时了解业务和服务器状况。

常见的一些监控功能,如账号异常(账号异地登录、账号多次密码输入错误)、运营通知(活动上架、活动下架)、订单异常(订单堆积、派单堆积)、服务器异常(服务器宕机、CPU过载)、脚本异常(脚本卡死、进程过多)等等。

今天带大家来设计一个系统消息通知模块,通过简单的设置,完成个性化的消息发送,并且减轻后期代码的维护工作。首先我们来看看常见消息发送功能是如何实现的以及它们的优缺点。

01 实现方式

1.1 直接触发
直接触发是将消息发送的逻辑和具体的业务代码逻辑写在一起,当满足条件时,触发消息发送功能。

  • 优点:开发简单,如果功能封装好后,代码粘过来,十分钟功能基本就能完成;消息发送比较及时,消息发送逻辑和业务逻辑在一起,满足条件就会立即触发。
  • 缺点:后期如果需要添加、编辑或删除接收人信息,就需要修改代码,维护起来比较麻烦。熟悉代码的人可能几分钟就搞定了,新人估计就得看半天代码了。

我参与过多个系统的开发,发现这么干的人还是挺多的。总结一下应该有以下几个原因:

  • 写起来简单,因为发送逻辑一般都是封装好的,只需要粘代码,修改一下发送参数就完事
  • 一般后台业务系统比较多,使用的编程语言比较多,各语言之间相互调用需要配置基础服务,成本太大
  • 消息通知通常属于系统基础功能,产品经理基本上不会去关注,也就不会去统一规划这个功能,技术就自己随意发挥了_
    1.2 消息池
    通过将所有消息先收集到一个消息池(如Mysql、Redis、Kafka等)中,然后再统一通过系统调度将消息发送给接收人。
  • 优点:功能模块化,可以做到统一管理,代码的调用可以更简洁,后期维护成本可以降到最低。
  • 缺点:消息会有延迟,消息池它是一个异步发送方式,消息的生产和发送是两个相互独立的过程;需要开发配置内容页面,开发量稍微大一点,但是后期能减轻更多的维护成本,我认为是非常值得的。

02 消息池模型

系统规划的目的就是让功能结构清晰,后期维护更轻松,所以上面第一种的实现方式就不讲了,主要讨论一下消息池功能是如何实现的。先来看一下消息池功能的模型图:

上面的模型主要分四层:

  • 消息来源:
    消息来源从开发角度来说,也称为消息生产者,它主要是指消息的生成方式和位置。在庞大的后台系统中,技术架构会划分出多个业务模块,各自的的业务模块都由不同的开发人员维护,不同的业务组使用的语言也各不相同,所以在完成相同功能时,书写方式也是各不相同,这个是没有办法统一的。
  • 消息池:
    主要作用是存储要发送内容信息,如消息内容,发送时间等。市面上常见的软件有Mysql、Redis、Kafka、RabbitMQ等。所以对消息数据的存储我们是可以做到统一的。
  • 消息分发:主要作用是获取待发送的消息列表,并根据已设置的接收人信息,找到具体的接收人并发送消息。技术上通常会启动相应的任务程序持续的监控消息池,当消息池中有需要发送的数据,就执行相应业务逻辑。
  • 接收人: 具体的消息接收人,接收人的接收方式有手机、邮箱或站内信。

03 功能分析

设计具体功能前先来分析一下消息通知都涉及哪些功能。
3.1 消息类型
在系统运行过程中,会涉及到许多业务功能的监控,如订单业务中,订单支付是否有未成功、订单分配是否有堆积的情况、派单功能是有堆积情况;再如运营业务中,商品运营活动已经设置上线时间,到点上线后需要及时通知运营人员上线是否成功,避免影响活动效果。

为了能够及时让维护人员了解问题,通常都对消息进行归类,如账号异常、服务器警告、数据库异常、运营通知、订单异常、脚本异常等。

3.2 紧急程度
系统中对于不同类型的消息,根据重要程度会划分出不同的级别。如系统每日报表任务,由于数据量比较大,要求并不是很高,延迟一天通常都可以接受, 所以都是晚上3 ~ 5点之间由脚本自动运行导出后放在服务器上,第二天早上8点发系统通知,再由需求人自行导出就可以了,这类消息属于一般程度;

但是对于服务器宕机这种情况,就必须立即通知负责人进行处理,以免给企业带来更多的损失,这类消息属于紧急程度。

3.3 接收方式
消息接收方式通常就三种:站内信、手机短信、邮箱。不同的接收方式作用有所不同:

  • 站内信:站内信是系统内部功能,研发人员可以随意设置,消息内容可以写的比较详细;但是时效性比较差,取决于接收人什么时候登陆系统。
  • 邮箱:消息内容可以写的比较详细,时效性也比较差,但是邮件确实必发的功能,因为可以作为尽职调查的凭证。
  • 手机短信:短信功能一般都由第三放平台提供,所以发送内容长度有所限制,内容需要简洁,最大特点就是及时。
    3.4 发送时间
    对于系统中的消息,比较紧急的如订单支付异常、数据库宕机异常它们需要及时发送,还有一些不重要的,比如上面说的各种任务报表,晚上3、4点生成好后,系统也不会发送消息,一般会设置好时间,等到早上8、9点才会开始发送通知,还有一些任务需要每个几小时就得发送一次。
    3.5 唯一标示
    唯一标示主要用于代码开发。在测试环境和正式生产环境由于测试导致数据库ID不一致,所以开发时没有办法通过对应的ID调用消息,就需要设计一个唯一标识符供开发人员使用,一般标示符命名根据具体的业务点来命名。

3.6 消息接收人
由于员工岗位的变动,后台需要设置相应的接收人维护界面,可以自由的添加、删除多个消息接收人。

04 原型设计

系统消息基本就上面这些功能,有需要的可以自己再扩展。下面给出部分原型设计图:
功能整理:

消息设置列表:

消息表单设置页:

接收人列表:

05 使用方法

功能我们设计好了,如何在业务中使用,我简单说一下:

  1. 需要各业务平台封装消息池调用功能,并开放一个接口,用来创建具体消息内容
  2. 在需要发送消息的业务里,调用上面的消息创建接口
  3. 消息模块启动任务(如crontab、监听)监控消息池,如果有待发送消息,获取并组织消息内容,完成消息发送。

其中1、2两步需要在各自业务平台完成,第1步封装成公共功能,只用开发一次,第2步根据业务需要自行调用,就一行代码,是不是很简洁。剩余所有的功能都集中在消息模块,维护起来就比较方便了。

以上就是系统消息模块的设计,欢迎下方留言交流!

电商后台设计:系统消息相关推荐

  1. 电商后台设计:权限设计

    文章结合具体业务场景对电商后台设计中的系统权限设计的业务逻辑展开了梳理说明,并对相关问题展开了分析,希望通过此文能够加深你对电商后台设计的认识. 在说权限设计前我们先来看个现实中的实例,大家在电影里面 ...

  2. 电商后台设计:品类管理

    商品作为整个电商平台中的核心,系统中所有的业务都需要根据它来展开,所以设计一套易用.可扩展的商品模块是非常重要的.文章从品类管理的基本业务出发,对具体的功能模块展开了梳理说明,希望通过此文能够加深你对 ...

  3. 【电商】电商后台设计—库存模块

    电商后台设计,是作为产品经理必学的一项技能.本文从三个方面来对电商后台设计的库存模块进行相应的介绍,期待能够与你交流学习. 一.库存基本概念 1. 库存定义 首先我们来了解一下库存的基本概念,狭义上, ...

  4. 【电商】电商后台设计—促销模块(上)

    做电商,离不开促销.从前火热的线下促销转移到线上又是另一番风味,那么线上电商促销活动该怎么做,又该如何吸引人呢? 各位小伙伴好,本文是电商后台设计系列文章的第三篇,促销模块.关于商品和库存模块的内容可 ...

  5. 电商后台设计:商品维护

    编辑导语:商品在整个电商系统中处于核心位置,因此商品维护对于电商后台设计的重要性不言而喻,本文作者以此为出发点,和我们聊一聊在电商后台设计中关于商品维护的那些事. 对于电商系统来说,商品模块的维护可以 ...

  6. 【电商】电商后台设计—促销模块(下)

    在电商运营中,促销是比较常见的一种形式.让我们一起来了解游戏啊电商后台的促销模块是怎么设计的吧,也希望能给各位小伙伴带来干货知识,助力成长. 各位小伙伴好,本文是电商后台设计系列文章的第四篇,促销模块 ...

  7. 【电商】电商后台设计—优惠券

    优惠券是每一个电商平台必备的模块,是吸引和留住用户的重要部分.让我们一起来了解电商平台的优惠券模块是怎么设计的吧,也希望能给各位小伙伴带来干货知识,助力成长. 各位小伙伴好,本文是电商后台设计系列文章 ...

  8. 电商后台设计:属性管理

    编辑导语:电商平台上出售着各种各样的商品,买家通过读取这些商品的属性介绍才能了解它的信息,确定自己需不需要.适不适合.电商平台中商品数量庞大,各商品的属性又千差万别,所以设计一套可复用的属性管理功能就 ...

  9. 实战:读懂这一篇掌握电商后台设计

    转载:原文根源实在是找不到... 本文为作者对平时工作的思考总结,包括商品中心的设计.订单拆单的实现.促销活动及优惠券的设计使用等,对相关从业者,有借鉴意义.欢迎留言交流讨论. 本文包括以下几个部分: ...

最新文章

  1. Matlab中寻找二值图像最大联通域的算法
  2. Linux开关机命令:shutdown,reboot,halt,init之间的区别
  3. onSaveInstanceState在系统之后可能会杀掉Activity时调用,onStop之前
  4. c语言实参和形参占用存储单元_必须知道的C语言知识细节:函数形参和实参的区别...
  5. 科研绘图工具软件_如何在Windows 10 Mail中使用绘图工具
  6. 统计csv词频_分词词频统计
  7. sysbench的框架实现介绍
  8. 【前端小小白】—每日5道面试题打卡(十五)
  9. Hibernate中Cascade和Inverse
  10. 大学生php实训心得1500_通知 | 关于举办全国第五届暨河南省第一届大学生国际学术研讨会通知...
  11. C++ 读取TXT文件
  12. 74HC20中WR讲解
  13. 关于产品的一些思考——八千里网络之谁叫我起床
  14. 8年开发,连登陆接口都写这么烂...
  15. 极客时间专栏内容的个人分析
  16. 二维码制作软件那个好用?
  17. 微信的根服务器在哪国,为何很多人把微信上的国家设置成安道尔?安道尔在哪里?...
  18. 笨方法学python3怎么样_笨办法学Python3
  19. 创建电子商务网站的七个步骤_新电子商务需要避免的7个错误
  20. C语言冒泡排序的优化(图解+代码)

热门文章

  1. 在阿里云申请个人免费SSL证书
  2. 多模态交互在,数智化营销服中的技术实践
  3. weblogic漏洞
  4. 沧浪之水清兮,可以濯吾缨;沧浪之水浊兮,可以濯吾足
  5. 在mac上用VMWare虚拟机装Ubuntu
  6. 前端CSS代码格式化、JavaScript代码格式化函数
  7. 【CSS】画一个扇形
  8. centos 7 安装时忘记打开网络导致开机网络无法自启动解决办法
  9. 抓取新浪微博好友昵称和性别
  10. Unity3D游戏开发案例学习——Tanks!(基本完结)