Netty初见
gris转载请注明原创出处,谢谢!
初见netty还是在2016年,当时我做的一个项目需要实现一个即时聊天的功能,当时和一位同事聊及此事,他向我推荐可以选择一些开源的网络框架,比如mina、netty。而他此前研究过mina,但通过在网上搜寻资料发现netty似乎比mina更好一些,从框架整体的设计,api的易用性,文档的丰富程度,社区的活跃度等等方面netty更胜一筹。netty和mina的作者是同一人,Trustin Lee,一位韩国欧巴。在网上找了一些例子,我就很轻松的通过netty+websocket实现了一个简单但稳定的即使聊天的功能。
此后,我又帮一个同学做了一个鱼塘环境监测系统的后台,通过netty实现。系统的架构非常简单,服务端通过netty监听一个端口,对外提供tcp协议的服务,鱼塘各位不同的位置放了很多不同的传感器,监测鱼塘温度、湿度、PH值等等各种可能影响鱼类生长的因素。传感器和服务端之间通过tcp通讯,我定义了一个自定义的数据格式。传感器开启后会和服务端进行连接,连接成功后服务端会将当前传感器纪录到一个map中,并和传感器建立一个心跳。传感器每隔一分钟会传输一次最新的数据,当传感器超时30秒未传输数据时,服务端户主动发起一个获取数据的请求。除此以外,系统提供了一个页面,将监测到的数据和各传感器的状态通过echarts进行可视化的展示。
再后来,为了更深入的了解netty,我又写了一个基于netty的web容器,项目地址为:https://github.com/all4you/redant,有兴趣的同学可以fork一下看看。目前redant主要实现以下了一些常用的功能:
Bean的管理
对象自动注入
自定义路由
参数转换
Session管理
Cookie管理
结果渲染
单节点模式
主从多节点模式
另外,我还写了一个大文件分块存储的项目,后期将通过netty实现分布式的文件块的存储,以实现文件存储的快速写入与读取和高可用。项目地址为:https://github.com/all4you/antfs,有兴趣的同学也可以fork一下看看。
除此之外,netty还可以做很多其他的服务,没有做不到,只有想不到,能做到什么程度完全取决于你的脑洞有多大。
本文将作为我学习分享netty的系列文章的一个引子,后面我将尝试更深入的了解和分析netty的构成、实现原理以及它高性能的秘密。
分享将围绕Netty的几大组件来进行:
1.ByteBuf
2.Channel
3.EventLoop
4.ChannelHandler
5.ChannelHandlerContext
6.Codec
领取专属 10元无门槛券
私享最新 技术干货