用户可以创建某个虚拟形象,将该形象发布到聊天平台,然后和该形象进行聊天。
用户创建虚拟形象的时候,开启备份功能,将自己的聊天记录备份到指定位置,也可以关闭开关,停止备份功能。
聊天功能和备份功能分属两个部门,在这个场景下,我们需要怎么处理?
目前有两个方案可以选择
Chat服务投递消息的时候,将是否要备份的信息也放到消息里
Chat服务不做特殊处理,备份服务主动从形象创作工厂获取形象信息,判断是否开启了备份
如果不想任何扩展的话,两个方案各有优缺点
方案一 | 方案二 | |
---|---|---|
优点 | 1.数据一致性好:数据是否需要处理,标记的很清楚 | 1.独立:事情自己就做了,不需要依靠别的服务 |
缺点 | 1.变动感知:Chat服务需要对该功能有所感知,如果功能有变化,也需要同步修改 | 1. 一致性问题:即使实时获取形象信息,也有边界问题;2.如果要解决边界问题,形象设计工厂就要做版本,备份服务查询的时候,根据时间找指定版本的信息,逻辑会复杂很多 |
现在扩展一下,如果聊天APP觉得让每个用户都能独自控制自己的开关,方案二完全无法用了。总不能让备份服务去获取用户的配置吧。 |
所以打标的信息最好还是放到消息上。至于变动感知问题,Chat服务可以通过协调好规范,这样无论是增加新的功能还是改变原有的功能,chat服务都不需要感知,会自动透传出去。
其实工作中能碰到很多有意思的设计点,仔细思考一下,能发现很多新的想法,也能对业务有更深的理解。