免费注册 查看新帖 |

Chinaunix

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

[其它] 模拟12306购票系统的处理多用户购票网络编程(已公布获奖) [复制链接]

论坛徽章:
6
CU大牛徽章
日期:2013-05-20 10:43:41IT运维版块每日发帖之星
日期:2016-07-29 06:20:00IT运维版块每日发帖之星
日期:2016-01-27 06:20:00CU大牛徽章
日期:2013-05-20 10:44:16CU大牛徽章
日期:2013-05-20 10:44:0615-16赛季CBA联赛之广东
日期:2018-03-09 11:17:08
1 [报告]
发表于 2015-07-09 22:42 |显示全部楼层
1很多用户登录服务器是协议用TCP还是UDP?
WEB应用的话,不用说都是TCP,因为HTTP就是在TCP之上的。C/S架构的应用的话,大多数都用TCP,用UDP的我目前确实还没见过。

2如果用UDP如何解决数据的不安全性,
要用UDP保证数据安全性和一致性,貌似也就是自己实现重传,确认等步骤。据说qq的消息就是用的UDP协议。
我上家公司有部分通信协议也是用udp实现的,至于有没有问题,我可以负责的说,系统运行了几年一直很稳定。
BTW, 我记得有篇文章讲abstraction leaks, 这里wiki上有这么个页面,en.wikipedia.org/wiki/Leaky_abstraction,大家可以看看。

3如果用TCP如何解决占用大连网络资源造成网络阻塞的问题。
(多个用户相当于多个线程,并通过socket与服务器建立连接。)
有段时间,nodejs很火,被用来构建各种restful api,其中有个重要特性就是事件驱动,非阻塞IO。nginx性能高效,也与其采用了kqueue,epoll有关。
其实在同一时刻,注意是时刻,数据量超出带宽所承受的范围,那么除了加带宽,没有其它办法。这是个非常极端的例子。
如果是时间段,那么可以用并发来解决,要做到尽量不让网络IO阻塞,举个简单例子,某请求涉及到数据库查询,假设数据库查询时间为10ms,用户与服务器建立链接的时间为10ms,有两个用户同时请求同一个操作,并假设服务器(这里就隐含指WEB服务器)同一时刻只能处理一个请求(这里是为了尽量简化问题)。A,B同时发出请求,A的请求先被服务器处理,那么B只能等待,如果必须等A全部处理完之后B才能被服务器接受,那么B得等20ms,若A建立完链接后,链接被挂起,等数据库处理完返回数据后A再被处理,这样B就在A的数据库处理阶段,完成与服务器建立连接操作,那么B等待的时间也就10ms。
总的来说,其实也就是最大程度利用网络IO,CPU,内存等。永远不要让某个部分空转。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP