是否在消息上打标?

场景

用户可以创建某个虚拟形象,将该形象发布到聊天平台,然后和该形象进行聊天。

用户创建虚拟形象的时候,开启备份功能,将自己的聊天记录备份到指定位置,也可以关闭开关,停止备份功能。

聊天功能和备份功能分属两个部门,在这个场景下,我们需要怎么处理?

消息打标.png

设计

目前有两个方案可以选择

  1. Chat服务投递消息的时候,将是否要备份的信息也放到消息里

  2. Chat服务不做特殊处理,备份服务主动从形象创作工厂获取形象信息,判断是否开启了备份

如果不想任何扩展的话,两个方案各有优缺点

方案一方案二
优点1.数据一致性好:数据是否需要处理,标记的很清楚1.独立:事情自己就做了,不需要依靠别的服务
缺点1.变动感知:Chat服务需要对该功能有所感知,如果功能有变化,也需要同步修改1. 一致性问题:即使实时获取形象信息,也有边界问题;2.如果要解决边界问题,形象设计工厂就要做版本,备份服务查询的时候,根据时间找指定版本的信息,逻辑会复杂很多
现在扩展一下,如果聊天APP觉得让每个用户都能独自控制自己的开关,方案二完全无法用了。总不能让备份服务去获取用户的配置吧。

所以打标的信息最好还是放到消息上。至于变动感知问题,Chat服务可以通过协调好规范,这样无论是增加新的功能还是改变原有的功能,chat服务都不需要感知,会自动透传出去。

总结

其实工作中能碰到很多有意思的设计点,仔细思考一下,能发现很多新的想法,也能对业务有更深的理解。

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

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

相关文章

双指针——移动零

题目 示例 算法原理 我们使用两个指针,cur扫描数组,如果nums[cur]为非0,dest,然后让nums[cur]与nums[dest]交换,从而实区间[0,dest]为非0,[dest1,cur]为0,[cur,numsSize-1]为未扫描 题目链接:28…

网络安全—PKI公钥基础设施

文章目录 前提知识散列函数非对称加密数字签名 PKI受信任的人RA注册CA颁发IKE数字签名认证(交换证书)密钥管理 前提知识 散列函数 散列也可以叫哈希函数,MD5、SHA-1、SHA-2、、(不管叫啥,都记得是同一个东西就行&…

uni-app设置地图显示

使用前需到**高德开放平台(https://lbs.amap.com/)**创建应用并申请Key 登录 高德开放平台,进入“控制台”,如果没有注册账号请先根据页面提示注册账号 打开 “应用管理” -> “我的应用”页面,点击“创建新应用”&…

ESP32入门六(读取引脚的模拟信号[4]:Arduino-ESP32 ADC API详解)

在之前的章节中,我们测试了读取引脚的模拟值,ADC功能在实际中用途十分广泛,在本章中,我们把一些常用的ADC函数做一个详细的说明。 ADC单次性模式 ADC单次模式API与Arduino的analogRead功能完全兼容。当您调用analogRead或analogR…

C语言——小细节和小知识7

一、逆序字符串 1、递归1 #include <stdio.h> #include <string.h>void ReverseArray(char *str) {char temp *str;//1int len (int)strlen(str);*str *(str len - 1);//2*(str len - 1) \0;//3if(strlen(str 1) > 2)//只要字符串还大于2&#xff0c;就…

【Spring实战】16 Profile

文章目录 1. 定义2. 使用2.1 定义 Profile2.2 激活 Profile 3. 演示3.1 properties文件3.2 打印日志3.3 启动服务&验证3.4 修改 active3.5 重启服务&验证 4. 应用场景4.1 数据库配置4.2 日志配置 5. 代码详细总结 Spring 框架提供了一种强大的机制&#xff0c;允许在不…

关于“Python”的核心知识点整理大全55

目录 注意 3. 模板 topic.html 4. 将显示所有主题的页面中的每个主题都设置为链接 topics.html 18.5 小结 第 19 章 用户账户 19.1 让用户能够输入数据 19.1.1 添加新主题 1. 用于添加主题的表单 forms.py 2. URL模式new_topic urls.py 3. 视图函数new_topic() …

51单片机中TCON, IE, PCON等寄存器的剖析

在单片机中&#xff0c;如何快速通过名字记忆IQ寄存器中每一个控制位的作用呢&#xff1f; IE&#xff08;interrupt enable&#xff09;寄存器中&#xff0c;都是中断的使能位置。 其中的EA&#xff08;enable all&#xff09;是总使能位&#xff0c;ES(enable serial)是串口…

excel统计分析——单因素方差分析

参考资料&#xff1a;生物统计学 方差分析是将总变异分解为组间变异的方差和组内变异的方差&#xff0c;并通过F检验推断处理效应是否显著的过程&#xff0c;而方差是通过平方和与自由度计算出来的&#xff0c;所以方差分析首先需要进行平方和与自由度的分解。具体步骤如下&…

简单FTP客户端软件开发——JavaFX开发FTP客户端

文章目录 导入外部包commons-net-3.10.0.jarJavaFX开发客户端 FTP客户端要求如下&#xff1a; 简单FTP客户端软件开发 网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。而文件传送协议FTP是因特网上使用得最广泛的文件传送协议。FTP使用…

yolov5目标检测神经网络——损失函数计算原理

前面已经写了4篇关于yolov5的文章&#xff0c;链接如下&#xff1a; 1、基于libtorch的yolov5目标检测网络实现——COCO数据集json标签文件解析 2、基于libtorch的yolov5目标检测网络实现(2)——网络结构实现 3、基于libtorch的yolov5目标检测网络实现(3)——Kmeans聚类获取anc…

OpenCV-13绘制多边形和文本

一、画多边形 使用API polylines绘制多边形。 polylines&#xff08;img&#xff0c; pts&#xff0c; isClose&#xff0c; color&#xff0c; thickness&#xff0c; lineType&#xff0c; shift&#xff09; 其中&#xff1a; pts&#xff1a;表示多边形的点集&#xff…