Chinaunix

标题: 【开源】CWINUX分布式通信服务架构(主贴增加了echo通信测试系统的source-10.13) [打印本页]

作者: cwinux    时间: 2009-08-24 14:10
标题: 【开源】CWINUX分布式通信服务架构(主贴增加了echo通信测试系统的source-10.13)
介绍:
1、CWINUX的含义
        1.1 是C/C++、WEB、LINUX三者的缩写
               中文名为【快弩】:
                快代表效率。
               弩代表精准的目标或方向。
         1.2C/C++:
                表示系统采用C/C++开发,同时又是高效的象征。
         1.3 Web:
               代表网络与分布式服务。系统不但支持网络层的TCP、UNIX domain、PIPE的通信方式,而且将支持HTTP、FTP
               、POP3等应用层协议。
         1.4 Linux:
                 表示面向Linux平台的、开源的系统。但实际上系统是跨平台的,只是会对Linux系统进行充分的优化。同时新功能
                、新产品也是首先基于Linux推出的。
2、应用服务架构
       2.1进程管理:
              支持单进程、双进程模式。日后将支持多进程模式。
       2.2线程管理:
              支持可视的、可管理的两种类型的线程池。
          支持TSS。
       2.3信号管理:
                    系统将同步信号转化为异步事件。
       2.4时钟管理:
               支持可设置的、非硬件的相对时钟,最小刻度为10ms。
       2.5日志管理:
               支持可管理的、多进程共享的、可循环使用的多日志文件系统。
       2.6支持与其他平台的集成
                      提供了与其他面向消息的架构的集成接口,如Window的MFC、X-Window系统、GTK等。
3.分布式通信架构
       3.1采用epoll进行IO 事件监测
       3.2支持TCP、UNIX domain网络层协议、
       3.3支持数据包类型、非数据包类型的异步、同步通信。
       3.4支持异步HTTP、MSN的应用层协议
       3.5支持IO可读、可写事件监测:       
       3.6支持被关闭的主动连接的自动重连
       3.7支持基于SVR-ID的服务分组。
       3.8支持基于SVR-ID、HOST-ID的服务负载均衡
4、应用基础构件库
       4.1XML、JSON等文本格式化数据的解析、形成、转换
       4.2基于动态数据的、面向对象的文本模板
       4.3适合不同场景的各种内存池
       4.4适合不同场景的各种Cache系统
       4.5逐步集成的各种异步模式的应用层协议
       4.6各种类型的锁
       4.7其他各种适用基础库,如文件操作、时间、同步日志等
5、开源系统的集成平台
       5.1集成存储方面的优秀系统,如Carbinet,嵌入式DB
       5.2集成图片转换系统
       5.3集成多媒体转换系统
       5.4各种加密、签名算法
       5.5各种HASH算法
       5.6其他各种适用系统或工具
       5.7连接各种网络资源矿藏的通道
6、各种通用的服务群
       6.1适合架构可视化管理的监控系统
       6.2持久化的分布式Cache系统
       6.3图片转换、存储系统
       6.4分布式Key/value存储系统
       6.5逐步开发其他有需求的通用系统
7、版本计划
       7.1 09年12月初,发布0.1版的β
             7.1.1只支持单进程、双进程的进程模式
             7.1.2在通信层协议方面只支持TCP/UNIX Domain
             7.1.3在应用层协议方面只支持HTTP
             7.1.4提供监控服务
       7.2 10年1月底,发布Release 0.2版
              7.2.1提供持久化的分布CACHE系统
              7.2.2对个人及公司开放受GPL约束的使用权及私有LICENSE授权
              7.2.3建立CWINUX的PUBLIC开发组,开放CWINUX自身的开发
       7.3 10年6月,发布Release 1.0版
               7.3.1 支持多进程模式
               7.3.2 在通信层协议方面支持UDP、UDP组播
               7.3.3 在应用层协议方面支持HTTPS、MSN等协议
               7.3.4 适合CWINUX通信协议的FAST-CGI
               7.3.5其他方面的改进
8、联系方式
          cwinux@gmail.com
9、通信能力测试

[ 本帖最后由 cwinux 于 2009-10-13 21:37 编辑 ]

tcp.JPG (48.22 KB, 下载次数: 63)

TCP并发通信性能

TCP并发通信性能

tcp_g.JPG (56.62 KB, 下载次数: 53)

TCP并发通信曲线

TCP并发通信曲线

unix.JPG (48.64 KB, 下载次数: 52)

UNIX DOMAIN并发通信性能

UNIX DOMAIN并发通信性能

unix_g.JPG (58.88 KB, 下载次数: 58)

UNIX DOMAIN并发通信曲线

UNIX DOMAIN并发通信曲线

cwinux.jpg (122.94 KB, 下载次数: 56)

WEB类型的分布式通信模式

WEB类型的分布式通信模式

论坛.jpg (145.07 KB, 下载次数: 46)

海量分布式存储的解决方案,如论坛、kv cache

海量分布式存储的解决方案,如论坛、kv cache

CWINUX工程简介.pdf

618 KB, 下载次数: 287

CWINUX项目介绍

CWINUX Apache Module.pdf

81.02 KB, 下载次数: 100

apache module

echo_source.rar

12.38 KB, 下载次数: 116

echo的性能测试source

CWINUX APP 编程接口.pdf

129.52 KB, 下载次数: 123

CWINUX app编程接口


