后端程序运行模型主要涉及以下几种架构:
多线程模型
特点:每次网络请求开启一个线程处理。
瓶颈:高并发时容灾性能差,一旦某次处理挂起,会影响其他线程的创建和运行,整个处理的并发数受限于创建的线程个数,无法处理突发请求,存在很大不确定性。
单线程+线程池模型
特点:使用线程池来处理请求,线程池具有一定的伸缩性,可以看作是动态的多线程模型。网络层的线程与逻辑层的线程交互模型重要,逻辑层不涉及回复请求,由一个统一的线程进行分发和回复前端请求,这样将网络层和逻辑层分开,易于扩展和维护程序结构。
多进程模型
特点:每个请求在一个独立的进程中处理,一般是异步处理,能够最大限度提高并发量,并且请求之间互相独立,不会相互影响。只要不是本地的IO操作阻塞,就不会出现阻塞。一次请求在后端数据库阻塞,其他请求处理正常,容灾性能好。
触发和唤醒模型
特点:在多线程模型中,一次网络IO可能触发多个线程同时唤醒,存在“惊群”现象,可能导致服务不稳定。
这些模型各有优缺点,选择哪种模型取决于具体的应用场景和需求。例如,对于需要高并发处理且对容灾性能有较高要求的应用,多进程模型可能更为合适;而对于需要灵活扩展和维护的程序,单线程+线程池模型可能更为适合。