java nio 一个channel如何处理大量请求?? 400 报错
java nio中说:可以将一个selector注册到多个channel上。
但是,一个channel绑定了一个端口,这样我理解,当有大量连接请求连接到这同一个端口时,岂不是让selector这一个线程串行处理这些个大量的请求??而且这一个channel可以同时接受这大量的请求吗???这样岂不是效率更低了吗???
新建线程也同样需要时间,如果很快的话,eventloop就可以了
######nio同步非阻塞的模型,是为了解决有限的计算机线程资源,对于处理大量连接(百万级别连接)的瓶颈。nio底层是依赖于poll, epoll模型,就是为了解决计算机处理百万级别连接的瓶颈。
传统的同步阻塞处理IO,一个线程对应一个连接,基本无法通过百万线程处理百万界别连接。
######兄弟你可能没能完全理解nio,纠正下几个不正确的点:
1)是把channel注册到selector上,相当于一个Selector可以处理多个channel。(你可以把一个channel理解为服务端和客户端的一个连接所开通的数据通道)
2)不是channel处理大量请求,而是selector可以。Selector可以不停的去轮询注册过感兴趣事件的channel, 基于内核的epoll回调机制去获得发生事件的channel,然后再对这些channel进行挨个批量的处理。
随时欢迎来讨论交流学习
######那这个selector处理这些channel是同步的么,还是说会建多个线程?版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。