前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速学习Jetty-初识Jetty

快速学习Jetty-初识Jetty

作者头像
cwl_java
发布2019-11-05 15:30:30
1.6K0
发布2019-11-05 15:30:30
举报
文章被收录于专栏:cwl_Javacwl_Java

简单来讲 Jetty 就是一个 开源HTTP 服务器和Servlet 引擎,它可以为 JSP 和 Servlet 提供运行时环境。比如 Java web 应用最常用的 Servlet 容器 Tomcat。由于其轻量、灵活的特性,Jetty 也被应用于一些知名产品中,例如 ActiveMQ、Maven、Spark、GoogleAppEngine、Eclipse、Hadoop 等。

为什么要使用Jetty

  1. 异步的 Servlet,支持更高的并发量
  2. 模块化的设计,更灵活,更容易定制,也意味着更高的资源利用率
  3. 在面对大量长连接的业务场景下,Jetty 默认采用的 NIO 模型是更好的选择
  4. 将jetty嵌入到应用中,使一个普通应用可以快速支持 http 服务

作为一个开源的 HTTP 服务器和 Servlet 容器,Jetty 已经在尺寸、性能以及可拓展性上超过绝大多数其他的 WEB 服务器。因其高拓展的特性,我们可以很轻松的对其增加一些特殊的组件。当然,服务器资源是珍贵的,我们完全可以将 Jetty 中的一些不必要的组件剔除,只留下我们所需要的组件,提高对服务器资源的利用率。在性能方面,Jetty 采用的 NIO 可以让我们处理更大量级的 WebSocket 连接,当然在处理静态资源上也更快。

Jetty的基本架构

Jetty 的架构比较简单, 是一个扩展性和灵活性都非常好的服务器. 在 Jetty 中有个很重要的数据模型 Handler, Jetty 的高扩展性和灵活性主要就是来自于这个数据模型 Handler. 所有的拓展组件都可以作为一个 Handler, 而这些 Handler 都可以被添加到 Server 中, 让 Jetty 帮你进行管理. 从下图来看, Jetty 有两个核心组件, Server 和 Connector. 其中 Server 是基于 Handler 容器工作了, 提到容器, 它与 Tomcat 的 Container 比较相似. 后面会详细介绍 Jetty 与 Tomcat 的比较. 另一个核心组件就是 Connector, 他的主要职责是接收客户端请求, 并将该请求分配给一个处理队列去执行.

在这里插入图片描述
在这里插入图片描述

Jetty与Tomcat的区别

同样作为 Servlet 引擎,Tomcat 自然是不得不提的了。Tomcat 的成名时间早于 Jetty,它已经广泛的被市场接受和认可,相对于 Jetty 来说 Tomcat 还是比较稳定和成熟,尤其是在企业级应用方面,Tomcat 任然是第一选择。不过 Jetty 在架构方面的诸多优势,也让 Jetty 的市场份额不断提高。发展至今,Jetty 已经不单单只是一款 Java Web 服务器和 Servlet 容器,而是一款功能强大的工具集。他的诸多特性都能够满足现在流行的服务端架构模式,包括开发、部署以及运维。

Jetty 与 Tomcat 相比,主要的一些区别如下:

  • Jetty 可以比较方便的贴合第三方框架,比如可以直接在 Spring 中配置 Jetty 服务器、也可以将会话交给 NoSql 数据库进行管理
  • Jetty 提供组件化的方式直接将 Jetty 作为 HTTP 组件集成到应用中,从而使应用快速支持 HTTP 服务
  • 从架构上来看,Jetty 可以说是面向 Handler 的架构,它的所有组件都是基于 Handler 实现的。而 Tomcat 则是面向容器的架构,它是以容器封层的方式去提高拓展性
  • 性能方面来看,它们之间的区别主要在于处理短连接与长连接上,Tomcat 在处理生命周期较短的连接比较有优势。而 Jetty 则刚好相反,Jetty 默认采用的 NIO 技术在处理大量长连接时比较有优势,并且在静态资源的处理上 Jetty 的 NIO 也更胜一筹
  • 从功能特性来看,Jetty 的更新速度是要高于 Tomcat 的,比如 Jetty 9.3 版本开始支持 HTTP/2 的支持,而 Tomcat 9 版本才开始支持 HTTP/2
  • Jetty 的高度模块化使我们可以很方便的对一些依赖的组件进行管理,在将 Jetty 嵌入项目使用时,我们可以随便通过 Maven 去添加我们所需的一些其他的模块,如 WebSocket。而 Tomcat 在这方面则比较欠缺

综合来看,Tomcat 容器分层的架构体系更为成熟,能够满足各种场景的部署需求,而 Jetty 则更加轻量。Jetty 比较适合组件化应用,集成到应用系统中提供 HTTP 服务。Jetty 更适组件化的应用,将其集成到应用系统中提供 HTTP 服务,也适合于以更轻量的方式管理与部署应用服务,如微服务。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要使用Jetty
  • Jetty的基本架构
  • Jetty与Tomcat的区别
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档