求教大并发,高流量的网络服务器的设计

liwei960067495 2014-04-22 03:09:54
不知道是我搜索的关键词不对,百度的结果都是讲epoll的基本用法,深一点的就讲个et模式,感觉完全没有帮助啊,只能来论坛求救了。
设计需求类似于路由,一台服务器接受大量外部客户的网络链接,并接受他们的数据,服务器对数据进行简单的校验和预处理后,将数据发往连接到服务器的一个分布式处理集群,然后等待集群将处理结果发回来,再将结果发送给外部客户。客户连接数量十万级的样子。
...全文
396 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
碼上道 2014-06-21
  • 打赏
  • 举报
回复
现在你的瓶颈在网卡那边,数据处理没有问题。建议多网卡,同时将网卡的流量 分流到不同的CPU上,或者不同的服务器上。不了解楼主的硬件构架,
houzhenghui123 2014-06-21
  • 打赏
  • 举报
回复
当有10W的并发量的时候,网络问题都不算问题。 Lz直接说你要解决的问题吧
houzhenghui123 2014-06-21
  • 打赏
  • 举报
回复
引用 6 楼 bbs2241 的回复:
erlang/otp 这才是大规模基于并发的主宰
+1
super晓 2014-06-20
  • 打赏
  • 举报
回复
目前正在做IOCP方面的服务器。。。
buyong 2014-06-18
  • 打赏
  • 举报
回复
你准备在哪层解决?
xiaolomg 2014-06-15
  • 打赏
  • 举报
回复
建议先看看C10k问题,再来谈高并发.
bobo_包子 2014-06-13
  • 打赏
  • 举报
回复
erlang/otp 这才是大规模基于并发的主宰
mujiok2003 2014-06-13
  • 打赏
  • 举报
回复
zilaishuichina 2014-06-13
  • 打赏
  • 举报
回复
客户连接数量十万级的样子, 不代表他们一定非的全部连一台机器, 当然首先要看你数据量有多大,按一个千M网卡算,每秒100MB,十万个客户端均摊的话就是每秒1KB。 然后你可以一台机器维持个5000左右的链接, 这个是很容易办到的,不管是epoll, 还是iocp。 然后你的客户端比如可以按ip网段,连不同的机器,或者让客户端自己选连哪台机器, 就跟网络游戏连的电信一区,电信二区一样, 然后你后端的分布式处理集群,分别连上每一台转发的服务器就可以了。
李天明 2014-06-13
  • 打赏
  • 举报
回复
服务器一般提供多组网卡数据,可利用多块网块来解决网络带宽问题,或者更简单的办法还可以使用网卡teaming,即将多块网卡组合成一块网卡来使用。
liwei960067495 2014-04-22
  • 打赏
  • 举报
回复
我现在设计的架构是这样,收发分开,都由独立的线程池实现以实现全双工,客户接受线程接收到数据后进行预处理,然后交给分布式集群的发送线程,同时消息编号被加入到一个等待列表,集群接收线程接收到处理结果后,将等待列表中的消息号删除,然后将处理结果发给客户发送线程的发送队列,由发送线程完成发送,这样完成一整套处理流程。现在已经实现每秒百万次消息处理级别的访问能力,瓶颈是测试的千兆网已经无法承载更大的网络流量。当然测试的数据时很理想的,单消息长度仅有二十字节,而且客户端持续不断的发送而不是零碎的发送。虽然现在感觉还行,但闭门造车还是让我感到不是很有底气

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