轻量级的开源反向代理服务器
来源:互联网 发布:www.ubuntu.org.cn 编辑:程序博客网 时间:2024/05/16 17:21
相对于squid这种重量级选手,smartc是一个轻量级的反向代理.smartc将专注于HTTP协议,致力于成为高性能、轻量级的支持反向代理cache服务器.
1)使用了很多新的系统特性,来解决用户态和内核态之间过多的内存拷贝问题,保证了内存的平稳性.
2)最大限度的缩短数据到达网卡的距离,提升了cache响应.
3)突破32bit系统对4G内存的限制,可以提升服务器的吞吐量和资源利用率.
4)更多地去支持HTTP/1.1中新的特性,提升cache的性能.
5)将使用面向结构的LUA语言来设计各类配置项,缩短用户的学习时间.
Smartc的特性:
1 支持异步io
2 支持异步的sendfile系统调用
3 支持文件映射mmap
4 支持If-Modified-Since条件验证
5 支持千万级别的document存储,专为大存储设计的Hash
6 支持32位OS,超过4G内存限制
7 支持epoll
8 支持结构化的配置语言LUA,让系统管理人员获得更多的主动权.
新闻扩展部分:
现有特性:
1 支持异步io
2 支持异步的sendfile系统调用
3 支持文件映射mmap
4 支持If-Modified-Since条件验证
5 支持千万级别的document存储,专为大存储设计的Hash
6 支持32位OS,超过4G内存限制
7 支持epoll
8 支持结构化的配置语言LUA,让系统管理人员获得更多的主动权.
存在的问题:
1 不支持>2G文件
2 不支持用户进程内存,和共享内存的cache置换算法
3 不支持HTTP/1.1的keep-alive特性
4 不支持HTTP/1.1的Vary特性
5 不支持HTTP/1.1的ETag和If-None-Match条件验证
运行环境:
1 安装有LUA5.1版本以上
2 RedHat 企业版4或以上版本,及其他Linux发行版.在RedHat 企业版4进行测试,可以顺利安装运行.
发布时间:
1 开发时间已经于2008.2.17基本结束.大概需要3个星期的时间来进行回归测试,并即时完成各种bugfix.
2 初步定为2008.3月底发布
一 现在的互联网
在web刚兴起的时候,互联网估计主要是用来解决document共享的问题.从当时的HTTP/0.9版本上,可见一斑.到后来用户逐渐的增多,以及 apache的成功,和HTTP/1.0的推出,使得互联网的数据业务量出现极大的增长.HTTP/1.0已经提出了caching的概念,设计者估计也看到了网络拓扑结构的复杂性,不是单纯的web server就可以应对的.HTTP/1.1在1.0的基础,对caching又做了进一步的改进.
现今,绝大多数的互联网数据业务都是基于HTTP/1.1开展的.由于数据量的激增,web caching在提升整个互联网的体验方向上,显出了极为重要的生态价值.web caching在减少带宽消耗,加快用户访问速度,应用层的负载均衡方面,发挥着很重要的作用.
尤其web2.0的出现,互联网数据量相对web1.0又有了一次成倍的增长,像Youtube之类的视频网站,每日的访问量都是相当庞大的.
二 为什么不用Squid
Squid和apache几乎是属于同时代的产品,很好的应对了web1.0时代的互联网数据业务.Squid一个非常庞大的proxy,不仅支持 HTTP,而且支持FTP,并且支持很多种cache协议,如ICP等等.几乎proxy产品需要的功能,squid都具有.
squid是基于单进程、单线程实现的,使用了最基本的read/write来处理读写问题,和用户级别的进程内存来缓存某些小的document.由于 read/write的系统调用,可能会导致用户态和内核态多次的内存拷贝,尤其是向网卡发送数据时,可能导致系统的内存抖动.在32bit的操作系统上,squid的内存使用始终无法超越3G.在处理小文件的cache问题时,squid的吞吐量非常低.squid的配置项,异常庞大,需要较长的学习周期,才能很好的掌握.
开始新的体验吧
smartc是本人从2007.6月份开始思考的一个产品,中间阅读了很多其他的优秀开源server,包括lighty,nginx,squid等.经历了多次框架的从新设计和比较,最终以单进程作为框架.经过08年春节期间,严肃的思考和代码修改,于2008.2.17日代码工作基本完成,代码辗转书写了1万行左右,历时5月之久. 开始新的体验吧,不只是squid. 访问:Smartc 源码地址 来源:http://news.newhua.com/news1/news/2008/221/08221171439G6EG47IF07II813J133B_2.html?lt=common
- 轻量级的开源反向代理服务器
- 代理服务器与反向代理服务器的区别
- 代理服务器与反向代理服务器的区别
- 代理服务器与反向代理服务器的区别
- 代理服务器与反向代理服务器的区别
- 反向代理服务器的工作原理
- 反向代理服务器的工作原理
- 反向代理服务器的工作原理
- 反向代理服务器的工作原理
- 反向代理服务器的工作原理
- 反向代理服务器的工作原理
- 反向代理服务器的工作原理
- 基于Apache的反向代理服务器
- 反向代理服务器的工作原理
- 反向代理服务器的工作原理
- 反向代理服务器的工作原理
- 反向代理服务器的工作原理
- 反向代理服务器的工作原理
- GTK+ and Glade3 GUI Programming Tutorial--中文系列
- C++的输入输出流
- Eclipse 3.4手动汉化
- 怎样防止浏览器刷新重复提交数据
- C#网络编程概述
- 轻量级的开源反向代理服务器
- mssql 学习笔记【2】
- Mastering Joomla! 1.5 Extension and Framework Development-第九章翻译-重定向(1)
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page283
- 装饰模式C++实现
- 得一人才可兴一国,失一人才可亡一国,善用人才之君为明君,平庸之君不能识才,即便识才也易遭谗臣所惑,过河拆桥之君国运不能长久。
- HTMLParser使用详解(1)- 初始化Parser
- 可不可以这样统一地看待友员函数和成员函数?
- C#编码好习惯