单体应用中,如何将服务剥离业务?

2021-09-03 17:38:57 +08:00
 shenX

目前的项目是一个单体应用,由于用户基数不大,因此很多第三方服务都是直接由业务端直接接入。

现在要接入内容审核的服务,考虑到不需要实时处理审核结果和减轻业务端的压力,想要将其抽离业务端,想请教各位有无比较好的实现方案?

1848 次点击
所在节点    程序员
10 条回复
golangLover
2021-09-04 11:13:50 +08:00
“第三方服务都是直接由业务端直接接入。"
还是没看懂这句话,你意思是单体应用提供了 Api,然后让其他人直接连上去?
shenX
2021-09-04 13:46:45 +08:00
@golangLover 就是以前的第三方服务是直接由单体应用接入。这次的内容审核服务由于不需要实时反馈结果给到用户,想要新增一个服务去处理这一块的逻辑
shadowfish0
2021-09-06 00:20:34 +08:00
不知道是不是你的意思,像我这里搞邮件发送,或者循环调用微信消息提醒接口,直接把相应的代码写函数计算里,然后程序用函数计算 SDK 调用下函数计算就行了
EscYezi
2021-09-06 02:20:59 +08:00
新服务接入内容审核,老服务发 mq 触发新服务执行任务
shenX
2021-09-06 09:35:50 +08:00
@shadowfish0 不是相同的场景。举个例子,用户发布了一个帖子,单体应用新增一条待审核状态的帖子记录即可,不用关心帖子什么时候通过审核。我想要新开一个服务专门去处理审核的流程
shenX
2021-09-06 09:51:36 +08:00
@EscYezi 我也是这样想。想请教一下这种是叫什么模式吗?需要注意的点有哪些,想找一些相关资料参考。
tangtj
2021-09-06 11:33:47 +08:00
可以起个新的项目,用来监听原项目发布的事件。
EscYezi
2021-09-06 12:51:52 +08:00
@shenX 根据个人的浅薄经验,主要是 mq 消息消费的问题(丢失 /重复消费 /消费失败)丢失问题可以靠中间件,重复消费可能要做幂等,消费失败怎么处理根据业务需求定。模式类似于发布订阅模型。
siweipancc
2021-09-06 18:16:49 +08:00
单体需要做到发布订阅可以做 eventbus 的实现,也可以上 springboot publisher,不必上重武器(指 mq )。
shenX
2021-09-07 14:16:45 +08:00
@EscYezi 了解,目前打算使用 redis 队列来实现,丢失 /消费失败等问题由服务自行处理

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/799723

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX