这篇文章不涉及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和该方面意向的也比较少,再加上又没有专门的中间层岗位。所以实际情况就是在负责好几个前端项目的同时,还要负责这些。

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

对中间层的一些浅略的思考相关推荐

  1. Doris浅略介绍 +部署+使用

    Doris 学习日常记录 (记录学习过程和遇到的坑,仅是个人学习使用) Doris浅略介绍 DORIS 组成 安装Doris步骤 由于IP地址变换,导致的 doris FE 重启失败问题 Doris ...

  2. 【Web安全】php://filter 的浅略底层分析

    新建一个 php 文件:a.php <?php $a = "a.txt"; include("php://filter/resource=" . $a); ...

  3. 浅略/逐行分析园区网接入交换机配置(以Ruijie交换机为例)

    以Ruijie交换机(二层)为例: 设备上电后的默认配置为: (注:该设备使用了del config.text清除过了配置) version RGOS 10.4(2b12)p6 Release(196 ...

  4. http1.1 和http2 和 ServiceWorker

    之前写的一篇水文,一次性上传300张图片引发的思考 在12.02上了热搜.关注者从8个涨到400多个,诚惶诚恐.感谢大家的支持和android小姐姐的漂亮眼影. 上热搜和涨粉丝不是本意,csdn只是记 ...

  5. 你有多久没有进行深度思考了?

    前言 近日在知乎无意中看到一篇「如何培养自己深度思考的习惯」的文章,里面的很多观点,我赞同不已. 其中一个观点我总结起来就是:"深度思考有两个方向:上推式思考,下推式思考.上推式思考的精髓就 ...

  6. ICLR2021 | 清华大学黄高团队:显存不够?不妨抛弃端到端训练

    智源导读:本文主要介绍清华大学黄高团队被ICLR2021接收的一篇文章:Revisiting Locally Supervised Learning: an Alternative to End-to ...

  7. ICLR 2021 | 显存不够?不妨抛弃端到端训练

    ©作者|王语霖 学校|清华大学自动化系博士生 研究方向|机器学习和计算机视觉 本文主要介绍我们被 ICLR 2021 接收的一篇文章,代码已经在 Github 上面开源. 论文标题: Revisiti ...

  8. 解决VS命令提示符 “Setting environment for using Microsoft Visual Studio. 此时不应有“系列错误

    一.起因 最近在玩Boost库.当然首先是要进行Boost库的安装和配置.于是浅墨Google了一下boost库的安装配置攻略,下载了最新版1.55的boost库,就愉悦地开始进行配置了. 当进行到第 ...

  9. 就这样进入了前端开发

    回顾 立夏,广州.今晚回来的路上,在学校的草坪上发现许多萤火虫,眨着眨着,点缀这个初夏的静夜.上次见到这番画像的时候,已经是一年前的事了.时钟转得飞快,眨眼自己也到了毕业的季节,总想要装一下文艺.无奈 ...

最新文章

  1. ORB特征提取算法分析与实现,算法分解
  2. 提高PHP编程效率的53个要点(转)
  3. java核心api_java核心API
  4. 几句话描述简单算法——排序与搜索
  5. 80211 发送速率选择算法分析
  6. 高晓松谈管理:自嘲总被员工管
  7. linux tar 命令
  8. D3 Collection
  9. jar启动报错:org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputExcept
  10. 如何系统地学习数据挖掘
  11. mysql 参数化分页_LR12 DataWizard从Mysql数据取参数化数据
  12. java编程之美(一)
  13. 邮件营销如何“爆增”潜在客户?
  14. win10如何深度清理c盘【系统天地】
  15. pycharm免安装版推荐
  16. java cropper_Image Cropper 的 JAVA 支持
  17. mobileu-vst声卡设置
  18. Android音频AAC硬编码
  19. linux su命令在哪里,Linux su命令
  20. oracle 如何查看监听,[转载]查看oracle监听器的状态及打开监听器服务

热门文章

  1. vue-public文件夹
  2. 从零开始建网站,新手小白建站必知的十大忠告
  3. 戏说前端之CSS编码规范
  4. 【PASCALVOC】The Pascal Visual Object Classes Challenge: A Retrospective
  5. BUGKU——秋名山/never give up
  6. Iphone X黑科技大揭秘,这几大摄像功能是要上天!
  7. 最是人间留不住,朱颜辞镜花辞树
  8. 解决Win10家庭版没有‘本地用户和组’问题
  9. YGG Founders‘ Coin 独家福利:Laura Shin 的“The Cryptopians”书本赠送
  10. java z字形扫描矩阵_Z字形扫描