V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shenX
V2EX  ›  程序员

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

  •  1
     
  •   shenX · 2021-09-03 17:38:57 +08:00 · 1701 次点击
    这是一个创建于 937 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    10 条回复    2021-09-07 14:16:45 +08:00
    golangLover
        1
    golangLover  
       2021-09-04 11:13:50 +08:00
    “第三方服务都是直接由业务端直接接入。"
    还是没看懂这句话,你意思是单体应用提供了 Api,然后让其他人直接连上去?
    shenX
        2
    shenX  
    OP
       2021-09-04 13:46:45 +08:00
    @golangLover 就是以前的第三方服务是直接由单体应用接入。这次的内容审核服务由于不需要实时反馈结果给到用户,想要新增一个服务去处理这一块的逻辑
    shadowfish0
        3
    shadowfish0  
       2021-09-06 00:20:34 +08:00
    不知道是不是你的意思,像我这里搞邮件发送,或者循环调用微信消息提醒接口,直接把相应的代码写函数计算里,然后程序用函数计算 SDK 调用下函数计算就行了
    EscYezi
        4
    EscYezi  
       2021-09-06 02:20:59 +08:00 via iPhone
    新服务接入内容审核,老服务发 mq 触发新服务执行任务
    shenX
        5
    shenX  
    OP
       2021-09-06 09:35:50 +08:00
    @shadowfish0 不是相同的场景。举个例子,用户发布了一个帖子,单体应用新增一条待审核状态的帖子记录即可,不用关心帖子什么时候通过审核。我想要新开一个服务专门去处理审核的流程
    shenX
        6
    shenX  
    OP
       2021-09-06 09:51:36 +08:00
    @EscYezi 我也是这样想。想请教一下这种是叫什么模式吗?需要注意的点有哪些,想找一些相关资料参考。
    tangtj
        7
    tangtj  
       2021-09-06 11:33:47 +08:00
    可以起个新的项目,用来监听原项目发布的事件。
    EscYezi
        8
    EscYezi  
       2021-09-06 12:51:52 +08:00 via iPhone
    @shenX 根据个人的浅薄经验,主要是 mq 消息消费的问题(丢失 /重复消费 /消费失败)丢失问题可以靠中间件,重复消费可能要做幂等,消费失败怎么处理根据业务需求定。模式类似于发布订阅模型。
    siweipancc
        9
    siweipancc  
       2021-09-06 18:16:49 +08:00 via iPhone
    单体需要做到发布订阅可以做 eventbus 的实现,也可以上 springboot publisher,不必上重武器(指 mq )。
    shenX
        10
    shenX  
    OP
       2021-09-07 14:16:45 +08:00
    @EscYezi 了解,目前打算使用 redis 队列来实现,丢失 /消费失败等问题由服务自行处理
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3569 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 04:58 · PVG 12:58 · LAX 21:58 · JFK 00:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.