免费注册 查看新帖 |

Chinaunix

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

[C++] [英雄贴]开发每日处理10亿请求的专用HTTP服务器 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2013-08-15 00:29 |只看该作者
建议大家直接把项目放到 github 上, 大家都能学习.

论坛徽章:
0
2 [报告]
发表于 2013-08-15 09:05 |只看该作者
顶一下, 看看怎么弄的。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
3 [报告]
发表于 2013-08-15 10:01 |只看该作者
每天10亿请求!听起来好吓人哦~

慢着,其实好像没有那么吓人的。
每天十亿,即每秒钟:10 0000 0000 请求 / 86400(24*60*60)秒 = 11574 请求/秒。

根据这个页面:https://groups.google.com/forum/ ... daktIU/LArEHI-YEucJ

node.js在GAE可以达到2500qps,最慢的Python也有1500qps,更别说直接纯C上了,我们以前的试验是,纯C可以很容易达到5000qps,而且我们用的就是普通PC。

慢着,这样也不够啊,要求是过一万qps啊。

笨,GAE是什么,是VPS啊,一个GAE2500qps,大不了上两个上三个呗。11574请求/秒,也就是11.5请求/ms,差不多8核CPU采用八线程足够了。如果觉得不放心,16核的CPU肯定够了。就我所知node.js是很容易做多和扩展的。自己写C也容易做(甚至可以直接用node.js的底层libuv),别的我就不清楚了。

所以,这根本就不是一个技术问题,这就TMD的是钱的问题,Over。






论坛徽章:
0
4 [报告]
发表于 2013-08-15 10:12 |只看该作者
回复 4# starwing83


    理论上, 大部分的服务器硬件是可以做C/C++做到每秒10000个HTTP请求的. 你说不是技术问题, 这种说法太轻浮了. 就按你说的, 上3个GAE服务器, 面对别人要查询在线列表时, 难道要查3台服务器?

论坛徽章:
26
处女座
日期:2016-04-18 14:00:4515-16赛季CBA联赛之深圳
日期:2020-06-02 10:10:5015-16赛季CBA联赛之广夏
日期:2019-07-23 16:59:452016科比退役纪念章
日期:2019-06-26 16:59:1315-16赛季CBA联赛之天津
日期:2019-05-28 14:25:1915-16赛季CBA联赛之青岛
日期:2019-05-16 10:14:082016科比退役纪念章
日期:2019-01-11 14:44:062016科比退役纪念章
日期:2018-07-18 16:17:4015-16赛季CBA联赛之上海
日期:2017-08-22 18:18:5515-16赛季CBA联赛之江苏
日期:2017-08-04 17:00:4715-16赛季CBA联赛之佛山
日期:2017-02-20 18:21:1315-16赛季CBA联赛之天津
日期:2016-12-12 10:44:23
5 [报告]
发表于 2013-08-15 10:17 |只看该作者
这个就是钱的问题

论坛徽章:
0
6 [报告]
发表于 2013-08-15 10:22 |只看该作者
回复 6# evaspring


    好吧, 什么都是钱的问题? 有钱就能买百度? 就能出Apple? 就能做出Google? 说这种没意义的话有什么意思? 还是脚踏实地吧.

论坛徽章:
0
7 [报告]
发表于 2013-08-15 10:25 |只看该作者
在一台主流硬件配置的服务器上做出每日处理10亿请求的专用HTTP服务器, 对自己既是一个练习, 如果想进中国互联网顶尖公司, 可以联系我.

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
8 [报告]
发表于 2013-08-15 10:32 |只看该作者
回复 7# ideawu


    你有一千亿美元神马的要买Apple Google貌似真不太难……百度嘛……一百亿也就差不多了……

退一万步说,这个帖子还不是在说“欢迎给我发邮件(邮件地址在前面的链接中), 互联网知名企业的职位等着你!”,这难道不是钱的问题么?

当然了,要说技术问题,也有,我之所以说这是钱的问题,其含义是“这里面的技术含量太少,反而对服务器性能的要求,远远超过了对技术含量的要求”。

先说你说的话“随便的C服务器,qps都超一万”,这是不对的,我贴的网址,考虑的是【实际应用】的qps,不是echo server的。按照你的需求,你【至少】需要查询并/或修改一次数据库——这个数据库如果是内存中的,那么就很快,如果不是内存中的,单请求10ms查询本机或者本网内的数据库也不是不可能的。

再说技术问题。首先是轮询问题,这是很基础的cpio/epoll/kqueue的问题,首先这个得写对,其次,在这个基础上,得做多线程任务分派,这一点才是难点,但是在之前和@linux_c_py_php的帖子中对这一个技术问题讨论的很清楚了。这是唯一的两个能提得上是“技术问题”的问题了。其余的,和普通的服务器设计是一样的。

我为什么提node.js呢?就是因为node.js本身已经将这两点全都做了,而且还不是node.js本身做的,是它的底层支持库libuv做的。你们如果想要做,直接上libuv,然后注册它的回调,产生多个线程/进程(libuv都支持),然后就开始干活吧,还有什么犹豫的?如果libuv达不到你的性能要求,那相对于自己实现一个libuv的子集或者别的什么的,更便宜更安全的方案显然是升级你的服务器。

所以我才说,这不是一个技术问题(因为技术已经有人给你做了,你现用就行),这就是钱的问题。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
9 [报告]
发表于 2013-08-15 10:39 |只看该作者
我想知道的是,要实现一个HTTP服务器,你得了解socket,知道至少一个主流的轮询机制,对多线程编程要熟悉透彻,而且要正确实现线程池模式。最后,你还得熟悉HTTP,熟悉关于它的一系列的RFC,包括任何技术上的细枝末节,比如cookie等等。

我觉得,设计一个这样的服务器所需要耗费的精力与你的所得是不相符的。至少,如果要写好一个这样的服务器,需要学习的面太杂太广,而你真正工作的时候涉及的面却决不可能那么广泛(当然也不一定,比如我前段时间在重庆就是数据库后端前段美工界面设计一个人搞定= =没法子啊……),所以,对于一个明确自己的目标的程序员来说,这绝不是一个“很好的练习”。

相对来说,“在cgi上实现一个交互式网页”,或者“用C实现一个高qps的socket服务器”这些,都是很好的练习,因为你可以有足够的精力,去关注所有你喜欢而又用得着的知识。

最后,“不要重复造轮子”,作为练习,写这些都是可以的,如果上实际应用了(就如同你在主题帖里面写的一样),还是上现有的开源项目比较保险,这么一个简单的道理,不需要别人教你吧?

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
10 [报告]
发表于 2013-08-15 11:00 |只看该作者
假定高峰期就3个小时, 差不多1w秒,一秒钟10w请求。 http是无状态协议,很容易上集群,一秒钟10w请求真的毫无压力。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP