ebarlas/microhttp:快速、可扩展、自包含、单线程 Java Web服务器


Microhttp 是一个快速、可扩展、事件驱动、自包含的 Java Web 服务器,它足够小,程序员可以理解和推理。
可理解性是最高优先级。该库旨在替代具有压倒性复杂性的常用框架。实施决策旨在在简单性和效率之间取得平衡。
Microhttp 将所有请求和响应离散化。不支持流式传输。这与交换小负载的事务性 Web 服务非常吻合。限制请求正文大小具有溢出保护的额外好处。这在以面向流的方式使用请求主体的 Web 服务中经常被忽视。
不支持 TLS。边缘代理和负载平衡器提供此功能。Microhttp 的最后一跳通常不需要 TLS。
Microhttp 将位于反向代理或负载均衡器之后,不支持 HTTP 2。边缘代理可以支持 HTTP 2,同时在到 Microhttp 的最后一跳上使用 HTTP 1.1。
原则:

  • 无依赖
  • 小型、有针对性的代码库(~500 LOC)
  • 高并发
  • 单线程事件循环
  • 事件驱动的非阻塞 NIO
  • 不支持 TLS
  • 没有流媒体支持
  • 通过日志事件进行可追溯性

包括:
  • HTTP 1.0 和 1.1
  • 分块传输编码
  • 持久连接
  • 流水线

Microhttp 已在 TechEmpower 框架基准中注册。最新连续运行结果:

  • 2,163,060 请求/秒 - 明文测试
  • 1,268,535 请求/秒 - JSON 测试
  • 284,587 请求/秒 - 数据库查询测试

https://www.techempower.com/benchmarks/section=test&runid=c72182f8-476d-4920-a264-26f615d693d3&test=plaintext
TechEmpower 基准代码库在这里:
https://github.com/TechEmpower/FrameworkBenchmarks/tree/master/frameworks/Java/microhttp