Wheatserver--一个新的高性能服务端框架

46 views
Skip to first unread message

wheat

unread,
Apr 9, 2013, 10:05:24 AM4/9/13
to sz...@googlegroups.com
Wheatserver来自于构造一个开源的uWSGI轻量级的项目,但随着项目发展,可插拔式的工程构建使得发展为通用应用服务器,分离的模块使得极易构造出适合的应用环境。通过Wheatserver,我们构建出了一个极快的WSGI应用服务器和Redis集群管理应用,我们发现Wheatserver能极大的提高高性能服务器端软件的构建。

特性

  • 快速: 全部用C实现,丢弃任何不需要的组件
  • 低内存: 保存进程低内存需要并且采取措施使多个工作进程能尽量共享只读内容
  • 插件式: 模块可以自由增加和卸载,可以方便自定义所需模块
  • 监控: 自定义模块监控内容,可以通过客户端直接查看统计信息
  • 热重启: 改变配置文件后可以通过发送信号来热重启
  • 运维: 通过非常简单的命令接口协议使管理人员能方便的控制

Nala Ginrut

unread,
Apr 11, 2013, 11:45:32 PM4/11/13
to sz...@googlegroups.com
Server dever么?顶一个~
我以前也用C+Scheme写了一个通用服务器
https://github.com/NalaGinrut/ragnarok
不过最近没有更新,心思放在web-framework的开发上了。

我看到你自己实现了dict、list、wstr、slice、array,当时我选用Scheme就是想
避免自己重造轮子。线程池也是借助Scheme的future特性完成的。我看到你用的是
worker thread model?我以后想用上Actor model,不过最近没太多时间。

还有benchmark貌似只有数据结果?能提供测试脚本吗?还是我没找到?

你能把许可协议改成目前比较成熟的协议(GPL/BSD/MIT)吗?我感觉你那个类似于
3-clauses BSD但没有标明,这样别人可能无法贡献。

最后感谢楼主的分享,有空多交流~

On Tue, 2013-04-09 at 07:05 -0700, wheat wrote:
> Wheatserver <http://www.wzxue.com/wheatserver-2/>
> 来自于构造一个开源的uWSGI轻量级的项目,但随着项目发展,可插拔式的工程构建使得发展为通用应用服务器,分离的模块使得极易构造出适合的应用环境。通过Wheatserver,我们构建出了一个极快的WSGI应用服务器和Redis集群管理应用,我们发现Wheatserver能极大的提高高性能服务器端软件的构建。
>
> 特性
>
> - 快速: 全部用C实现,丢弃任何不需要的组件
> - 低内存: 保存进程低内存需要并且采取措施使多个工作进程能尽量共享只读内容
> - 插件式: 模块可以自由增加和卸载,可以方便自定义所需模块
> - 监控: 自定义模块监控内容,可以通过客户端直接查看统计信息
> - 热重启: 改变配置文件后可以通过发送信号来热重启
> - 运维: 通过非常简单的命令接口协议使管理人员能方便的控制
>
> Wheatserver文档目录:
>
> - Wheatserver概览 <http://www.wzxue.com/wheatserver/>
> - Wheatserver安装与启动<http://www.wzxue.com/wheatserver%E5%AE%89%E8%A3%85%E4%B8%8E%E5%90%AF%E5%8A%A8/>
> - Wheatserver设计思想<http://www.wzxue.com/wheatserver%e8%ae%be%e8%ae%a1%e6%80%9d%e6%83%b3/>
> - Wheatserver开发者文档<http://www.wzxue.com/wheatserver%e5%bc%80%e5%8f%91%e8%80%85%e6%96%87%e6%a1%a3/>
> - 部署文档English <http://yuyuyu101.github.com/wheatserver>
>
> Wheatserver实现的应用目录:
>
> - WSGI应用服务器说明<http://www.wzxue.com/wsgi%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%ba%94%e7%94%a8%e4%bd%bf%e7%94%a8%e8%af%b4%e6%98%8e/>
> - WheatRedis应用说明 <http://www.wzxue.com/wheatredis%e4%bd%bf%e7%94%a8/>
>
> Github地址: http://github.com/yuyuyu101/wheatserver
>


wheat

unread,
Apr 12, 2013, 11:36:36 AM4/12/13
to sz...@googlegroups.com
谢谢你的回复!
自己实现dict,list,wstr,slice,array不是为了造轮子而造轮子,主要有以下原因:
1. 避免依赖
2. 因为Wheatserver是个高性能框架而不是一个独立应用,我更期望提供开发者更清晰的数据结构,能直接Debug和提出修改意见
3. 提供基础数据结构支持使得整个项目保持统一的风格,这对框架开发非常重要
4. 更高的性能,并不是没有其他高性能的基础库,而是Wheatserver能提供更符合,更小的内存。在高性能应用设计中,这些抠门的讲究是重要的。举个例子,内联其实是能极大影响这类应用的,因为逻辑不复杂但是极大的函数重入量是能很好利用内联的

benchmark正在辛苦的研究中。。。。分身乏术。。。

关于协议,我觉得似乎没有问题吧,基本上等同于BSD。PS: 其实我对这个不太懂。。。。

在 2013年4月12日星期五UTC+8上午11时45分32秒,Nala Ginrut写道:

Nala Ginrut

unread,
Apr 14, 2013, 11:04:51 PM4/14/13
to sz...@googlegroups.com
On Fri, 2013-04-12 at 08:36 -0700, wheat wrote:
> 谢谢你的回复!
> 自己实现dict,list,wstr,slice,array不是为了造轮子而造轮子,主要有以下原因:
> 1. 避免依赖
> 2. 因为Wheatserver是个高性能框架而不是一个独立应用,我更期望提供开发者更清晰的数据结构,能直接Debug和提出修改意见
> 3. 提供基础数据结构支持使得整个项目保持统一的风格,这对框架开发非常重要
> 4.
> 更高的性能,并不是没有其他高性能的基础库,而是Wheatserver能提供更符合,更小的内存。在高性能应用设计中,这些抠门的讲究是重要的。举个例子,内联其实是能极大影响这类应用的,因为逻辑不复杂但是极大的函数重入量是能很好利用内联的
>

这么高的要求是用到什么业务上呢?

> benchmark正在辛苦的研究中。。。。分身乏术。。。
>
> 关于协议,我觉得似乎没有问题吧,基本上等同于BSD。PS: 其实我对这个不太懂。。。。
>

跑去看你代码的人也跟你一样,搞不懂这个协议的状况,所以一般不建议自己定义
自己的协议。
我记得ruby之父松本行宏曾经谈过这个问题。

wheat

unread,
Apr 15, 2013, 11:37:41 AM4/15/13
to sz...@googlegroups.com
网络IO频繁且都是大包,需要高并发。
典型应用: 各种应用服务器如WSGI,CGI,FastCGI等,还有各种代理服务器或者集群管理系统如Memcached/Redis代理和集群管理

更准确定位于CPU计算多+IO瓶颈型应用,其实大部分直接面向用户的服务器端软件都在此列

接下来我会再思考协议的情况。。

在 2013年4月15日星期一UTC+8上午11时04分51秒,Nala Ginrut写道:

Chris Hsiung

unread,
Jun 8, 2013, 4:49:05 AM6/8/13
to sz...@googlegroups.com
难得看到现在还有人用纯c写程序
download一份学习下。。



在 2013年4月9日星期二UTC+8下午10时05分24秒,wheat写道:
Reply all
Reply to author
Forward
0 new messages