程序任务类型
CPU密集型任务
一个程序任务大部分是计算类的,比如逻辑处理、数值比较和计算,我们就称它是 CPU 密集型任务或计算密集型任务。CPU 密集型任务的特点是要进行大量的计算,消耗 CPU 资源,比如计算圆周率、视频编解码这些靠的是 CPU 的运算能力。
IO密集型任务
一个程序涉及到大量网络、磁盘等比较耗时的输入输出任务,就称它是 IO 密集型任务,这类任务的特点是 CPU 消耗很少,任务的大部分时间都在等待 IO 操作完成(因为 IO 的速度远远低于 CPU 和内存的速度,不是一个数量级的)。
对于 IO 密集型任务,任务越多 CPU 效率越高,但也不是无限的开启多任务,如果任务过多频繁切换的开销也不可忽视。常见的大部分程序都是执行 IO 密集型任务,比如互联网业务的 Web 服务,数据库操作等。
多服务
不管是 CPU 密集型任务还是 IO 密集型任务,要提高服务器处理能力,可以从软件和硬件两个层面来做文章。
先说软件层面,单个任务处理能力有限,可以通过启动多个功能完全相同的服务实例,借此来提高服务整体处理性能,多服务实例的实现主流的技术有三种:多进程、多线程、多协程。当然除了用多实例的方式,还有 IO 多路复用、异步 IO 等技术。
多进程模型
进程间通信方式
管道 Pipe
信号
共享内存
消息队列
套接字Socket
多线程模型
协程服务模型
硬件提升性能
增加机器核心数
Preference:
https://mp.weixin.qq.com/s?__biz=MzAxMTA4Njc0OQ==&mid=2651440436&idx=5&sn=ada9375f72b5df910ee0fbe6b76ceaf6&chksm=80bb1bc6b7cc92d08de579c5127452dcc3eb5db1481cf0a36a62cbeb7eff11d256e5e4624a04&scene=178&cur_album_id=1790759986344542215#rd