hetao 更新至 v0.15.0,支持搭载应用的国产原创 Web 服务器
0.15.0 2020-03-14 calvin
- 新增支持socgi,可以嵌入服务端应用逻辑了
- 新增支持socgi的rest层,支持开发RESTful风格的应用了
- 调整了目录文件架构,Dockerfile有待改写
------------------------------------------------------------------------------
2. 概述
hetao是一款国人原创研发的开源的C语言实现的支持高并发、超高性能Web服务器,使用高性能HTTP解析器fasterhttp作为其解析核心,在开启Keep-Alive和gzip压缩(现代浏览器默认开启)时性能比nginx约快3倍。如此高性能得益于轻巧的架构设计和采用Inotify文件变化主动通知缓存机制,把大量静态文件尽可能缓存在内存直接读取,比传统的轮询式检查文件机制避免了大量存储IO。
hetao的设计理念是快速、稳定和完整。没有完全采用apache或nginx纯模块化架构,因为大多数人使用webserver一般都会把所有模块都打上,除了动态内容模块(如mod_php),很少见到有人特意去组装模块,那还不如直接全部编译在一起算了,使用简单,避免了管理员或运维人员面对过多选择带来的学习成本。当你需要本地定制化时,直接改代码吧,因为它就是开源的嘛。hetao只有在动态内容上才设计了模块接口,以适应各种各样的语言架构和开发者。
2.1. hetao功能
- 支持主流操作系统Linux(基于epoll)、WINDOWS(基于IOCP)
- 支持HTTP/1.0、HTTP/1.1
- 支持通讯超时控制
- 支持多侦听端口
- 支持多虚拟主机
- 支持自定义错误页面
- 支持自定义缺省index文件
- 支持自适应Keep-Alive
- 支持自适应gzip、deflate压缩
- 支持HTTPS
- 支持反向代理负载均衡(目前支持轮询、最少连接数算法),支持HTTP与HTTPS互转
- 支持改写URI
- 支持重定向域名
- 支持优雅重启/重载配置,重启期间完全不中断对外服务
- 支持工作进程绑定CPU
- 支持进程崩溃后自动重启
- 支持搭载socgi应用
- 在socgi上搭载RESTful应用
2.2. hetao安全机制
- HTTP请求报文合法性校验
- HTTP报文最大请求头限制和最多请求头选项限制
- 活跃超时控制(防止僵尸连接)和累积超时控制(防止慢速攻击)
- 每个IP连接数限制
- 全局最大连接数限制
- 最大单个文件缓存大小
2.3. 选择hetao的理由
- hetao在Linux上的综合性能约比Nginx还要快三倍,尤其适合中小型静态文件
- hetao是众多开源Web服务器中在WINDOWS版本唯一全部采用IOCP模型。Apache的WINDOWS版本是传统的Leader-Follow多进程模型,Nginx则是多线程select模型(玩具?)
- hetao配置文件采用JSON标准格式,简洁易写,而且支持行注释和块注释。Apache配置格式比较复杂,Nginx配置格式多变怪异且不支持块注释
- hetao设计精炼,代码结构简洁易读,代码量小,易于改造
- hetao是中国国产原创,中文资料较多
- Linux版提供指定目录直接创建Web站点,WINDOWS版提供了右键目录直接创建Web站点,便于测试页面
- hetao提供了socgi层搭载应用动态库实现应用逻辑,并在socgi基础上实现了一个RESTful应用控制器

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java并发编程之验证volatile的可见性
Java并发编程之验证volatile的可见性 通过系列文章的学习,凯哥已经介绍了volatile的三大特性。1:保证可见性 2:不保证原子性 3:保证顺序。那么怎么来验证可见性呢?本文凯哥将通过代码演示来证明volatile的可见性。 前期准备: 共享变量 number 初始值是0,然后修改后的值为100; 两个线程,分别是:主线程Main以及线程名为A的线程 内部类: 可以看到有个方法将变量值修改成了100; 再来看看: 说明: 变量number不用volatile关键字修饰。主线程在运行后,启动子线程。名字为线程A。然后线程A将变量number的值修改成了100后,主线程对number的进行判断。如果numbr的值等于0的时候,就一直while循环。我们预期下结果:线程A修改完数据之后,输出的是100呢还是0呢?最后运行结束这个是否会输出呢? 我们来看看输出的结果: 编辑 可以看到控制台输出的结果,线程A更新完变量的值之后在自己内部获取到变量的值是更新后的,但是在主线程的工作缓存去获取后,依然是0.因为主线程依然还在运行着(红色按钮一直红色的),虽然线程A修改了共享变量的值,但是...
- 下一篇
Dgraph 1.2.2 发布,事务性分布式图形数据库
Dgraph 1.2.2 发布了。Dgraph 是一个可扩展的,分布式的,低延迟的图数据库,目标是提供 Google 生产水平的规模和吞吐量,在超过 TB 的结构数据里,为用户提供足够低延迟的实时查询。Dgraph 支持GraphQL作为查询语言,响应 JSON。 新版更新内容如下: Fixed 导出输出中不包含空节点 修复词汇表语言列表的错误 在调试工具中正确初始化发布包 处理模式中的特殊字符和类型查询 覆盖 uid 断言的值 断言不支持 lang 时禁用 @* 语言查询 修复使用反向断言导出类型中的错误 更多详情见更新说明: https://github.com/dgraph-io/dgraph/releases/tag/v1.2.2
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题