基于selector的源码分析和理解、思想和应用实践
2019-01-21 02:40:53来源:博客园 阅读 ()
来自京东架构师(JAVA)欢迎关注我的微信公众号java2arch,更多技术文章可看。
一个连接请求connetion request过来,产生一个通道channel(包含并封装了connection),channel注册到selector的set集合环上,服务端主线程死循环while(true)获取channel(有事件的,如枚举可读、可写、连接、连接就绪),根据事件枚举switch分支判断,通过获取的channel读请求数据、写响应数据、发送心跳回应、记录日志等等。
客户端与服务端建立连接获得单个channel,可以读写数据。
精华思想:面对高并发的客户端连接和数据传输,服务端主线程不需要阻塞等待建立连接、读写数据等,通过注册通道事件驱动异步处理高并发的读写等操作。请求来了,先放到环形集合里,有读写数据了,告诉我我再来处理,在这之前,我可以干别的事情或休息,不是站着在门口干等。在进一步,主线程就是老板,来活了告诉老板,老板来了,可以分配给其他小厮做,这样效率和吞吐量就比老板一个人干要强多了吧。boss->woker模型,worker可以是线程池驱动的。netty.使用了事件驱动、异步、多线程高并发的技术和思想。另外呢,考虑引进AIO和零拷贝以及channe责任链式的处理handle和filter\chain机制,引入高效序列化、网络心跳保持防火墙开放技术、解决分包、粘包、丢包、以及安全的策略和机制。
原文链接:https://www.cnblogs.com/java-arch/p/10295210.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:AES详解(Java实现)
- 你说研究过Spring里面的源码,循环依赖你会么? 2020-06-09
- 通俗理解spring源码(六)—— 默认标签(import、alias、be 2020-06-07
- 学习源码的第八个月,我成了Spring的开源贡献者 2020-06-02
- 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文 2020-05-31
- java 在线网络考试系统源码 springboot mybaits vue.js 前后 2020-05-31
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash