线程扩展需要考虑的问题
线程扩展要考虑的问题
简介
如今越来越多的后台系统采用了单线程的设计,原因多是因为单线程的设计简单轻量,而且更安全(无多线程竞争)。
而其性能保证则通过多进程的方式来完成,多进程由于互相隔离,也是稳定性的保证。
比如nginx默认工作方式就是单线程多进程;其他的案例比如node.js的集群;比如redis的集群。
通常这种方式能很好的工作,然而有些时候你还是会面临项目向多线程转变的时候,比如项目的技术栈从node.js转向Go,Go又是天生为并发而生的;
比如项目在演进过程中出现了CPU密集型的业务,单线程会严重影响性能;比如多进程架构扩展时遇到了IP等资源不足(比如业务需要为每个进程绑定一个公网IP)的限制。
那么当你在处理这种架构转变的时候,需要考虑哪些问题呢?