【WEB网站】JerryServer-前端的Tomcat

Web讲师-李家靖 发布于 2018/09/30 19:30
查看:127|回复:0

b3adb67eabe12f675bf6bdbd5edbb224002.png

1、缘由

以Java web举例,现在的网站系统开发模式,对于web端和服务端的数据交互以及页面渲染,无外乎两种:

  1. 第一种是交给后端处理,Jsp,Freemark模板引擎之流,这种开发模式需要前端人员做好静态页面交给后端去处理一些其它工作。这种开发模式到如今也依旧流行,这也是招聘Java web程序员要求也要会HTML、JS、CSS的原因。到现在基本上都是采用这种开发模式,注意这种模式并非真正的前后端分离!

  2. 另一种是交给前端处理,前端全部完成web端的页面渲染工作。要知道的是,前端处理只能使用JS,一些前端JS模板引擎也有不少,Vue等,无论再花哨,本质依旧是JS。不可忽视的是,完全依赖JS处理前端页面是存在弊端的,比如SEO问题。

  3. 总的来说,两种方式有利有弊。如果你在实际开发中涉及到我上面说的第一种,需要后端再对前端页面进行处理,那么可以使用 Jerry 来解决这部分的分工,实现完全前后端分离。

2、定义

Jerry是帮助前后端完全分离的工具,它可以帮助后端工程师只做后端,前端工程师只做前端。

3、思想

简单来说,以往的模式是请求后端接口,后端进行处理后返回一个页面给浏览器。前后端并没有进行彻底分离,比如还在使用后端模板引擎(FreeMark,Thymeleaf)或JSP。为什么Web开发不能像Android等移动端开发一样真正前后端分离呢?

上述开发模式是后端提供接口(也就是网址),经过处理得到一些数据,然后经过模板引擎的一系列渲染,填充数据,再把完成的HTML页面返回给浏览器。流程图如下:


fd0910f8575f03f555ce68651f89d191002.png

**Jerry 的思想就是把这部分的流程进行拆分。**流程图如下:


e0ed2ac1733aa25cdfb501bfa421f588002.png

也许你会说,Cookie 怎么办?会话如何保持?我想说,Jerry 服务器会相当认真的执行代理的角色。把客户端的HTTP请求的方法、Cookie、参数原封不动的发送给服务端。服务端发送回来的响应也会把Set-Cookie响应给客户端。

理论上说,Jerry的方案是可行的。


4、模式

  1. 一种完全真正的前后端分离,Jerry采用如今最流行的JSON作为前后端数据交互的接口。

对后端工程师来说,只需要关心接口的实现,不需要再接触前端页面,甚至不要求懂HTML,JS等。

  1. 只做接口有什么优势?一套接口适用web、Android、ios各个平台,这对软件项目的可扩展性大大提升。不可否认的是,现在依旧有些网站采用后端直接返回html片段的开发模式,这对软件的扩展性非常不利。

  2. 对前端工程师来说,任务脉络更为清晰而简洁。不像以前只需要做好页面,更需要使用FreeMark等处理动态交互。这在之前是由后端工程师来做的。可以说是完全颠覆以往。把网站开发做成像安卓开发一样的前后端分明。

  3. 如果你已经有了成熟的前后端分离方案,自然不需要Jerry,如果你们的后端工程师还需要再去写FreeMark,Thymeleaf等,则可以考虑使用Jerry达到更彻底的前后端分离。

5、优势

  1. 快!启动快,毫秒级的启动!

响应快,配置后台监控,响应时间一览无遗。

优先读取各种文件的缓存,使用EhCache实现。

对于后端接口,使用加权负载均衡。

对于日志监控等耗时而且响应无关的操作,全部运行在其它线程。

如果你还有其它加快速度的方法,欢迎留言。

2.轻!轻量级,没有过多依赖,大部分功能能自己实现就自己写。

全部依赖如下:

  • Netty、slf4j + logback、fastjson、ehcache、junit4、freemark、自带监控系统。对页面的响应速度以及HTTP信息一览无遗。

6、监控系统

监控系统对各个页面与文件的响应耗时与请求信息进行监控,监控频率可以在全局配置文件中进行自定义配置,默认为10s。

对于监控日志可以自定义输出目录,目录只支持相对路径(也就是只能在webapps目录下),监控日志格式为JSON。

默认提供的监控页面位于webapps/manage项目下。

7、负载均衡

需要说明的是,对于Jerry的负载均衡与Nginx的负载均衡是不一样的。换一个角度来说,拥有cache的Jerry负载均衡功能更强大。因为Jerry已经缓存了整个文件,包括经过渲染后的含有语法的文件。所以在缓存时间内,它只会访问后端接口一次,只有缓存失效后,才会再次访问。如果你想体验加权负载均衡,可以把缓存时间设置为1。然后不断刷新页面。关于如何设置负载均衡,参考接口配置。




查看点赞情况
全部点赞
总计: --
Web讲师-李家靖于 2018-09-30 19:32 重新编辑过该贴
本贴还没有回复,赶紧来抢占沙发吧~
发布新贴
招版主啦

版主

  • 杨_宇 杨_宇
  • WEB前讲师-苏少强 WEB前讲师-苏少强
  • web讲师--何广森 web讲师--何广森
  • web前端讲师-闫华伟 web前端讲师-闫华伟
  • zacharyjoke zacharyjoke
  • Web讲师-李家靖 Web讲师-李家靖

注册有礼

完善以下信息,为你推荐课程

  • 学生
  • 白领
  • 高管
  • 自由职业
  • 其他
  • 工作需要
  • 自我提升
  • 兴趣爱好
  • 创业/转型
  • 其他
  • 小白
  • 了解
  • 熟悉
  • 精通
  • 其他
  • 高中/中专
  • 专科
  • 本科
  • 硕士
  • 其他
  • 影视枪战大片特效解析
  • PS视觉惊悚课堂
  • 45天7千平方大厦变形记
  • 原画学习痛点技法全解析
  • 影视动画奇幻课堂
  • AI高端商业设计全攻略
  • UG职场生存必备指南
  • 日赚千元之新媒体行业揭秘
出现异常