作者: prolj    时间: 2009-08-24 14:11
看目录,很强。
作者: c/unix    时间: 2009-08-24 14:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: cwinux    时间: 2009-08-24 14:39
标题: 回复 #3 c/unix 的帖子
10年1月底开放。
到时候会通知。
作者: epegasus    时间: 2009-08-24 14:47
我非常关心分布式事务同步的通信协议实现,或者在分布式系统中如何上锁的.
我想请教LZ.这样一个系统是一个人搞定的吗?大概用了多长时间?
作者: xinglp    时间: 2009-08-24 14:50
不错,好东西
作者: aaaaa5aa    时间: 2009-08-24 14:50
纸质还是电子的
作者: cwinux    时间: 2009-08-24 14:56
原帖由 epegasus 于 2009-8-24 14:47 发表
我非常关心分布式事务同步的通信协议实现,或者在分布式系统中如何上锁的.
我想请教LZ.这样一个系统是一个人搞定的吗?大概用了多长时间?


======================================================
不太清楚你的意思。
若是指分布式锁的话,可以参照【ZooKeeper 】的开源系统。
这个系统有一个小组在执行设计、开发工作。大部分都是10年以上的工作经验。
作者: converse    时间: 2009-08-24 15:17
如果目前不开源的话,也没有提供其它任何体验这个项目的方式,那么现在放到这里的原因是?

好比说,楼主过来告诉我,某某某很好吃,但是现在买不到.....
作者: cwinux    时间: 2009-08-24 15:24
原帖由 converse 于 2009-8-24 15:17 发表
如果目前不开源的话,也没有提供其它任何体验这个项目的方式,那么现在放到这里的原因是?

好比说,楼主过来告诉我,某某某很好吃,但是现在买不到.....


=======================================================
不好意思。有两个目的。
1、寻找合作、试用的合作伙伴。
2、收集大家目前的一些需求,以便在早期考虑如何集成、实现。

标题我已经改了。

以上。

[ 本帖最后由 cwinux 于 2009-8-24 15:55 编辑 ]
作者: cookis    时间: 2009-08-24 15:41
关注一下
作者: net_robber    时间: 2009-08-24 16:04
不是开源项目

移动主题 -> 职业生涯
作者: cwinux    时间: 2009-08-24 16:11
原帖由 net_robber 于 2009-8-24 16:04 发表
不是开源项目

移动主题 -> 职业生涯

=============================================================
是开源项目,能在chinaunix上开专版论坛吗。
作者: net_robber    时间: 2009-08-24 16:55
既然开源,就找管理员帮你移动回来了

开专版,的问题,你可以去站务申请
作者: 群雄逐鹿    时间: 2009-08-24 16:59
7、版本计划
             7.1.5对2~3个不同业务特征的合作伙伴开放使用

???? 这句话能不能解释一下?
作者: cwinux    时间: 2009-08-24 17:00
标题: 回复 #15 群雄逐鹿 的帖子
其目的是为了稳定内核,怕造成因为与需求脱节、进行大手术带来使用的混乱。
因为此项目的目的不但提供架构,而且提供服务系统。
若大的架构发生变动,如通信协议,会带来大的不兼容而给使用者带来移植的麻烦。

[ 本帖最后由 cwinux 于 2009-8-24 17:02 编辑 ]
作者: cwinux    时间: 2009-08-24 17:04
标题: 回复 #14 net_robber 的帖子
OK。
明白,谢谢。
作者: cwinux    时间: 2009-08-24 17:08
标题: 系统的架构图
下面是系统及服务的架构图:

项目结构.JPG (51.96 KB, 下载次数: 29)

项目的库结构

项目的库结构

app.JPG (35.54 KB, 下载次数: 29)

多线程服务的典型架构

多线程服务的典型架构

作者: xhl    时间: 2009-08-24 17:19
个人觉得这东西有些概念。 期待楼主用事实证明他的价值。


作者: cwinux    时间: 2009-08-24 17:26
原帖由 xhl 于 2009-8-24 17:19 发表
个人觉得这东西有些概念。 期待楼主用事实证明他的价值。


=======================================================================
对于其价值,确是只有通过大规模的使用、优化才能发挥出来。
在通信服务开发方面,已经有10多年历史了。做分布式系统,也有5、6年了。
也开发了不少的分布式的系统。
这是看到了目前WEB2.0对分布式系统的需求,才决定开发一个【开源】的分布式架构,并将已有的好的开源资源集成进来,供大家使用。

以上。
作者: 群雄逐鹿    时间: 2009-08-24 17:28
LZ能否先定一份license, 并且给出商业情景的例外,
这样有助于给想进入的人以信心.

另外建议给一个属于该项目核心的模块, 小而精的.
上面的层次比较怪, std 和 lock 这类东西, 就不用放进来了.
作者: cwinux    时间: 2009-08-24 18:09
标题: 回复 #21 群雄逐鹿 的帖子
具体的LICENSE许可细节还没有定下来,先简单列列。
版权声明:
1、CWINUX 是个开源系统, 遵循GPL V3 版权协议。
       1-1、开源不是免费
       1-2、开源不是没有版权
2、附加版权约束:
        2-1、任何以CWINUX开发的系统,同样受 GPL V3 版权协议的约束,不具有私有性。
        2-2、若要CWINUX脱离GPL V3 版权约束,则必须获得CWINUX 授权License。
        2-3、CWINUX license的授予对象可以是单独的项目,也可以是公司。但对于非自用的项目,
               只能获取项目级的License。
        2-4、CWINUX license的授权范围可以是整个CWINUX系统,也可以是其某一子系统
        2-5、任何使用CWINUX的系统,必须在系统的版权部分声明CWINUX的版权约束。
        2-6、License的许可费用可按年收取。
        2-7、CWINUX禁止任何个人、组织对系统进行修改、发布的活动。

对服务系统的使用,基于GPL精神,由于没有修改,因此无需付费。
对于库的使用,基于GPL精神,若不公开必须获取license许可,
对于license费用,大家不要担心,会非常低廉,
一般的license的费用控制在【1~2人月】的开发人员的人力成本上。
为了支持某些项目或公司,可能会在一定时间内进行免费。
开发此开源系统的宗旨是为了促进国内软件技术的交流、发展,而不是为了盈利。

以上。

