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

分布式事务 BFF?惊到我了

  •  
  •   4771314 · 2021-12-09 11:23:19 +08:00 · 3705 次点击
    这是一个创建于 840 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司有一个前端小组在做一些 BFF 的事情来对接业务,但是系统的划分好像出了点问题,BFF 层需要处理事务 比如:一个数据写入操作,会调用多个后端的服务来实现,BFF 要保证这个写入操作的原子性 我当时就惊呆了,这 TM 是 BFF ,这不是后端吗?

    服务的划分我不懂,但是这个操作需要前端来做,至上在我看来是不对的,后端提供的写入服务就应该保证这些,若是前端来实现的话,其他业务要使用,是不是也要自己保证这个写入操作的原子性?

    这里有没有大佬可以解惑下

    13 条回复    2021-12-10 17:30:33 +08:00
    zoharSoul
        1
    zoharSoul  
       2021-12-09 11:27:50 +08:00
    你想着你不是前端, 是全栈不就好了
    libook
        2
    libook  
       2021-12-09 11:37:56 +08:00   ❤️ 1
    BFF 通常只对数据进行聚合和初加工,分布式事务确实也没见过在 BFF 里做的。

    前端组长有责任出面跟后端小组商定架构划分规则,什么功能应该由前端来做,什么功能应该后端来做;前后端耦合严重的话,会极大提高维护成本。
    Rwing
        3
    Rwing  
       2021-12-09 12:41:32 +08:00
    讲道理,BFF 肯定不应该有事务
    FantaMole
        4
    FantaMole  
       2021-12-09 13:47:38 +08:00
    分布式事务由后端来进行保证,BFF 负责数据的筛选裁剪和聚合。这个划分应该是适用于绝大多数情况。而且,BFF 这个服务,也应该由后端来写才是,毕竟名字是 for frontend 的 backend 。不过我倒是觉得有点厉害,你们公司前端都能整起后端业务了,BFF 层是用 Node.js 写的吗
    wolfie
        5
    wolfie  
       2021-12-09 14:01:38 +08:00
    零几年的老项目见过一次,一个人写的前后端图省事。
    去年一个菜鸡同事写过一次,自动生成一个 CRUD 以后,告诉前端 你先调用 A 再调用 B ....。

    不是《能不能》在前端做的问题。
    jokefaker
        6
    jokefaker  
       2021-12-09 15:32:20 +08:00
    保证原子和事务是两回事情。。
    pengtdyd
        7
    pengtdyd  
       2021-12-09 15:35:02 +08:00
    很正常啊!垃圾的架构师必然就会有垃圾的项目。
    JudyHal
        8
    JudyHal  
       2021-12-09 15:43:49 +08:00
    没办法现在靠谱的后端太少了,很多事情只能前端来做
    hongweiliuruige
        9
    hongweiliuruige  
       2021-12-09 16:27:33 +08:00
    如果写操作要调用好几个,,那还真得分布式事务,如果只调用一个那就后台实现了
    blessyou
        10
    blessyou  
       2021-12-09 17:44:30 +08:00
    @wolfie #5 接手的一个项目里就有这个操作 我读了半天前后端代码 把操作逻辑合并到数据库里了
    defage
        11
    defage  
       2021-12-09 17:55:39 +08:00
    软件工程界没有什么问题是不能通过抽出一层来解决的,如果不行就再抽出一层。
    所以你可以再加一个层级 BFF-backend ,瞬间解决,快去搞 =。=
    EscYezi
        12
    EscYezi  
       2021-12-09 18:04:52 +08:00 via iPhone
    这是搞了个 nodejs 的中间层吗?
    4771314
        13
    4771314  
    OP
       2021-12-10 17:30:33 +08:00
    就是使用 Node 做了一个 BFF
    已经分工好了,事务的处理后端处理,BFF 不用关心这个
    虽然不是我做的,但是一开始我还是很惊讶的,BFF 需要做分布式事务
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3240 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:41 · PVG 19:41 · LAX 04:41 · JFK 07:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.