免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 36038 | 回复: 54
打印 上一主题 下一主题

[C++] 【开源】异步通信架构CWINUX 0.1.4发布,并增加了针对web2.0的动态数据过滤服务 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-22 21:35 |只看该作者 |倒序浏览
【开源】异步通信架构CWINUX 0.1版源码在soureforge上发布了。
     网址为:http://sourceforge.net/projects/cwinux/
     官方网址为:http://www.cwinux.net   由于正在对网站进行备案,暂时停止cwinux.net。
     大家可以下载试用。

     由于很多人不清楚此通信架构的使用,下面增加一个使用场景说明:
*****************************************************************************************
                                                   异步通信架构的使用场景
*****************************************************************************************
      像百度的搜索,当用户发了一个查询后,百度后台的app服务进行处理。最基本的事情它需要做两步:
     第一步:
        查询索引。 查询索引就是查询索引服务器群。为什么是个群,有两个原因:第一:一台机器无法存放所有文档的词索引,因此对文档集合进行了分割,分成N个组,建立了N份索引,存放于N台服务器,提供查询。第二:为了保证服务的稳定,对于任何一份索引,都有M份拷贝,同时运行于M台服务器。因此,对于索引服务,是一个N*M的二维分布群。在正常的情况下,一个查询会从N个分组中返回N份索引查询结果,然后app服务进行merge,计算出用户查询需要返回的文档的ID。     
     第二步:
         查询摘要。根据索引查询计算出的返回文档的id,从摘要服务器群中查询摘要。一般来说,一台索引服务器都有一台对应的摘要服务器,而摘要查询也是从索引服务器对应的摘要服务器获取的(重建索引的时候,文档的doc id会变),因此,摘要服务器群也是N*M维的。

     在如上的查询过程中,需要在M个拷贝服务器间进行负载均衡,而且还会发生某台索引或摘要服务器down、某台服务器查询超时等例外情况。
     再,对于以上这种多分组查询,如果采用同步模式,则查询的过程是串行的,查询花费的总时间=T_index1 + T_index2+...+T_indexN + T_digest1 + T_digest2+...+T_digestN。
     而cwinux采用的是全异步的方式,索引的N组查询是并发进行的,摘要也是如此,其查询花费的总时间=max(T_index) + max(T_digest)。
     但,对于异步来说,必须控制各种通信异常,而且这种控制是非常复杂的,对于此,cwinux平台全部提供了支持,使用起来非常便利、可靠。
     以上所说的,只是搜索引擎的最基本查询,有一些还牵扯别的查询,因此更复杂。 而cwinux通过task机制,都很好的处理了,极大的简化了开发的逻辑与复杂度,非常适合用于这种复杂的分布式系统的开发。


*****************************************************************************************
*****************************************************************************************


     大家在用的过程中,一定会有问题,望及时反馈。可以在本贴反馈,也可以在www.cwinux.net反馈。
在cwinux上,专门创建了0.1的bug收集。无论在哪,都可以得到及时的回复与处理。
     大家有什么需求,也可以在0.2版的特性部分提出。根据大家的意见与0.1版的bug,会对0.1的测试版
进行修订,推出0.2的release版。
     0.2版会在明年2月份推出,此将是一个稳定的版本。

     0.1版的开发手册由于错误的使用了图片格式(ppt的OLE),造成手册过大,而且阅读困难,
此问题已经修订,可在www.cwinux.net的【快弩资料】中下载。


**********************************************************
0.1.2版:
    1、修正了64位环境下的bug。
    2、fork的模式改为异步模式。
    3、修订了ACE安装的问题。  


**********************************************************
0.1.4版:
     1、修改了0.1.2版中的bug。
     2、增加了log目录自动创建特性。
     3、增加了针对web2.0的动态数据的动态数据过滤服务。
         过滤服务的特性如下:
      Ø 支持多过滤器
               每个过滤器有自己的名字与ID,过滤的时候可以指定过滤器的名字,也可以指定过滤器的ID。
          系统支持的过滤器的数量取决于机器的硬件资源。
      Ø 可以针对过滤器配置过滤词
              过滤词的数量取决于系统的硬件资源。
      Ø 每个过滤器中配置的过滤词,可以分为1~8共8个LEVEL。
              在过滤的时候,返回内容中最高级别的过滤LEVEL。
      Ø  不同level的词位于不同的配置文件中
              在配置文件中,每一行就是一个过滤词。
      Ø  每个过滤器可以单独配置stopword
             stopword的功能是防止用户为穿越过滤器而对发的内容添加附加字符。若:【法轮功】是非法词,已经被过滤而无法发送;
        但用户为了穿透过滤,可能会发送【法@轮#功】。在此情况下,只要将【@】与【#】配置到stopword的文件中,则【法轮功】==【法@轮#功】
      Ø  采用trie树方式的多路过滤
           过滤服务采用压缩格式的trie树,实现内容的过滤过滤,具有非常高的过滤效率。
      Ø  返回的过滤LEVEL的同时,会同时返回此Level对应的过滤词。
      Ø  支持UTF-8与GBK两种编码格式的内容
      Ø  过滤规则支持是否大小写敏感。
      Ø  支持TCP与unix的连接方式,接收过滤内容。
      Ø  支持多线程并发过滤
          线程的数量可以配置