[ 本帖最后由 cwinux 于 2009-8-24 18:15 编辑 ]
作者: cwinux    时间: 2009-08-24 18:28
标题: CWINUX支持的动态文本变量替换的语法定义
若不清楚文本模板变量替换,请参照perl::html-template的定义。
此可实现XML、JSON、及CWINUX内部PACKAGE的直接替换输出。

HTML.pdf

76.43 KB, 下载次数: 52


作者: cskyrain    时间: 2009-08-24 18:48
原帖由 cwinux 于 2009-8-24 14:39 发表
10年1月底开放。
到时候会通知。

还要等很长时间呢!!
作者: cwinux    时间: 2009-08-24 19:30
原帖由 cskyrain 于 2009-8-24 18:48 发表

还要等很长时间呢!!



为了系统的稳定及配套服务的一并到位,最迟可能需要到那个时间。
但,在中间,会逐步发布已经测试稳定的部分,让大家熟悉,首先将发布framework。
不会等待非常长的时间的。
以上。
作者: cwinux    时间: 2009-08-24 20:22
大家不用等待的太久,应该11月出会发布一个测试版。
供大家测试使用。

[ 本帖最后由 cwinux 于 2009-8-24 20:38 编辑 ]
作者: h0tr0ck    时间: 2009-08-25 12:39
收藏一个,关注
作者: langue    时间: 2009-08-25 12:42
感谢 LZ 的支持和热情,请移步这里,可以申请专版:
http://linux.chinaunix.net/bbs/index.php?gid=68
作者: gawk    时间: 2009-08-25 13:06
很牛
作者: fl3w    时间: 2009-08-25 13:18
看了众多号称“分布式”的架构,多数都是单机系统+网络支持,没有看到一个让人赏心悦目的设计。
作者: cwinux    时间: 2009-08-25 13:52
原帖由 fl3w 于 2009-8-25 13:18 发表
看了众多号称“分布式”的架构,多数都是单机系统+网络支持,没有看到一个让人赏心悦目的设计。


=============================================================
时好时坏,等到发布的时候再看吧。不好可以按照的大家的意见进行改进嘛。
但目标是让中小型的网站,只要他们愿意,也可以方便的构建自己的分布式系统。
作者: rocenting    时间: 2009-08-26 16:40
原帖由 cwinux 于 2009-8-24 17:26 发表

=======================================================================
对于其价值,确是只有通过大规模的使用、优化才能发挥出来。
在通信服务开发方面,已经有10多年历史了。做分布式系统,也有5、6年了。
也开发了不少的分布式的系统。
这是看到了目前WEB2.0对分布式系统的需求,才决定开发一个【开源】的分布式架构,并将已有的好的开源资源集成进来,供大家使用。

以上。


题外话

感觉cwinux懂日语,估计是做对日项目的,不然怎么会打 “以上”呢。

还用“人月”“国内”这样的词汇。

估计cwinux目前在日本,哈哈。

[ 本帖最后由 rocenting 于 2009-8-26 16:44 编辑 ]
作者: wangqis    时间: 2009-08-26 21:37
标题: 啊,哦
呵呵,看起来不错地
作者: cwinux    时间: 2009-08-26 22:20
原帖由 rocenting 于 2009-8-26 16:40 发表


题外话

感觉cwinux懂日语,估计是做对日项目的,不然怎么会打 “以上”呢。

还用“人月”“国内”这样的词汇。

估计cwinux目前在日本,哈哈。


=============================================
呵呵,看样子你对日本的习惯还是挺熟悉的,我在日企做了3年,在日本呆了一年。
呵呵。
作者: cwinux    时间: 2009-08-27 09:56
原帖由 群雄逐鹿 于 2009-8-24 17:28 发表
LZ能否先定一份license, 并且给出商业情景的例外,
这样有助于给想进入的人以信心.

另外建议给一个属于该项目核心的模块, 小而精的.
上面的层次比较怪, std 和 lock 这类东西, 就不用放进来了.

=========================================================
主贴新增加了【WEB类型的分布式通信模式】的图例。
对于核心模块,就难以区分,就像你问MFC的核心模块是什么一样。
架构的能力,主要是通过几个关键的角色对象完成了,这些东西会陆续发布。
作者: benlan    时间: 2009-08-27 22:02
其实我的需求很简单:

网站的资料越来越多,网站一台服务器越来越撑不住,如何很不费力的把所有的资料存到多台机器上去,像存在本地一样,而且还有像raid一样的备份,坏了一两台机器,其他机器能够保证数据正常工作。而且现在一台机器越来越撑不起来服务,能够随便扩展到多台机器,像一台机器一样的提供服务,不知道楼主你的系统能否满足。

大概的说下看了架构什么的,一个字,复杂。设计我水平很低,所以随便说几句话,说错了也不要见怪。
好像是分层结构,但层之间却看不出来什么关系,通过什么来连接和通信什么的。就大概的印象就是几个开源软件堆起来,但咋么堆在一起,看不出来。ACE什么的都是很大的,很复杂的,整理清楚出来做底层就很复杂了,不小的楼主如何考虑稳定性等的。更想看到是一个框架或设计,像我们外行一看就懂的。然后大概的用几个模式或什么的画出来如何能够包容集成或随便替换你要的开源库,而不是仅仅堆了几个开源软件名字在上面。

像这样的系统框架,在google android上看到过,但是更清晰,看图我们就能看懂
下面是裁剪的linux 内核,中间是一类服务的db webkit opengl gUI等,然后对接一个jvm虚拟机提供给应用,应用使用一个JAVA+XML开发,但是GOOGLE是把做这堆开源软件的作者或主力开发者都招过来做出来的系统,

不知道楼主如何考虑这堆开源软件的稳定性调试的,和楼主如何组织多少人力和物力来完成你的系统。
作者: cugb_cat    时间: 2009-08-27 22:10
还是觉得类似ICE的分布式架构不错,呵呵。
作者: flw    时间: 2009-08-27 23:11
呵呵,开源到了中国就变了味儿了。

