Netty简介与自定义基于http和websocket协议的服务器

本文介绍了Netty,一个高性能的异步事件驱动网络应用框架,涵盖了其历史发展、重要类和方法、HTTP和WebSocket支持,以及UDP协议的使用。重点讲解了Bootstrap和ServerBootstrap的区别,以及WebSocket握手过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Netty入门

Netty是什么?

image.png

Netty 由 Trustin Lee(韩国,Line 公司)2004 年开发

本质:网络应用程序框架

实现:异步、事件驱动

特性:高性能、可维护、快速开发

用途:开发服务器和客户端

Netty的性能很高,按照Facebook公司开发小组的测试表明,Netty最高能达到接近百万的吞吐。

Netty发展历程

  • 2004年6月Netty2发布(声称Java社区中第一个基于事件驱动的应用网络框架)
  • 2008年10月Netty3发布
  • 2013年7月Netty4 发布
  • 2013年12月发布5.0.0.Alpha1
  • 2015年11月废弃5.0.0

现状与趋势

30000+项目在使用(统计方法:依赖项中声明io.netty:netty-all)

  • 数据库:Cassandra
  • 大数据处理:Spark、Hadoop
  • Message Queue: RocketMQ
  • 检索: Elasticsearch
  • 框架:gRPC、Apache Dubbo
  • 分布式协调器:ZooKeeper
  • 工具类: async-http-client

Issues · netty/netty · GitHub

同时也可以看到Netty中大部分的问题都已经解决了。

第一个Netty程序

maven中引入一个比较稳定的4.1.25.Final的版本

 <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.28.Final</version>
        </dependency>

代码如下:

image.png

image.png

重要的类、方法解析

EventLoop

EventLoop暂时可以看成一个线程、EventLoopGroup自然就可以看成线程组。

image.png

网络编程里,“服务器”和“客户端”实际上表示了不同的网络行为;换句话说,是监听传入的连接还是建立到一个或者多个进程的连接。因此,有两种类型的引导:一种用于客户端(简单地称为Bootstrap),而另一种(ServerBootstrap)用于服务器。无论你的应用程序使用哪种协议或者处理哪种类型的数据,唯一决定它使用哪种引导类的是它是作为一个客户端还是作为一个服务器。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值