具体信息请参照软件包中的project/filter/doc/过滤服务用户手册.doc

      过滤的演示,可以到http://www.cwinux.net/thread-41-1-1.html,试用cwinux官网上提供的演示服务及使用说明。


    以上。

[ 本帖最后由 cwinux_1 于 2009-12-4 23:19 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-11-22 21:54 |只看该作者

回复 #1 cwinux_1 的帖子

采用CWINUX平台开发的CWINUX的监控演示系统的URL为
www.cwinux.net/monitor
开发此监控系统的目的有三个:
1、给CWINUX平台的使用者一个简单了服务状态online浏览工具。
2、测试CWINUX平台的功能及其可用性。麻雀虽小,但用了cwinux的绝大部分功能。
3、给CWINUX使用者提供一个CWINUX使用的demo

[ 本帖最后由 cwinux_1 于 2009-11-23 08:23 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-11-23 08:21 |只看该作者

论坛徽章:
0
4 [报告]
发表于 2009-11-23 09:25 |只看该作者
  下过来看看。
不过感觉名字改为 cuxwin,多好啊。。
cux就更好了

论坛徽章:
0
5 [报告]
发表于 2009-11-23 09:31 |只看该作者

回复 #4 peidright 的帖子

呵呵,谢谢建议,名字定了就不改了。
习惯就好了。
cwinux的发音为【kwi nju ks】,跟 【快牛】相近,觉得想用【快牛】,觉得有点土,就改成【快弩】了。
因为弩不但有快的寓意,而且代表方向,目的。符合cwinux帮使用者达到目的的本意。

[ 本帖最后由 cwinux_1 于 2009-11-23 09:33 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-11-23 09:36 |只看该作者
这个0.1版。如果是完全自写的化,感觉有点庞大,感觉应该不是0.1版本。
冒昧的问一下,能否提供最初构思的时候的早期版本,提供下载。。。

论坛徽章:
0
7 [报告]
发表于 2009-11-23 10:06 |只看该作者

回复 #6 peidright 的帖子

这个系统,确实全部是我一个人写的。完全是我自己10多年以来从事后台网络开发的经验总结。
我1999年进入华为北研所从事华为imanager-2000网管平台的开发,并接触了ACE,
后来,在网易的时候,采用ACE为网易的竞价系统开发了一套异步通信架构。
07年初进入爱帮,采用ACE又开发一套全异步的开发平台。
因此,对于平台的开发,自己有非常多的经验与教训。
说道原型,确实都有,说明如下:
1、通信的原型:来源于ACE自带的apps目录下的Gateway
2、lru cache的原型:为网上的 lru_cache.h ,有Patrick Audley 所写。
3、apache module:为resion的apache module
4、xml解析:为sourceforge上的expat c++ 封装
5、html-template:为sourceforge上的c版的html-template
6、thread线程池:java语言的线程管理
7、logger的模式:参照ace的log实现
8、trie树:参照了sourceforge的一个trie的实现,并在此基础上,实现了基于trie树的、多字符集支持的多路过滤与多路替换。
9、taskboard:完全来自自己对于异步通信管理的经验总结,但在网易的时候,听朋友说他以前用taskboard管理任务。
10、commander:标准的commander模式
11、其他就比较泛了,什么apache、php、mysql等等的source,古话说,熟读唐诗三百首,不会写诗聊。

我们不回避这些东西,我们的目的就是汇集好的思想、经验,达到一种尽量优的一致化、统一化。
在牵扯代码级使用的时候,我们会保留原作者的版权声明,若是思想层面的,我们不保留,但我们清楚受益于谁。
既然你提出来了,我们也就罗列出来,也一并表示对他们思想、劳动成果的尊重。

以上。

[ 本帖最后由 cwinux_1 于 2009-11-23 10:12 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2009-11-23 11:01 |只看该作者
定了,定了,呵呵

论坛徽章:
0
9 [报告]
发表于 2009-11-23 11:08 |只看该作者
安装文档在哪儿啊?

论坛徽章:
0
10 [报告]
发表于 2009-11-23 11:13 |只看该作者

回复 #9 lisbjing 的帖子

在解压包的cwinux/cwinux/doc目录下的《异步通信平台--CWINUX开发指南.doc》的第二章《CWINUX 安装》中有说明。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP