加入收藏 | 设为首页 | 会员中心 | 我要投稿 宣城站长网 (https://www.0563zz.cn/)- 数据湖、行业智能、边缘计算、开发、备份!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

优化 Docker 镜像大小

发布时间:2021-02-15 15:49:33 所属栏目:外闻 来源:互联网
导读:浏览器端的 Web 应用、iOS 原生 App、安卓端原生 App、微信小程序等等,可能只是开发其中的一部分产品,但是除了 web 应用能够使用传统的 MVC 模式开发外,其他的都无法使用该模式进行开发,像原生 App 或者微信小程序都是通过调用 RESTful api 的方式与后端

浏览器端的 Web 应用、iOS 原生 App、安卓端原生 App、微信小程序等等,可能只是开发其中的一部分产品,但是除了 web 应用能够使用传统的 MVC 模式开发外,其他的都无法使用该模式进行开发,像原生 App 或者微信小程序都是通过调用 RESTful api 的方式与后端进行数据交互。

随着互联网技术的发展,更多的技术框架被提了出来,其中最革命性的就是前后端分离概念的提出。

什么是前后端分离

何为前后端分离,我认为应该从以下几个方面来理解。

前后端分离是一种项目开发模式

当业务变得越来越复杂或者产品线越来越多,原有的开发模式已经无法满足业务需求,当端上的产品越来越多,展现层的变化越来越快、越来越多,此时就应该进行前后端分离分层抽象,简化数据获取过程,比如目前比较常用的就是前端人员自行实现跳转逻辑和页面交互,后端只负责提供接口数据,二者之间通过调用 RESTful api 的方式来进行数据交互,如下图所示:

 

同时,项目开发在进行模块分层时也会划分为三层:控制层,业务层,持久层。控制层负责接收参数,调用相关业务层,封装数据,以及路由并将数据渲染到 JSP 页面,然后在 JSP 页面中将后台的数据展现出来,相信大家对这种开发模式都十分熟悉,不管是企业开发或者是个人项目的搭建,这种开发模式都是大家的首选,不过,随着开发团队的扩大和项目架构的不断演进,这套开发模式渐渐有些力不从心。

接下来,我们来分析下这套开发模式的痛点。

痛点一:JSP 效率问题

首先,JSP 必须要在 Servlet 容器中运行(例如 Tomcat,jetty 等),在请求 JSP 时也需要进行一次编译过程,最后被译成 Java 类和 class 文件,这些都会占用 PermGen 空间,同时也需要一个新的类加载器加载,JSP 技术与 Java 语言和 Servlet 有强关联,在解耦上无法与模板引擎或者纯 html 页面相媲美。其次每次请求 JSP 后得到的响应都是 Servlet 通过输出流输出的 html 页面,效率上也没有直接使用 html 高。由于 JSP 与 Servlet 容器的强关联,在项目优化时也无法直接使用 Nginx 作为 JSP 的 web 服务器,性能提升不高。

痛点二:人员分工不明

在这种开发模式下的工作流程通常是:设计人员给出页面原型设计后,前端工程师只负责将设计图切成 html 页面,之后则需要由后端开发工程师来将 html 转为 JSP 页面进行逻辑处理和数据展示。在这种工作模式下,人为出错率较高,后端开发人员任务更重,修改问题时需要双方协同开发,效率低下,一旦出现问题后,前端开发人员面对的是充满标签和表达式的 JSP 页面,后端人员在面对样式或者交互的问题时本就造诣不高的前端技术也会捉襟见肘。

在某些紧急情况下也会出现前端人员调试后端代码,后端开发人员调试前端代码这些让人捧腹的现象,分工不明确,且沟通成本大,一旦某些功能需要返工则需要前后端开发人员,这种情况下,对于前后端人员的后期技术成长也不利,后端追求的是高并发、高可用、高性能、安全、架构优化等,前端追求的是模块化、组件整合、速度流畅、兼容性、用户体验等等,但是在 MVC 这种开发模式下显然会对这些技术人员都有一定的掣肘。

痛点三:不利于项目迭代

项目初期,为了快速上线应用,选择使用这种开发模式来进行 Java Web 项目的开发是非常正确的选择,此时流量不大,用户量也不高,并不会有非常苛刻的性能要求,但是随着项目的不断成长,用户量和请求压力也会不断扩大,对于互联网项目的性能要求是越来越高,如果此时的前后端模块依旧耦合在一起是非常不利于后续扩展的。举例说明一下,为了提高负载能力,我们会选择做集群来分担单个应用的压力,但是模块的耦合会使得性能的优化空间越来越低,因为单个项目会越来越大,不进行合理的拆分无法做到最好的优化,又或者在发版部署上线的时候,明明只改了后端的代码,前端也需要重新发布,或者明明只改了部分页面或者部分样式,后端代码也需要一起发布上线,这些都是耦合较严重时常见的不良现象,因此原始的前后端耦合在一起的架构模式已经逐渐不能满足项目的演进方向,需要需找一种解耦的方式替代当前的开发模式。

痛点四:不满足业务需求

随着公司业务的不断发展,仅仅只有浏览器端的 Web 应用已经逐渐显得有些不够用了,目前又是移动互联网急剧增长的时代,手机端的原生 App 应用已经非常成熟,随着 App 软件的大量普及越来越多的企业也加入到 App 软件开发当中来,为了尽可能的抢占商机和提升用户体验,你所在的公司可能也不会把所有的开发资源都放在 web 应用上,而是多端应用同时开发,此时公司的业务线可能就是如下的几种或者其中一部分:


(编辑:宣城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读