smart-servlet v0.1.0 首发,筹备了 3 年的开源 Servlet 服务器
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 运行到生产环境中。同时非常欢迎社区中的朋友反馈改进建议,或者参与到这个项目的开发中来,一起见证它的成长。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
titbit v21.10.9 已经发布,Node.js Web 开发框架
titbit v21.10.9 已经发布,这是一个Node.js的Web开发框架,同时支持HTTP/1.1和HTTP/2协议, 提供了强大的中间机制。 此版本更新内容包括: middleware2 执行请求结束,设置ctx.res.headers = null。 http2 请求开始,ctx.res.headers = {}。 在引入上下文缓存池后,有可能会让上次请求设置的消息头因为缓存不清空而传播到其他请求。 此问题只影响http2,使用HTTP/1.1协议无影响。 此问题在之前的版本中,若无法或不想更新版本,可以通过中间件修复: app.pre(async (c, next) => { c.res.headers = {} await next() }) 详情查看:https://gitee.com/daoio/titbit/releases/v21.10.9
- 下一篇
北软小精灵 v2.0.1-beta 已经发布
北软小精灵 v2.0.1-beta 已经发布 此版本更新内容包括: 简介: 《北软小精灵》是一款促进学生对编程的学习兴趣的一款软件,我们将在游戏里面加入社区功能模块,学生可以通过此功能模块提交自己设计的小精灵以及精灵代码,以及各种MOD。我们的团队会进行审核,审核通过后,我们会把他的设计以及代码融合到我们游戏中,增加游戏的丰富性,增加游戏的玩法。还有在生活中探索精灵、运动为提升精灵等级和PVPPVE功能。 详情查看:https://gitee.com/sybrjsjrg/nsi-soft-elves/releases/v2.0.1-beta
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题