[杂项] 知识综合运用

  题目:如何设计一个每秒百万级访问量的互联网服务器,每个服务器均包含数据计算和I/O操作。

  提示:互联网服务器是一个7*24*365*N的运行程序,类似于一种远程计算机结构。用户在服务器端的信息时,实际上就是把服务器端的信息通过网络复制到客户端上,并通过客户端的相关软件展现出来。

  考虑因素(参考书籍《深入理解Nginx模块开发与架构解析》):

  1. 性能,包括网络性能,单次请求的延迟性,网络效率;

  2. 可伸缩性:指架构可以通过添加组件来升级服务,或者允许组件之间具有交互功能。

  3. 简单性

  4. 可修改性,包括可进化型,可扩展性,可定制性,可配置型,可重用性。

  5. 可见性

  6. 可移植性

  7. 可靠性。

 

  个人的想法,服务器是一个生产者-消费者模型的进化版本。设计一个服务器是对很多知识的融合,例如操作系统,服务器程序所运行的平台,架构知识,网络知识以及资源的合理管理。

  I/O多路复用技术(Linux下的epoll/poll/select),池技术(包括进程池,线程池,内存池),缓存技术,多线程/多进程技术等相关知识。

原文地址:https://www.cnblogs.com/life91/p/3377244.html