作者回复: 赞,分析到位
作者回复: 回答正确😃😃
作者回复: 高并发需要根据两个条件划分:连接数量,请求数量。
1. 海量连接(成千上万)海量请求:例如抢购,双十一等
2. 常量连接(几十上百)海量请求:例如中间件
3. 海量连接常量请求:例如门户网站
4. 常量连接常量请求:例如内部运营系统,管理系统
你再尝试分析一下看看😃
作者回复: 写的很好,你的疑问补充如下:
1. 常量连接模式下NIO除了复杂一点外,也没有缺点,因此也可以用。
2. 海量连接情况下,单机也要支持很多连接,不然集群成本太高
作者回复: 这篇这么值呀😄其实我觉得前面的更值,架构本质,架构设计目的,架构设计原则,架构设计流程……都是就此一家,别无分店😄
作者回复: 海量连接:连接的用户很多
常量请求:每个用户请求数量不多,大部分都是看完一篇文章再去点击另外的文章
作者回复: 这是操作系统基础,可以看看《UNIX网络编程 卷一》
作者回复: 回答正确
作者回复: 互联网用ppc和tpc的不多呢,尤其是海量连接的场景
作者回复: 数据库链接数少请求量大,所以单线程或者单进程io轮询性能也高,因为一直都有数据处理,不会浪费时间阻塞等待,但数据库的引擎可以是多线程或者多进程,也就是说一条链接的请求交给引擎后,引擎可以是多线程来处理。
reactor适应于连接数很大但活动连接并没有那么多的场景,例如互联网web服务器,reactor功能上也可以用于数据库,只是关系数据库都是历史悠久,久经考验,没有必要把原来的模式改为reactor
作者回复: tpc异常时整个服务器就挂了,而ppc不会,所以ppc适合数据库,中间件这类
作者回复: tomcat是java语言开发的,java用线程是最好的
作者回复: TPC支持的并发量也不大呢
作者回复: 系统学习最好的方式就是看书,推荐《Unix环境高级编程》《Linux系统编程》
作者回复: 一般按照CPU核数*2来计算
作者回复: bio:阻塞io,PPC和TPC属于这种
NIO:多路复用io,reactor就是基于这种技术
aio:异步io,Proactor就是基于这种技术
作者回复: 这就是apache的其中一个模式,线程进程结合
作者回复: nginx反向代理可以达到3万以上,具体需要根据业务和场景测试