2019.07 大规模并发请求处理及C10k问题

C10K问题由来

在互联网还不够普及的年代,用户总数不多,一台服务器同时在线100个用户在当时已经算是大型应用了,此时并不存在C10k难题。
随着互联网普及率的提高,用户群体几何倍增长;另一方面互联网不再是单纯地浏览静态html网页,大型网站逐渐开始进行交互(提交表单、在线互动、即时通讯等),此时C10K的问题才体现出来。
问题:
设计一套RPC服务框架,使其支持单机1秒处理1万条请求到能力。
如何优雅地处理超大规模的并发请求?


1、多线程服务框架

为每一个连接分配一个独立的处理线程
缺点:1、占用的系统资源较多;2、大部分线程都在挂起状态

2、单线程服务框架(实际上有2个线程:主线程、工作线程)

2.1 主线程负责accept新的连接,并用list管理这些连接
2.2 工作线程采用IO多路复用的方式,轮询和采用回调的方式获知连接fd是否可读,并完成处理
缺点:1、要解决C10k问题,要求每个请求处理时间在1ms以内才行;
2、服务端某一时刻只能处理一条请求

3、多线程IO多路复用服务框架

与单线程服务框架不同的是,它有多个工作线程,可以在任意时刻处理多个请求,目前主流服务框架均采用此模式解决C10k问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值