没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
8页
Netty是一个高性能、异步的网络通信框架,它解决了JDK自带的NIO API使用复杂的问题,提供了更高的性能和更低的延迟。Netty广泛应用于互联网行业、游戏行业和大数据领域,如阿里的Dubbo和RocketMQ等都使用了Netty作为基础通信组件。Netty的线程模型,将IO操作和业务逻辑清晰地分离,使开发者可以专注于业务逻辑的开发。此外,Netty还提供了丰富的组件和工具,如Bootstrap、Channel、Selector、NioEventLoop等,让网络编程更加简单和高效。通过学习Netty,可以提升我们的Java网络编程技能,为构建高性能的分布式系统打下坚实的基础。
资源推荐
资源详情
资源评论
Netty初探
NIO的类库和API繁杂,使用麻烦:需要熟练掌握Selector、ServerSocketChannel、SocketChannel、
ByteBuffer等。
开发工作量和难度都非常大:例如客户端面临断线重连、网络闪断、心跳处理、半包读写、网络拥塞和异常流的处
理等等。
Netty对JDK自带的NIO的API进行了良好的封装,解决了上述问题。且Netty拥有高性能、吞吐量更高,延迟更
低,减少资源消耗,最小化不必要的内存复制等优点。
Netty现在都在用的是4.x,5.x版本已经废弃,Netty4.x需要JDK6以上版本支持
Netty的使用场景:
1)互联网行业:在分布式系统中,各个节点之间需要远程服务调用,高性能的RPC框架必不可少,Netty作为异步
高性能的通信框架,往往作为基础通信组件被这些RPC框架使用。典型的应用有:阿里分布式服务框架Dubbo的
RPC框架使用Dubbo协议进行节点间通信,Dubbo协议默认使用Netty作为基础通信组件,用于实现。各进程节
点之间的内部通信。Rocketmq底层也是用的Netty作为基础通信组件。
2)游戏行业:无论是手游服务端还是大型的网络游戏,Java语言得到了越来越广泛的应用。Netty作为高性能的基
础通信组件,它本身提供了TCP/UDP和HTTP协议栈。
3)大数据领域:经典的Hadoop的高性能通信和序列化组件Avro的RPC框架,默认采用Netty进行跨界点通
信,它的NettyService基于Netty框架二次封装实现。
netty相关开源项目:https://netty.io/wiki/related-projects.html
Netty通讯示例
Netty的maven依赖:
1 <dependency>
2 <groupId>io.netty</groupId>
3 <artifactId>netty‐all</artifactId>
4 <version>4.1.35.Final</version>
5 </dependency>
服务端代码:
1 publicclassNettyServer{
2
3 publicstaticvoidmain(String[]args)throwsException{
4
5 //创建两个线程组bossGroup和workerGroup,含有的子线程NioEventLoop的个数默认为cpu核数的两倍
6 //bossGroup只是处理连接请求,真正的和客户端业务处理,会交给workerGroup完成
7 EventLoopGroupbossGroup=newNioEventLoopGroup(1);
8 EventLoopGroupworkerGroup=newNioEventLoopGroup();
9 try{
10 //创建服务器端的启动对象
11 ServerBootstrapbootstrap=newServerBootstrap();
12 //使用链式编程来配置参数
13 bootstrap.group(bossGroup,workerGroup)//设置两个线程组
14 .channel(NioServerSocketChannel.class)//使用NioServerSocketChannel作为服务器的通道实现
15 //初始化服务器连接队列大小,服务端处理客户端连接请求是顺序处理的,所以同一时间只能处理一个客户端连接。
16 //多个客户端同时来的时候,服务端将不能处理的客户端连接请求放在队列中等待处理
17 .option(ChannelOption.SO_BACKLOG,1024)
18 .childHandler(newChannelInitializer<SocketChannel>(){//创建通道初始化对象,设置初始化参数
19
20 @Override
21 protectedvoidinitChannel(SocketChannelch)throwsException{
资源评论
光芒软件工匠
- 粉丝: 789
- 资源: 64
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功