暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Netty初见

逐码 2018-01-31
165

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



文章转载自逐码,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论