公司有一个前端小组在做一些 BFF 的事情来对接业务,但是系统的划分好像出了点问题,BFF 层需要处理事务 比如:一个数据写入操作,会调用多个后端的服务来实现,BFF 要保证这个写入操作的原子性 我当时就惊呆了,这 TM 是 BFF ,这不是后端吗?
服务的划分我不懂,但是这个操作需要前端来做,至上在我看来是不对的,后端提供的写入服务就应该保证这些,若是前端来实现的话,其他业务要使用,是不是也要自己保证这个写入操作的原子性?
这里有没有大佬可以解惑下
1
zoharSoul 2021-12-09 11:27:50 +08:00
你想着你不是前端, 是全栈不就好了
|
2
libook 2021-12-09 11:37:56 +08:00 1
BFF 通常只对数据进行聚合和初加工,分布式事务确实也没见过在 BFF 里做的。
前端组长有责任出面跟后端小组商定架构划分规则,什么功能应该由前端来做,什么功能应该后端来做;前后端耦合严重的话,会极大提高维护成本。 |
3
Rwing 2021-12-09 12:41:32 +08:00
讲道理,BFF 肯定不应该有事务
|
4
FantaMole 2021-12-09 13:47:38 +08:00
分布式事务由后端来进行保证,BFF 负责数据的筛选裁剪和聚合。这个划分应该是适用于绝大多数情况。而且,BFF 这个服务,也应该由后端来写才是,毕竟名字是 for frontend 的 backend 。不过我倒是觉得有点厉害,你们公司前端都能整起后端业务了,BFF 层是用 Node.js 写的吗
|
5
wolfie 2021-12-09 14:01:38 +08:00
零几年的老项目见过一次,一个人写的前后端图省事。
去年一个菜鸡同事写过一次,自动生成一个 CRUD 以后,告诉前端 你先调用 A 再调用 B ....。 不是《能不能》在前端做的问题。 |
6
RandomJoke 2021-12-09 15:32:20 +08:00
保证原子和事务是两回事情。。
|
7
pengtdyd 2021-12-09 15:35:02 +08:00
很正常啊!垃圾的架构师必然就会有垃圾的项目。
|
8
JudyHal 2021-12-09 15:43:49 +08:00
没办法现在靠谱的后端太少了,很多事情只能前端来做
|
9
hongweiliuruige 2021-12-09 16:27:33 +08:00
如果写操作要调用好几个,,那还真得分布式事务,如果只调用一个那就后台实现了
|
11
defage 2021-12-09 17:55:39 +08:00
软件工程界没有什么问题是不能通过抽出一层来解决的,如果不行就再抽出一层。
所以你可以再加一个层级 BFF-backend ,瞬间解决,快去搞 =。= |
12
EscYezi 2021-12-09 18:04:52 +08:00 via iPhone
这是搞了个 nodejs 的中间层吗?
|
13
4771314 OP 就是使用 Node 做了一个 BFF
已经分工好了,事务的处理后端处理,BFF 不用关心这个 虽然不是我做的,但是一开始我还是很惊讶的,BFF 需要做分布式事务 |