内容简介:smart-servlet 是一款实现了 Servlet 3.1 规范,支持多应用隔离部署的的 Web 服务器。尽管开源时长仅 1 个月,还有着诸多不成熟,但希望未来能成为如同 Tomcat、Undertow 般优秀的项目。为了这个目标,smart-ser...
smart-servlet 是一款实现了 Servlet 3.1 规范,支持多应用隔离部署的的 Web 服务器。尽管开源时长仅 1 个月,还有着诸多不成熟,但希望未来能成为如同 Tomcat、Undertow 般优秀的项目。为了这个目标,smart-servlet 准备了三年:
- 3年前,开源 AIO 通信框架 smart-socket。为从事通信开发的朋友提供了除 netty、mina 之外的另一个选择,同时也为 smart-servlet 开发迈出了第一步。
- 2年前,开源 http 服务器 smart-http。不仅支持了 http 1.0/1.1、websocket 协议,还在 TFB 评测中表现优异。
- 1个月前,开源 smart-servlet。在 smart-http 的基础上实现 servlet 3.1 规范。
项目特色
- 零学习成本,素未谋面,却已相知。保留用户原有的 Tomcat、Undertow 使用习惯。
- 朴实无华,用最初级的设计手法打造专业级服务器。
- 实现 Servlet 核心规范:Request、Response、Session、Cookie、Dispatcher、ServletContext。
- 插件化设计,自由 DIY 服务器。
- 延续一贯的极简、易用、高性能设计风格。
- 开箱即用,运行程序包、maven本地开发/调试插件、springboot starter 一应俱全,满足你的开发、部署等各项需求。
架构设计
smart-servlet 在 smart-http 的基础之上,通过继承 HttpHandle 实现了 Servlet 规范。这意味着任何 smart-http 服务都可以通过单独引入 smart-servlet 核心包的方式,将普通的 http 应用改造成 servlet 应用,而且这个成本是极低的。
示例演示
为了验证 smart-servlet 对 servlet 3.1 实现的规范性,我们的演示示例直接移植了 Tomcat 安装包中自带的工程:docs、examples。其中examples 工程依赖需要依赖 tomcat 自身的一些 jar 包,故我们将 ${TOMCAT_HOME}/lib 目录下的 jar 包拷贝到了 examples/WEB-INF/lib 目录下。
接下来对工程进行编译并运行 org.smartboot.servlet.starter.Bootstrap ,若控制台打印如下信息说明启动成功。打开浏览器访问:http://127.0.0.1:8080/examples 便可体验 smart-servlet 。
非正式评测
对于这款 servlet 容器,用户可能更关心它相较于 tomcat 的优势,为此我们做了一次简单的评测。特别说明:这次评测并不正规,一方面 smart-servlet 既当裁判又当选手本就不公平;另一方面现阶段 smart-servlet 还不够成熟,不具备比较的条件。所以这里提供的非正式评测结果权当 smart-servlet 的一种宣传方式。
我们采用的测试方式为:
用 ab 压测 examples 工程中的示例请求:http://127.0.0.1:8080/examples/servlets/servlet/HelloWorldExample,最终的表现结果如下:
- smart-servlet 性能表现结果比 tomcat 高出 50%~100 以上 。
- tomcat 压测期间 CPU 使用率高于 40%,smart-servlet 压测时低于 40% 。
- tomcat 线程数随并发数递增,上限 200;smart-servlet 线程数固定,不受并发数影响 。
- 内存开销两者基本持平。
详细过程见:https://smartboot.gitee.io/book/smart-servlet/performance/test-data.html
最后
后面我们会保持稳定的开发节奏,持续打磨 servlet 规范的实现细节,争取早日让 smart-servlet 运行到生产环境中。同时非常欢迎社区中的朋友反馈改进建议,或者参与到这个项目的开发中来,一起见证它的成长。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 媒体:旷视筹备今年之内赴港上市 寻求"同股不同
- Red 语言正在筹备建立基金会,将会使用区块链技术
- 聆听中国开源最强音 | 国内大厂开源项目齐聚 OSCAR 开源先锋日
- 小米 9 开源内核代码,上市即开源
- 开源 | 陌陌风控系统正式开源
- 开源 |《Go 语言高级编程》开源图书
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。