我还从未见过担心用户用坏了,所以先不公开源代码的开源方式。
开源从来就不怕人用,遮遮掩掩的开源,很让人怀疑其初衷。
作者: cwinux    时间: 2009-08-28 06:11
原帖由 flw 于 2009-8-27 23:11 发表
呵呵,开源到了中国就变了味儿了。

我还从未见过担心用户用坏了,所以先不公开源代码的开源方式。
开源从来就不怕人用,遮遮掩掩的开源,很让人怀疑其初衷。

==================================================
你误解了。
现在代码正在开发,一些关键的模块、模式正在设计、重构中。
开发这个开源系统的目的,就是为了简化C\C++服务的开发,简化分布式服务的开发。
做到开发这些东西,像用JAVA一样简单。
为了达到此目的,核心的东西必须仔细的设计,防止自身带来的紊乱。
现在正在设计TaskBoard,用来管理与一个请求(task)相关的异步通信的。
现在我也在想,代码是否提前开放的问题,应该核心代码的开放会提前,
现在想应该是10月中下旬的样子。
作者: cwinux    时间: 2009-08-28 06:21
原帖由 benlan 于 2009-8-27 22:02 发表
其实我的需求很简单:

网站的资料越来越多,网站一台服务器越来越撑不住,如何很不费力的把所有的资料存到多台机器上去,像存在本地一样,而且还有像raid一样的备份,坏了一两台机器,其他机器能够保证数据正 ...



======================================
这个问题我也意识到了,我也正在整理资料,尽量从使用场景的角度,逐步的来描述系统。
确实,先前的很多说明,基本上是用来开发的时候的辅助资料,而不是介绍资料。
对于ACE,确是是一个非常庞大的系统,但ACE确实是一个电信级的架构系统,自身是非常稳定、可靠的。
但,这不能保证ACE没有问题。我们的策略是:
1、CWINUX会采用一个ACE版本,目前使用的是ACE5.6.8。若需要换版本,会进行充分的测试、验证。
2、对于长期,CWINUX可能会对ACE进行裁剪,将不需要的部分去掉,以减小库的规模。
谢谢中肯的意见,我会采纳的,尽量基于不同的读者,提供不同层次的USECASE说明。

[ 本帖最后由 cwinux 于 2009-8-28 09:30 编辑 ]
作者: cwinux    时间: 2009-08-28 06:24
原帖由 cugb_cat 于 2009-8-27 22:10 发表
还是觉得类似ICE的分布式架构不错,呵呵。

======================================
以前我没有接触过,听你说了,我简单的看了一下,好像是一个类似CORBA模式的
分布式对象调用(即软件总线)。若是这样的话,跟CWINUX走的不是一条路。
作者: rocenting    时间: 2009-08-28 09:43
大而全一定死得很快
作者: cwinux    时间: 2009-08-28 10:04
标题: 新增加了项目介绍的PDF
此介绍的位置为主贴,但不显眼。
增加主贴的PDF的连接:
http://bbs3.chinaunix.net/attachment.php?aid=347254
作者: 群雄逐鹿    时间: 2009-08-28 10:16
原帖由 cwinux 于 2009-8-28 10:04 发表
此介绍的位置为主贴,但不显眼。
增加主贴的PDF的连接:
http://bbs3.chinaunix.net/attachment.php?aid=347254


pdf中提到msn机器人,现在有什么项目在搞这个可以介绍下吗?
有没有QQ, gtalk机器人?
作者: cwinux    时间: 2009-08-28 10:21
原帖由 群雄逐鹿 于 2009-8-28 10:16 发表


pdf中提到msn机器人,现在有什么项目在搞这个可以介绍下吗?
有没有QQ, gtalk机器人?

========================================================================
我以前做过,全异步的MSN协议实现,单节点容量非常大。
你说的QQ、gtalk都会做支持。
现在QQ的协议实现国内不少。
gtalk,在sourceforge中也有不少。
看需求吧,若需求量大的话,都会提前逐步发布。
若使用这些东西的话,开发者只需要重载这些协议对象的事件API就可以实现自己的业务了。
作者: foochow    时间: 2009-08-28 10:26
为啥不用erlang
作者: benlan    时间: 2009-08-28 10:30
可能前面我的帖子废话太多,没有描述清楚我的意思

前面是需求,是针对楼主的收集需求提出来的,也期待楼主根据多年的分布式经验,给出个这样的需求你这样的系统,如果能够满足,或是不是你考虑的范围之内,给点解决此类问题的建议

后面我主要是想描述的一个问题:
对于一个项目来说:
1、先是用户需求,从我对此项目的描述来说,用户需求不明,web2.0解决方案太广,没有需求分解和具体可操作的需求
2、系统设计,我的理解是个分层结构,但是层之间的接口或连接描述缺乏,每层里面的系统设计缺乏。
大概我从楼主的描述来简单的说下我对楼主此项目的印象
1、楼主手上有此类代码且有很多年的此类系统开发经验,或收集了部分开源代码比较有经验,想集成一个开源解决方案。
如果是这样子,还是从项目角度,抽象出用户需求,系统设计等成熟项目运作来做。

关于楼主说的ACE等的问题,我不是说ACE不好,而是ACE很复杂,学习曲线很困难,开源项目的使用和集成成本是很高的,当然不排除楼主ACE非常熟悉这个优势。
这样的一个系统选择ACE等是按是否项目需要等进行选择的,而且就是ACE等,最后也是集成进你的项目接口里面,而不是为了使用ACE而用
作者: cwinux    时间: 2009-08-28 10:40
原帖由 foochow 于 2009-8-28 10:26 发表
为啥不用erlang


