pros:
1. 初期实现起来比较简单快速,省去了进程间通信的工作
2. 单一性使得部署和运营比较简单
3. 内存占有少, 现在内存都很便宜,这个优势不明显
4. 进程内部通信效率比IPC/socket等要高效
cons:
1. 中后期随着业务逻辑的复杂化和需求的增加,这个单进程会变得臃肿, 难以维护。 一个任务分解成多个进程会使单个进程的逻辑简单,而不容易出错
2. 同进程内模块间是强依赖关系,需要在一起编译相互的影响也比较大。 这相对于多进程间通信来说, 耦合度较大, 不利于多团队并行开发。 多进程更便于多语言的协作开发。
3. 任何模块的崩溃都将导致整个进程的失效,多进程模式更加稳定健壮,业务处理程序隔离运行, 一个Crash不会影响其他
4. 性能问题: 如果不支持进程间cascading的话,单进程的capacity是受限的, 这个性能瓶颈对于支持群组类服务的尤其需要考虑。多进程部署极其灵活,可以扩充机器数量来提高系统处理性能,还可以从硬件上避免单点故障。
5. 单进程中多线程难调试
如果需要高性能处理,只要根据实际情况设计合理,多进程和多线程都是可行的。
如何选择取决于业务要求, 在高端应用中稳定是关键,效率和功能只能排第二, 如金融系统。即使是重负载程序,也分很多种:计算密集型、I/O密集型、通信密集度?
为了应对浏览器经常出现崩溃的现象,现在很多浏览器厂商都采用了多进程标签浏览的概念,其中包括主的IE8、Chrome、 Firefox浏览器,而众多基于WebKit的浏览器在苹果发布WebKit2内核以后已经将可以后采用多进程标签浏览这个功能。
搜狗浏览器是多进程浏览器,
在浏览器中添加多进程浏览之后,即使是浏览器其中的一个进程出现了崩溃现象,其他的进程也不会受到影响。例如一个网站中有漏洞或包含恶意代码、木马等网络攻击,有可能摧毁当前运行在这个网站上的标签,但是却不会影响其他的进程或整个浏览器。多进程是浏览器发展趋势,微软windows系统自带IE以后也不会有单进程了