smart-servlet v0.1.0 首發,籌備了 3 年的開源 Servlet 伺服器

2020-12-24 開源中國

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 運行到生產環境中。同時非常歡迎社區中的朋友反饋改進建議,或者參與到這個項目的開發中來,一起見證它的成長。

相關焦點

  • 冰蠍3.0流量分析與還原
    /4V2hIFn5V2vmZSuNLHdWVBHr8YCLkbHbGiMnjiSOFSxJollsFEA2B5lHmOykAdDV787z8axDBXvbzlFPFvU8Kk2fkVfRmuTJ5TGv91aFNWs9kDdKZ4ynEp9GEzUk9pOffDGKbfPp2jPYmEFWOC3qrQ/v02BWwAPStRjAEft5JZH0vYxn3b+GgQ+UGbrKJJutS1vvkAuvKFKEcDuliowh
  • smart-doc 2.0.1 發布,Java 零註解 API 文檔生成工具
    支持生成多種格式文檔:Markdown、HTML5、Asciidoctor、Postman collection、Open Api 3.0+。 輕易實現在Spring Boot服務上在線查看靜態HTML5 api文檔。 開放文檔數據,可自由實現接入文檔管理系統。
  • eoLinker 開源 API 網關 GoKu-API-Gateway V2.0.0 發布
    二、相關特性免費且開源:GoKu API Gateway秉承開源精神,是國內第一個企業級開源的API接口網關,為廣大的開發、運維以及管理人員提供專業的產品;多種鑑權方式:支持Basic 認證、API Key授權、IP認證、無認證等方式;支持Open API:
  • 獨家 | pyecharts V1.0.0 版本正式發布
    ,曾上榜Github Trending in Open Source,目前star數量超過5500,項目現已更新到 1.0.0版本。新版本號將從 v1.0.0 開始,這是一個全新的,向下不兼容的 pyecharts 版本。不過如果開發者以前接觸過 pyecharts 的話,新版本對於你們來說也是會很容易上手的。新版本修復 N 個 0.5.x 版本留下來的 bug。
  • 【大氣層】0.18.0整合包(支持11.0.1及以下版本固件)
    為了保證絕大部分飯糰的使用安全,飯飯優先考慮的是穩定性及安全性,主要整合了大氣層常用且比較穩定且安全的自製軟體:大氣層核心:v0.18.0HBMenu v3.3.0 (只整合了自製程序菜單的前端nsp,在SD卡根目錄下,安裝後直接從Home界面打開使用
  • smart-socket v1.4.8 發布,國產 Java AIO 通信框架
    smart-socket 是一款國產開源的 Java AIO 框架,追求代碼量、性能、穩定性、接口設計各方面都達到極致。
  • OpenYurt v0.3.0 重磅發布:全面提升邊緣場景下應用部署效率
    OpenYurt v0.3.0 重磅發布北京時間 2021 年 11 月 8 號,Openyurt 發布 v0.3.0 版本,首次提出節點池和單元化部署概念1. Yurt-App-Manger 為邊緣應用運維而生經過與社區同學的廣泛討論,OpenYurt 提供 OpenYurt Yurt-App-Manager 組件。
  • 重磅開源,微信小程序ble藍牙配網樂鑫esp32,開源奉獻物聯網;
    熟悉的粉絲都知道,我對樂鑫產品系列的配網方式很熟悉,有做過smartConfig、airkiss以及AP熱點配網等博文,還有最近提到的天貓精靈零配等教程;   今天,再來分享一波樂鑫的藍牙配網實現在微信小程序的工程
  • JavaMelody v1.57.0 發布,系統監控工具
    JavaMelody v1.57.0 發布,此版本更新內容如下:fix: check if async before flushing the response (ee87b4b
  • 《塊數據1.0-5.0》在京築兩地網絡首發
    9月21日,由大數據戰略重點實驗室編撰、中信出版集團授權、香港紅投資有限公司(藍天圖書)出版的最新理論成果《塊數據1.0-5.0》(中文繁體版)在北京、貴陽兩地網絡首發。塊數據是貴陽發展大數據理論創新和實踐探索的產物。
  • 鴻蒙 OS 2.0 開源了!
    鴻蒙 OS 代碼倉庫:https://openharmony.gitee.com/鴻蒙 OS 2.0 正式開源9月10日,在2020年華為開發者大會上,華為消費者業務CEO餘承東宣布,鴻蒙OS升級至2.0版本。
  • 日文遊戲亂碼轉換器下載 Locale Emulator v1.3.0.0
    名稱:最新日文遊戲亂碼轉換工具   運行環境:Win 7、Win 8、Win 8.1      工具介紹:
  • ZStack 3.9.0 正式發布 - OSCHINA - 中文開源技術交流社區
    V2V遷移增強ZStack 3.9.0對V2V遷移進行以下增強:1)遷移伺服器新增總容量以及可用容量展示在ZStack 3.9.0中,遷移伺服器詳情頁新增總容量以及可用容量展示。>在ZStack 3.9.0中,遷移伺服器詳情頁新增實時容量監控,支持選擇不同的時間跨度來監控遷移伺服器已使用容量百分比。
  • 百度飛槳推出開源框架V2.0RC版本,帶來「編程一致、動靜統一」全新...
    (百度首席技術官、深度學習技術及應用國家工程實驗室主任王海峰)本屆峰會,百度飛槳帶來八大全新發布與升級,有支持前沿技術探索和應用的生物計算平臺PaddleHelix螺旋槳,開發更加便捷的飛槳開源框架2.0 RC版,端雲協同的AI集成開發環境BML CodeLab,支持更強大分布式訓練的業界首個通用異構參數伺服器架構,開源算法庫增至200+,飛槳企業版EasyDL
  • 【奇珀雙首發】布丁視頻 v2.4.0 & 快手看片Max v2.3.1
    一、布丁視頻 v2.4.0
  • 我的世界1.4.7forge下載 v6.6.0.497版
    名稱:我的世界1.4.7forge下載 v6.6.0.497版    工具說明:  玩家都知道,很多我的世界MOD都需要forge的支持,巴士小編本次為大家帶來的是我的世界
  • 百度開源2020年度報告:兩大開源平臺、九個捐贈項目
    2020年發版情況如下:【 1.7.0】版本對框架功能層面進行了重點增強,預測部署能力全面提升,分布式訓練發布PLSC支持超大規模分類,並對參數伺服器模式進行優化整合。【 1.8.0】版本深度優化了命令式編程模式(動態圖)的功能、性能和體驗,框架基礎功能也進一步強化;全新發布量槳Paddle Quantum量子機器學習框架。