对于erlang的简单介绍我看过。它是一个非常好的分布式服务的开发语言。
但,这个项目的最终目的,为了继承网上的各种优秀的开源系统,而很多这些东西,都是C/C++开发的库。
不知道erlang对他们的集成能力如何。
采用ACE为底层做分布式架构的开发,主要是我在这方面有了非常多的架构经验及不同类型的分布式系统经验。
而且采用我这个架构,开发的系统的代码量也非常小。因为常用到的各种资源、模式都给提供出来了,直接用就可以了。
而且开发出的系统也是跨平台的。

以上。
作者: cwinux    时间: 2009-08-28 11:03
原帖由 benlan 于 2009-8-28 10:30 发表
可能前面我的帖子废话太多,没有描述清楚我的意思

前面是需求,是针对楼主的收集需求提出来的,也期待楼主根据多年的分布式经验,给出个这样的需求你这样的系统,如果能够满足,或是不是你考虑的范围之内,给 ...

==============================================================================
不好意思,你的描述我好像还无法确切的理解。
我不知道你们公司是做什么的,是在自己运营网站还是为别人开发WEB2.0的产品。
针对我的理解,我说一下:
1、【先是用户需求,从我对此项目的描述来说,用户需求不明,web2.0解决方案太广,没有需求分解和具体可操作的需求】
     首先,CWINUX架构平台是用来开发后台的服务系统的,是解决WEB server后面的服务系统的。
     当然,CWINUX很快就会支持HTTP协议,因此若用这个架构开发支持HTTP协议的服务也是可以的。
     WEB2.0反映的是用户与网站的关系的模式,而不是具体的服务或产品。但,给用户做的东西,应该是一个产品,这个
     产品的大致需求、或者是要达到的目的,应该是有的。没有的只是细节。
     在这种情况下,就要求你开发的产品应该是易变的,也就是你下面说的分层。
2、【系统设计,我的理解是个分层结构,但是层之间的接口或连接描述缺乏,每层里面的系统设计缺乏】
     CWINUX系统已经给你解决的分层中的大部分问题。用CWINUX系统,你需要做的只是业务的设计。
     CWINUX中有几个非常关键的对象:
     1》进程管理对象:实现后台服务的启动、停止、重启及服务进程的正常运行(异常停止后的自动重启)
     2》APP对象:此对象解决了封装了通信的问题,让上层不再关心通信的问题及异常。同时,它封装了服务的架构,如信号、始终、日志等。
     3》线程池对象:解决了架构的多线程并发问题。通过线程池,项目可以轻松的解决线程调度等等的难点。
     4》Commander对象:此解决了不同的事件的处理对象问题,让用户的编程的重心移到了事件的响应(此就是项目的业务需求的实现)
     5》TaskBoard:由于系统是异步的,当系统接收到一个请求后,它可能还有请求别的服务系统,即往别的服务系统发送业务请求
                             并等待回复,这期间会发生对方服务异常终止、对方服务响应超时等等的问题,TaskBoard的功能就是将
                             每一个请求(TASK)与消息(事件)关联起来。保证task接收到影响其状态跳转的任何消息,直到完成。而且保证了多线程环境下的线程安全。
      
不清楚我以上所说的,是不是你想弄清楚的。

以上。

[ 本帖最后由 cwinux 于 2009-8-28 11:06 编辑 ]
作者: hefish    时间: 2009-08-28 11:04
开源的,gplv3的,还不许人家修改发布啊。。。。
作者: cwinux    时间: 2009-08-28 11:10
原帖由 hefish 于 2009-8-28 11:04 发表
开源的,gplv3的,还不许人家修改发布啊。。。。


不允许别人修改发布是不允许对CWINUX架构本身的简单修改发布。
其目的是为了防止出现对CWINUX进行简单的修改而进行别的商业活动,没有别的目的。
对于局部的东西,应该是可以的。
作者: zhujiang73    时间: 2009-08-28 11:20
标题: 回复 #1 cwinux 的帖子
这个可能只有电信级的系统才用的上 ?

我们这里大概是部门级的 .net,企业级的用 java 。开发比较快, pc server 不行了就上小型机,项目有预算。
作者: cwinux    时间: 2009-08-30 00:15
原帖由 zhujiang73 于 2009-8-28 11:20 发表
这个可能只有电信级的系统才用的上 ?

我们这里大概是部门级的 .net,企业级的用 java 。开发比较快, pc server 不行了就上小型机,项目有预算。

=================================================
不见得,主要看你的目标是什么。
只要使用C或C++进行开发后台服务,都可以使用这套架构,无论是否进行分布式通信。
因为这个架构本身又是一个应用架构,而且其很大的一块是用来解决服务的可视性与可管理性。
作者: redor    时间: 2009-08-30 15:00
看着好强大。。。。。

原帖由 cwinux 于 2009-8-24 14:10 发表
介绍:
1、CWINUX的含义
        1.1 是C/C++、WEB、LINUX三者的缩写
               中文名为【快弩】:
                快代表效率。
               弩代表精准的目标或方向。
         1.2C/C++:
                表示系统采用 ...

作者: redor    时间: 2009-08-30 15:12
ace得延伸应用。。。 算不上什么框架

原帖由 cwinux 于 2009-8-24 17:08 发表
下面是系统及服务的架构图:

作者: cwinux    时间: 2009-08-30 16:08
原帖由 redor 于 2009-8-30 15:12 发表
ace得延伸应用。。。 算不上什么框架



我不知道你对架构是怎么理解的。
在我看来,架构的定义是:一个问题域的整体解决方案就可以认为是一个架构。
CWINUX采用ACE,其目的只是为了解决跨平台的问题(当时在决策用不用ACE的时候,我们TEAM内部还进行了很长时间的争论,
当时不想用ACE的原因就是觉得它过于庞大了,后来觉得自己做跨平台太辛苦了)。
对于很多东西,如进程管理、线程管理、异步消息处理、日志这些核心的东西,CWINUX全部自己进行了实现。
而且还增加了commander、task管理等核心的对象。
再者,进程架构与通信架构只是CWINUX最基本的东西,它的将来的重心是对各种应用层网络协议的支持、对各种开源系统的集成,
最终实现WEB2.0网站的架构基础。

