【网络编程】四、Scalable IO in Java 中的react线程模型和Netty的线程模型
转载:https://www.cnblogs.com/dafanjoy/p/11217708.html
一、高性能react线程模型
客户连接事件的多路复用线程池存在的目的:是为了提升系统的吞吐量
读写I/O事件的多路复用器线程池存在的目的:是差异化处理各个客户端的I/O事件,与客户连接 和 命令处理进行隔离。
工作线程池存在的目的:专注完成命令任务。
在服务的设计当中,我们还需要注意与java.nio包特性的结合:
一是注意线程安全,每个selectors 对应一个Reactor 线程,并将不同的处理程序绑定到不同的IO事件,在这里特别需要注意线程之间的同步;
二是java nio中文件传输的方式:
① Memory-mapped files 内存映射文件的方式,通过缓存区访问文件;
② Direct buffers直接缓冲区的方式,在合适的情况下可以使用零拷贝传输,但同时这会带来初始化与内存释放的问题(需要池化与主动释放);
二、Netty线程模型