免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: cwinux
打印 上一主题 下一主题

【开源】CWINUX分布式通信服务架构(主贴增加了echo通信测试系统的source-10.13) [复制链接]

论坛徽章:
0
61 [报告]
发表于 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 编辑 ]

论坛徽章:
0
62 [报告]
发表于 2009-08-30 18:05 |只看该作者
原帖由 redor 于 2009-8-30 16:54 发表
架构不是你这几个应用层协议实现决定的, 架构是根据实际的生产需求确定的,所以我说你的这东西就是一个应用框架 不是架构。。。。
真正的架构是一个生产应用的基础组件的一个集合,已经各部分之间的关系(协议 ...


这个东西没有必要争论,框架也罢,架构也罢,这都不是问题的本质。

论坛徽章:
0
63 [报告]
发表于 2009-08-30 18:20 |只看该作者
只要涉及到具体的应用,我觉得就得根据应用的具体情况去设计架构;
在架构中有些底层的东西,比如通信框架,可以模块化设计;

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

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

[ 本帖最后由 zsniper 于 2009-8-30 18:24 编辑 ]

论坛徽章:
0
64 [报告]
发表于 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

论坛徽章:
0
65 [报告]
发表于 2009-08-30 18:43 |只看该作者
建议  Load_test 只要发送缓存区可用就不断发送数据包,而非接受到上次的返回数据后再接着罚下一个数据包,这样才能测试出真实的压力。

论坛徽章:
0
66 [报告]
发表于 2009-08-30 19:04 |只看该作者
原帖由 zsniper 于 2009-8-30 18:43 发表
建议  Load_test 只要发送缓存区可用就不断发送数据包,而非接受到上次的返回数据后再接着罚下一个数据包,这样才能测试出真实的压力。


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

再,每次发送的数据包的内容是不一样的。有个问题不明白,发送的内容不同对通信性能有影响吗?

论坛徽章:
0
67 [报告]
发表于 2009-08-30 20:20 |只看该作者
应该不会有影响,只要上层逻辑能正确的解析出1个逻辑包即可,假如是echoserver的话,应该是以'\n'或者'\r\n'换行符为标志。

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

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

[ 本帖最后由 zsniper 于 2009-8-30 20:22 编辑 ]

论坛徽章:
0
68 [报告]
发表于 2009-08-30 20:52 |只看该作者
原帖由 zsniper 于 2009-8-30 20:20 发表
应该不会有影响,只要上层逻辑能正确的解析出1个逻辑包即可,假如是echoserver的话,应该是以'\n'或者'\r\n'换行符为标志。

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

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


ECHO服务的通信不是\r\n的行协议,而是采用包头的包数据,每个包头中都记录这包的长度及序号信息。

论坛徽章:
0
69 [报告]
发表于 2009-08-30 21:03 |只看该作者
好东西,来看下

论坛徽章:
0
70 [报告]
发表于 2009-08-31 09:22 |只看该作者
你用|包长|数据|这种打包方式的话,效率应该会高一些,因为你不需要读取整个数据包,去寻找换行符。

[ 本帖最后由 zsniper 于 2009-8-31 09:44 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP