免费注册 查看新帖 |

Chinaunix

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

Unix C 网络多进程框架设计 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-01-30 14:33 |只看该作者
高并发并不需要那么多进程吧,一个进程不要作全部的工作,比如一个进程将请求提交后,应该立即返回,接受其他的请求,
进程数目,我觉得128,就了不得拉, 不过俺是乡下人,没见过大场面

论坛徽章:
0
12 [报告]
发表于 2010-01-30 14:35 |只看该作者
原帖由 cskyrain 于 2010-1-17 19:54 发表
“10000个请求就那么麻烦,那么那些百万级请求,怎么处理的?使用线程?”
不是线程的问题,百万级的也绝对不是一台能搞的定的,而且web服务器处理的数据都比较简单,你这个处理的过程要复杂些。
converse版主 ...



嗯,我去看了一下,的确有很多这方面的文章,还没有细看,不过学习了很多,毕竟以前没多少知识,谢谢啊。。。呵呵。

论坛徽章:
0
13 [报告]
发表于 2010-01-30 14:53 |只看该作者
原帖由 nanduo 于 2010-1-17 21:48 发表
单服务器1w的并发量肯定可以,单进程epoll就行了,后台工作进程可以是多个,中间用消息队列通信。
服务器架构可以看看UNP,里面都有


我设计的初衷是最可能跨平台,毕竟是Unix C代码,所以最基本的也要运行在AIX和Fedora下面,现在测试也是在这两个平台上面进行编译,现在的企业大多是使用AIX,HP Unix,Solaris,sco Unix现在可能使用少一点了,还有Linux。
epoll,poll还有什么kqueue等接口,其实都是各平台为了解决select性能问题,而开发出来的新一代接口,但是,都是不标准的,平台特有,所以本人想尽量使用select,靠其它设计解决性能问题。

论坛徽章:
0
14 [报告]
发表于 2010-01-30 14:56 |只看该作者
原帖由 sunlan 于 2010-1-17 21:57 发表
其实基于TCP的中间件基本上都是这样干的。
一般有几种形式:
1)单守护、实时调用。即一个侦听服务,在有请求时调用服务进程处理,服务程序处理完毕后退出。
2)单守护、预起服务。即在启动侦听时同时启动多 ...


这位前辈很有经验,第二种,是我先前的公司,做保险的,其核心就是使用预起进程等待的方式进行调度的。。。
第一种,是我现在的新公司,做银行的,实时调度子进程方式的,各有好处,也有弊处。。。

最近也有构思,看有没有更好的一种模型,性能相对高,而且支持的业务逻辑相当好。。。

论坛徽章:
0
15 [报告]
发表于 2010-01-30 14:56 |只看该作者
"epoll,poll还有什么kqueue等接口"

说实话,这个有点扯淡。不是用select的理由。

论坛徽章:
0
16 [报告]
发表于 2010-01-30 15:11 |只看该作者
原帖由 peidright 于 2010-1-30 14:33 发表
高并发并不需要那么多进程吧,一个进程不要作全部的工作,比如一个进程将请求提交后,应该立即返回,接受其他的请求,
进程数目,我觉得128,就了不得拉, 不过俺是乡下人,没见过大场面


一般监听和工作是分开的,工作进程部分一般用于数据库操作,监听部分用于接收socket连接。。。不知道你具体想怎么高并发呢?128是用于那部分?

论坛徽章:
0
17 [报告]
发表于 2010-01-30 15:15 |只看该作者
原帖由 peidright 于 2010-1-30 14:56 发表
"epoll,poll还有什么kqueue等接口"

说实话,这个有点扯淡。不是用select的理由。



其实这也是一个讨论的问题,epoll这些,估计在网页代理服务器方面用得比较多吧,那些服务模型,估计不是分层的,直接就一个work进程处理整个连接流程。所以监听部分就得监听比较多的socket套接字,select显得不足力。。。这时候就得使用epoll等新接口。
但是应用系统,很多时候,客户端都是针对一个IP和port进行访问的,而且还要连接数据库等,使用分层处理比较好,监听和工作分开。。。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
18 [报告]
发表于 2010-02-01 16:43 |只看该作者
最近我在设计一套Unix C的多进程核心框架,但是遇到一个性能问题,想请教一下,CU的高手,呵呵。。。
事情 ...
zhitenglin 发表于 2010-01-16 22:52



    那就TUXEDO吧,就是这种东西。

论坛徽章:
0
19 [报告]
发表于 2010-02-01 19:27 |只看该作者
监听/应答进程使用多线程阻塞,写入上行报文共享内存区,并从下行报文共享内存区中读取结果回传给客户端。
工作进程一般是CPU数目的2倍,从上行报文共享内存区中读取数据进行处理。然后将结果写入下行报文共享内存区。
现在的机器很多都是1T内存,256颗CPU的。处理百万级的并发数还是需要加前置,网络IO更容易成为整个系统的瓶颈。

论坛徽章:
0
20 [报告]
发表于 2010-02-01 21:30 |只看该作者
这位前辈很有经验,第二种,是我先前的公司,做保险的,其核心就是使用预起进程等待的方式进行调度的。 ...
zhitenglin 发表于 2010-01-30 14:56

我自己写了一个叫SunLink的通讯中间件,是按照第一种方式实现的,现在是公司产品的核心组件,能支持较大并发,而且可以通过流量管理来控制并发数量。
我认为在普通的PC Server+Unix/Linux环境下,支持上千个并发是不可取的。虽然同时跑没问题,但是效率会急剧下降。如果通过系统资源监控去看的话,你会发现有大量的资源被用于进程调度
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP