对中间层的一些浅略的思考

对中间层的一些浅略的思考,第1张

中间层的一些浅略的思考

这篇文章不涉及code,勉强算是一篇观察文

1. 何为中间层

这里说的中间层,主要就是 横跨在java后台和前端的node中间层。 大概流程就是 前端向中间层发送请求,中间层转发整合请求到java后台。

中间层的主要工作是
① 转发请求,顺带做一些数据处理。
② 整合多个后台请求为一个请求,供前端试用
③ 抢几口后台饭碗里面的饭(如果你愿意)

2. 理论基础

之前在查询资料的时候,偶然发现,中间层也是一种设计模式:Facade模式(外观模式)

图片来源


图片来源

3. 缘何而起

这边,中间层项目是初期的时候我接手的。

大部分公司项目主管或技术总监一般都是后台,而对于中间层这种类似项目架构的技术选型,前端一般没有什么真正的话语权。

不巧的是,公司这边的技术总监是一个技术爱好者,爱好在项目中使用和实践新技术(非贬义)。虽然中间层在2020年算不得什么新技术,但是公司之前项目里面从来没有使用过中间层这种 (题外话:他前端,后台乃至运维都很666)。

我记得我问过他,为什么使用中间层,他说:“刚刚开始做这个项目的时候,和后台对业务数据结构上有很大争议, 所以做了个中间层缓和。再者这个项目不仅仅会调用一个java项目,也会调用其他java项目的接口。最后中间层可以移植,比如以后api换了一套,前端不用动code”。(可以看出大佬喜欢把项目主动权牢牢把握在自己手里,即便是写前端)。

4. 磕磕绊绊

项目刚刚接手的时候,会涉及到一些偏后台方面的知识:比如调用mongodb的api,比如批量更新mongodb数据,比如直连ActiveMQ,比如graphql接口,比如node转发文件流等等。所幸通过查询资料,询问同事,不断实践都一点点过来了。

5. 润物细无声

前端 + 中间层 + java后台这个组合,自从2020年6月份开始。已经跌跌撞撞运行了1.5年的时间了。除了前几次,刚刚部署到服务器上到时候出过一些问题,其他时候没有出过什么大问题。以至于到了被忽略的地步。

前不久,该项目相关的项目,要进行10w用户为期2天同时在线的使用。java同事在开会的时候说中间层可能会有瓶颈。大领导说怎么会有一个中间层,他“从来不知道”。

6. 思考 6.1 鸡肋和孤儿

虽说在负责中间层项目中,受益匪浅,好处也有不少。但是个人感觉在中小公司使用这种中间层的架构确实有点鸡肋(鄙人没去过大公司)。假设把中间层从java后台和前端直接拿开, 项目不会有较大影响。特别是对于我们公司这种一个人负责好几个项目的开发,好处可能更多一些。

在将近1.5年的维护中 ,给我的感觉就是中间层项目,无论在上级,还是在前端同事和java同事,乃至运维同事的眼中。都是一个可有可无的孤儿。哈哈

6.2 职责不明确

中间层这块有一点抢后台饭碗的意思,会导致职责模糊(可能大公司中间层会有明确职责)。

举例来说:在刚刚开始的时候,因为项目涉及到需要偶尔更新和node中间层关联的mongodb数据库的数据,所以我问了几个java同事,大家都不愿意负责这块。都觉得项目既然是前端负责,那和项目有关的应该都负责。

所以会经常出现“上一秒还在写css;下一秒就登上robot3t,update数据库数据。”的场景。

除此之外,一些比如本地化部署的时候购买mongodb这些也需要去提醒运维,java那边mongodb用的比较少,偶尔会“忘记”。在一些只能连vpn部署项目的机子上,export和import 数据。购买服务器后更新nginx中 node配置。调试因为node和java 在连接activemq的时候,因为协议不一样,所以端口不一样等等这些问题。都是需要前端负责解决的。

属于“干好被忽略,出现问题算bug”。并不是说这些工作前端不能做,而是术业有专攻。我自己也维护着一个小程序项目。从前到后到服务端部署,都是我一个人做的。 前端做后台工作,最大的问题之一就是缺乏安全观念。 比如前2年很多在线mongodb数据库 默认27017端口,默认无密码,被送了勒索大礼包,你说使用这些出现事故的开发者里面没有前端我是不相信的。再者更新数据需要提前备份这些小习惯等等。 弄不好会出现 “前端删了数据库”

6.3 调试不方便

比如线上出现了一个接口bug,后台是无法通过f12直接查看到真正的接口和参数的。正常的流程是前端登录xshell,查看pm2 logs日志。找出真正的参数和接口。在postman上测试真的有问题后。再发送给后台。

所以,每当接口报错,后台总是说:“让前端先看看”。 久而久之,在某些人的概念里面就变成了“前端问题很多了”。

且由于中间层连接了多个后台,甚至于自己读写mongodb。所以前期项目出现问题的时候,需要前端根据经验做一个错误分发。但是后期随着项目越来越稳定以及经验的增加,即使有问题也能比较快的找出根源。

6.4 后继无人?

之前一个前端同事,接过2天这个项目,但是感觉不情不愿的,哈哈。他那2天负责还只是转发接口部分的code。

招聘的时候,发现使用node和该方面意向的也比较少,再加上又没有专门的中间层岗位。所以实际情况就是在负责好几个前端项目的同时,还要负责这些。

不过后继无人,有一种“皇上不急太监急 ”的意思,毕竟“地球离了谁都转”, 且"跪着赚钱不寒碜"。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5691501.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存