不知我说的是否到点上。
作者: cwinux    时间: 2009-08-30 16:11
原帖由 redor 于 2009-8-30 15:12 发表
ace得延伸应用。。。 算不上什么框架



我不知道你对架构是怎么理解的。
在我看来,架构的定义是:一个问题域的整体解决方案就可以认为是一个架构。
CWINUX采用ACE,其目的只是为了解决跨平台的问题(当时在决策用不用ACE的时候,我们TEAM内部还进行了很长时间的争论,
当时不想用ACE的原因就是觉得它过于庞大了,后来觉得自己做跨平台太辛苦了)。
对于很多东西,如进程管理、线程管理、异步消息处理、日志这些核心的东西,CWINUX全部自己进行了实现。
而且还增加了commander、task管理等核心的对象。
再者,进程架构与通信架构只是CWINUX最基本的东西,它的将来的重心是对各种应用层网络协议的支持、对各种开源系统的集成,
最终实现WEB2.0网站的架构基础。

不知我说的是否到点上。
作者: redor    时间: 2009-08-30 16:54
架构不是你这几个应用层协议实现决定的, 架构是根据实际的生产需求确定的,所以我说你的这东西就是一个应用框架 不是架构。。。。
真正的架构是一个生产应用的基础组件的一个集合,已经各部分之间的关系(协议)。

原帖由 cwinux 于 2009-8-30 16:08 发表


