作者回复: 生产级代码很复杂和庞大,也充满细节,一堆堆的新功能迭代和bug fix,所以培训包括写书,很少有直接讲生产代码的,一般都是讲一个简化的模型(核心原理+样例)。重要的是通过简化模型理解原理,通过样例上手,然后在实践中自己探索和应用。
作者回复: 简单将,对于cpu密集型应用,就是主要利用cpu做计算,io较少,这个时候你用blocking io,编程模型比较简单,多线程可以并行计算,因为io本身就少,不会有很多阻塞发生,大部分都在计算。对于io密集型应用,比如高流量web网站,大部分都是io操作,这个时候用blocking io就会有很多线程阻塞,线程和切换都是有开销的,所以这种场景适合用noblocking io,线程数量小,开销也少。
如果想进一步理解细节,可以参考stackoverflow上的一个帖子https://stackoverflow.com/questions/34877705/why-cpu-bound-is-better-with-blocking-i-o-and-i-o-bound-is-better-with-non-block
作者回复: zuul2基于netty纯异步实现较复杂,且出来不久业界大规模应用案例还不多,其成熟可靠和性能有待进一步落地考验,所以暂无计划讲解zuul2,另外,对大部分企业和场景,zuul1简单够用。
作者回复: AsyncServlet只是前端异步,目的只是接受更多连接数,后台处理和调用还是使用容器线程池同步调用的;zuul2应该使用的是基于netty的纯异步,前端请求处理和后端处理和调用都是异步的。