Socket中默认阻塞的API:
connect、accept、read、write
疑问1:当设置服务器的socket为非阻塞,client的socket为阻塞,这种场景下服务器、客户端的表现?
疑问2:当服务器仅一个进程一线程时,同时接收多个客户端,能实现多个客户端请求处理吗?
疑问3:当read为非阻塞时,一调用立即返回会读到数据吗?
设计服务器的常见目标
- 随着负载的增加可以优雅降级;
- 能够随着资源的改进,性能可以持续提升;
- 同时还要满足可用性和性能指标:
3.1 低延迟
3.2 满足高峰需求
3.3 可调节的服务质量
造成服务器性能不佳的原因
- 阻塞,read、accept一直等待——非阻塞IO
- 同步,轮询监视是否有客户端连接或发送数据而不是出现上述情况后再通知服务器——基于事件驱动,即IO复用
组成图
发展历程
https://blog.csdn.net/m0_46201444/article/details/107969911
https://cloud.tencent.com/developer/article/1488120