我不知道你对架构是怎么理解的。
在我看来,架构的定义是:一个问题域的整体解决方案就可以认为是一个架构。
CWINUX采用ACE,其目的只是为了解决跨平台的问题(当时在决策用不用ACE的时候,我们TEAM内部还 ...

作者: redor    时间: 2009-08-30 16:57
我奇怪的是你既然采用ace为啥还不允许别人修改发布? 那你的开源目的是什么?开源了就不要管别人拿去做什么,不管是商业还是非商业的,要不你就不要开源,否则就玷污了开源的含义。
在开源许可证上我更倾向于bsd许可, 越来越看不上gpl这种垃圾许可了。


原帖由 cwinux 于 2009-8-30 16:11 发表


我不知道你对架构是怎么理解的。
在我看来,架构的定义是:一个问题域的整体解决方案就可以认为是一个架构。
CWINUX采用ACE,其目的只是为了解决跨平台的问题(当时在决策用不用ACE的时候,我们TEAM内部还 ...

作者: 群雄逐鹿    时间: 2009-08-30 17:11
说实在,商业应用,只要质量足够好,开不开源都无所谓。
其实大大方方的闭源好了

[ 本帖最后由 群雄逐鹿 于 2009-8-30 17:12 编辑 ]
作者: cwinux    时间: 2009-08-30 17:43
原帖由 redor 于 2009-8-30 16:57 发表
我奇怪的是你既然采用ace为啥还不允许别人修改发布? 那你的开源目的是什么?开源了就不要管别人拿去做什么,不管是商业还是非商业的,要不你就不要开源,否则就玷污了开源的含义。
在开源许可证上我更倾向于b ...


开源的本质不是免费使用。
符合开源要求的使用是免费的,这种要求简单来说,就是你的成果物也必须开源,其目的是为了壮大开源的规模,让更多的人受益。
因此,若不想开源,则必须获取License授权,因为你的使用没有为开源社区带来好处。
对于CWINUX的库系统,若是私有化的使用则必须获取LICENSE的,除非哪一天我们采用了LGPL协议。
对于CWINUX提供的服务系统,在不修改的前提下是无需公开的、也无需获取使用的LICENSE。
开源不等于免费、开源不是没有版权。开源的东西同样也可以申请专利,其目的是保证其开源的特性而不被私有化。
我想是你误解了开源的宗旨,而不是我们玷污了开源的思想。真正玷污开源的是那些天天在使用开源系统而不遵循开源规则的人。

[ 本帖最后由 cwinux 于 2009-8-30 17:51 编辑 ]
作者: cwinux    时间: 2009-08-30 18:05
原帖由 redor 于 2009-8-30 16:54 发表
架构不是你这几个应用层协议实现决定的, 架构是根据实际的生产需求确定的,所以我说你的这东西就是一个应用框架 不是架构。。。。
真正的架构是一个生产应用的基础组件的一个集合,已经各部分之间的关系(协议 ...


这个东西没有必要争论,框架也罢,架构也罢,这都不是问题的本质。
作者: zsniper    时间: 2009-08-30 18:20
只要涉及到具体的应用,我觉得就得根据应用的具体情况去设计架构;
在架构中有些底层的东西,比如通信框架,可以模块化设计;

在我看到你的标题的时候,就感觉这个没有啥意义。

第二点,我想问一下你的echoserver的测试报告,是在什么硬件环境中测试的?
回显数据包的吞吐量,是Recv+Send的总量吗?

[ 本帖最后由 zsniper 于 2009-8-30 18:24 编辑 ]
作者: cwinux    时间: 2009-08-30 18:37
原帖由 zsniper 于 2009-8-30 18:20 发表
只要涉及到具体的应用,我觉得就得根据应用的具体情况去设计架构;
在架构中有些底层的东西,比如通信框架,可以模块化设计;

在我看到你的标题的时候,就感觉这个没有啥意义。

第二点,我想问一下你的e ...

=====================================================
1、CWINUX这个项目,其要解决的也不是全问题域的东西,一定有它的应用范围,在我已经历的服务系统中,这个架构都可以解决。
     对于那些需要做单向通信关闭等使用通信高级特性的应用,目前不在支持的考虑范围内。好像也可以做,但由于没有这方面的USE-CASE,
    因此也就干脆说不支持。

2、对于通信能力的问题,测试环境就是一台自己攒的普通的机器,整个测试环境如下:
         测试硬件环境
                     普通的台式机
                     双核CPU
                          Intel(R) Pentium(R) Dual  CPU  E2180  @ 2.00GHz stepping 0d
                    内存
                          2G
         测试软件环境
                echo服务
                     采用CWINUX架构开发,通信线程将收到的消息放入线程池的消息队列,线程池中的线程将收到的消息的消息类型+1、形成发送数据包后,提交给通信线程发送
                Load_test压力服务
                     采用CWINUX架构开发,其主动与echo服务建立连接。当连接建立后,立即发送一个数据包。当此一个连接上得数据包返回后,再发送下一个数据包。
                     与echo服务的连接数量是可以配置的。因此通信包的数量应该乘以2
作者: zsniper    时间: 2009-08-30 18:43
建议  Load_test 只要发送缓存区可用就不断发送数据包,而非接受到上次的返回数据后再接着罚下一个数据包,这样才能测试出真实的压力。
作者: cwinux    时间: 2009-08-30 19:04
原帖由 zsniper 于 2009-8-30 18:43 发表
建议  Load_test 只要发送缓存区可用就不断发送数据包,而非接受到上次的返回数据后再接着罚下一个数据包,这样才能测试出真实的压力。


谢谢建议,这方面的测试我会着手做。根据理论推断及以前的经验,此时的通信能力应该是单连接的时候最高。
在连接超过100多个后的通信性能的下降,是由于CPU负载太高造成的,接下来也会通过gprof进行优化。

再,每次发送的数据包的内容是不一样的。有个问题不明白,发送的内容不同对通信性能有影响吗?
作者: zsniper    时间: 2009-08-30 20:20
应该不会有影响,只要上层逻辑能正确的解析出1个逻辑包即可,假如是echoserver的话,应该是以'\n'或者'\r\n'换行符为标志。

你每次填充的字符串中不会出现'\n'或者'\r\n'的换行符吧?

另,测试客户端如果是VB的话,你要确定发送数据包的类型,二进制或者字符串类型。

[ 本帖最后由 zsniper 于 2009-8-30 20:22 编辑 ]
作者: cwinux    时间: 2009-08-30 20:52
原帖由 zsniper 于 2009-8-30 20:20 发表
应该不会有影响,只要上层逻辑能正确的解析出1个逻辑包即可,假如是echoserver的话,应该是以'\n'或者'\r\n'换行符为标志。

你每次填充的字符串中不会出现'\n'或者'\r\n'的换行符吧?

另,测试客户端如果 ...


ECHO服务的通信不是\r\n的行协议,而是采用包头的包数据,每个包头中都记录这包的长度及序号信息。
作者: aaaaa5aa    时间: 2009-08-30 21:03
好东西,来看下
作者: zsniper    时间: 2009-08-31 09:22
你用|包长|数据|这种打包方式的话,效率应该会高一些,因为你不需要读取整个数据包,去寻找换行符。

[ 本帖最后由 zsniper 于 2009-8-31 09:44 编辑 ]
作者: redor    时间: 2009-09-01 09:50
其实我不反对你专利什么的, 我的意思是既然打算开源就应该大大方方的, 尽量采用宽松的许可证,像gpl3那样的垃圾许可证还是尽量远离,所以希望大家能做一个比较纯粹的开源,如果想商业话哪就没必要开源。。。

原帖由 cwinux 于 2009-8-30 17:43 发表


开源的本质不是免费使用。
符合开源要求的使用是免费的,这种要求简单来说,就是你的成果物也必须开源,其目的是为了壮大开源的规模,让更多的人受益。
因此,若不想开源,则必须获取License授权,因为你 ...

作者: cwinux    时间: 2009-09-03 09:32
原帖由 redor 于 2009-9-1 09:50 发表
其实我不反对你专利什么的, 我的意思是既然打算开源就应该大大方方的, 尽量采用宽松的许可证,像gpl3那样的垃圾许可证还是尽量远离,所以希望大家能做一个比较纯粹的开源,如果想商业话哪就没必要开源。。。



这个项目要正常发展,是必须有必要的收入的。license的费用会非常的低,只是用于满足基本花费,当用的公司多了,LICENSE费用不但不升,反而会降,
因为这个项目是非盈利的项目。在一年内,可能需要我们个人进行垫付以保证项目的正常支出。
当然,这个项目会寻找赞助商,若赞助的费用可COVER项目的费用支出,我们将会采用LGPL协议,也就是无论是否用于商业,都是免费的。
没办法,不能饿着肚子谈精神。
作者: cwinux    时间: 2009-09-05 21:24
主贴新增了【CWINUX APP 编程接口.pdf】
所有的资料会逐步发布。
欢迎下载。
作者: cwinux    时间: 2009-09-08 10:28
主贴增加了采用BDS、针对海量数据分布存储的cwinux解决架构图。
其方案将MYSQL从高负载中解放出来,只扮演数据管理、数据统计的角色。
而在线数据存储,采用BDB,并通过BIN-LOG,完成数据的同步、分布存储。
作者: cwinux    时间: 2009-10-12 21:56
标题: apache module
附件是cwinux工程的apache module接口说明

CWINUX Apache Module.pdf

81.02 KB, 下载次数: 16

cwinux apache module 接口


作者: c/unix    时间: 2009-10-12 21:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: cwinux    时间: 2009-10-13 21:24
标题: 代码实例
附件是echo的测试程序的代码实例。
系统将于11月底发布。
echo_server目录下的为echo的server的代码。
echo_load_test目录下的为echo的压力测试代码。

以上。

echo_source.rar

12.38 KB, 下载次数: 12

echo测试程序代码


作者: qsc555    时间: 2009-10-14 11:25
CWINUX 是个开源系统,遵循GPL V3 版权协议。
 开源不是免费
 开源不是没有版权
 附加版权约束:
 任何以CWINUX开发的系统,同样受GPL V3 版权协议的约
束,不具有私有性。
 若要CWINUX脱离GPL V3 版权约束,则必须获得CWINUX 授
权License。
 CWINUX license的授予对象可以是单独的项目,也可以是
公司。但对于非自用的项目,只能获取项目级的License。
 CWINUX license的授权范围是整个CWINUX系统。
 任何使用CWINUX的系统,必须在系统的版权部分声明
CWINUX的版权约束。
 CWINUX禁止任何个人、组织对系统进行修改、发布的活动。


楼主的这个声明有些法律问题啊,呵呵,不知道你仔细看过GPL V3没有,这里有个链接:
英文版:
http://www.gnu.org/licenses/gpl-3.0-standalone.html
中文版:
http://bergwolf.googlepages.com/gplv3_zh

按照GPL v3 的如下条例:
12.不要放弃别人的自由

如果您遇到了与本授权向矛盾的情况(无论是法庭判决,合同或者其他情况),它们不能使您免去本授权的要求。如果您不能同时按照本授权中的义务和其他相关义务来发布覆盖程序,那么您将不能发布它们。比如,如果您接受了要求您向从您这里或许本程序的人收取版税的条款,您唯一能够同时满足本授权和那些条款的方法是完全不要发布本程序。

其他人只要通过GPL v3授权获取你的程序,脱离GPL v3的约束是不可能的;

而按照这个条例:
8.终止授权

您只有在本授权的明确授权下才能传播或修改覆盖程序。任何其它的传播或修改覆盖程序的尝试都是非法的,并将自动终止您在本授权下获取的权利(包括依据第11节第三段条款授予的任何专利授权)。

楼主也不可能以CWINUX license发布给其他人,否则你将无权继续在GPL v3下发布;


所以,如果楼主想借助开源的力量发展你的构架,用BSD许可也许可以呵呵
作者: cwinux    时间: 2009-10-14 13:25
标题: 回复 #78 qsc555 的帖子
现在我们也正在为license的内容犯愁。
对于它的内容,正在反复的推敲中,最终的思想就是如下:
1、若用CWINUX做开源,则不违背cwinux的license
2、若是做商业系统或自用系统,则必须获取license的授权,否则默认为所做的系统为同cwinux一样的开源系统。
3、对于小公司,在无盈利的前提下,可以获取带条件的免费license。直到免费license的条件不成立。
4、对于cwinux的质量及损害,我们不承担责任,除非有特别的条款,也就是免责条款。
基本上就是以上四条。但,从法律的文本描述上,确实需要推敲。
谢谢提醒。
作者: zhujiang73    时间: 2009-10-14 14:19
原帖由 cwinux 于 2009-10-14 13:25 发表
现在我们也正在为license的内容犯愁。
对于它的内容,正在反复的推敲中,最终的思想就是如下:
1、若用CWINUX做开源,则不违背cwinux的license
2、若是做商业系统或自用系统,则必须获取license的授权,否则 ...



版权的事建议你找个专职的知识产权律师问问,不过按我自己的理解,如果你的程序里不包含别人的源代码那么可以采用 GPL 和 商业双授权,如果包含别人的源代码就要遵守其它作者的版权声明。
作者: cwinux    时间: 2009-10-15 08:19
标题: 回复 #80 zhujiang73 的帖子
我们的系统,不包含采用GPL协议的项目的源代码。若用到了,只是提供封装接口,有最终的使用者自己去解决GPL的license问题。我们现在内置的开源项目,如ACE什么的,都是采用LGPL等非常宽松的LICENSE。因此,是没有问题的。
谢谢你的热情。
作者: BetonArmEE    时间: 2009-10-19 15:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: iunknown    时间: 2009-10-19 22:59
原帖由 cwinux 于 2009-10-12 21:56 发表
附件是cwinux工程的apache module接口说明



浏览了一下 “CWINUX APP 类核心API” ,看接口和 ACE 的 reactor 的接口很类似。不知这样的理解是不是对呢?
作者: anders0913    时间: 2009-10-20 12:56
学习~~
作者: cwinux_1    时间: 2009-10-21 08:13
标题: 帖子无法更新
大家好,由于我的cwinux账号禁止在此版发帖,因此此帖子无法再继续更新,对于大家提出的问题,也无法再给与回复。
有什么问题,大家可以访问我的blog:
http://blog.sina.com.cn/cwinux
以上,谢谢。
作者: c/unix    时间: 2009-10-21 08:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: cwinux_1    时间: 2009-11-18 08:13
标题: CWINUX修改了public license,将于22日发布
新的public license如下:

   CWINUX项目为一个开源软件项目,www.cwinux.net为其官方网站,其全部版权归CWINUX项目的创建人所有。
为了加强技术的交流、促进CWINUX项目的发展,CWINUX项目秉承GPL的开源思想与精神,采用非常宽松的LICENSE
进行版权管理。无论是个人或组织、商业还是非商业、用途如何,均需要阅读本协议,在理解、同意、并遵守本协议的
全部条款后,方可开始使用CWINUX系统。
  1、对于非商业性质的使用,使用者可以自由的使用、修改、再发布CWINUX的源代码。
  2、对于任何商业性质的使用,必须从CWINUX所有者获取使用的License。License获取的联系方式为
     cwinux@gmail.com
  3、对于任何基于CWINUX 代码的任何使用、修改、再发布,都必须保留CWINUX 代码中对于版权的声明部
     分。
  4、本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。
  5、CWINUX所有者不承担任何由于使用CWINUX所带来的损害性后果,除非有另外的附加合同。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2