一、netty源码分析之概述

news/2024/7/15 16:47:34 标签: netty, 源码

作为Java程序员,netty大家应该都或多或少的接触过。netty作为一个异步事件驱动的网络框架被广泛使用。我们从netty的官网的一张图上可以看到netty有哪些特点:
<a class=netty" />
netty的核心能力有三点:

  • 可扩展的事件模型
  • 通用的通信API
  • 有零拷贝能力的字节缓冲区

在这三种核心能力的基础上,扩展出了对多种协议和传输服务的支持。
当然netty的优点不仅仅如此,后面我们将会通过源码的方式来分析netty到底有哪些优势。接下来的文章已经默认了大家熟悉netty的基本使用。

这里先贴出来一段最简单的netty创建服务端的代码(摘自netty官网https://netty.io/wiki/user-guide-for-4.x.html),接下来的分析都是基于接下来的这段代码:

EventLoopGroup bossGroup = new NioEventLoopGroup(); // (1)
        EventLoopGroup workerGroup = new NioEventLoopGroup();
        try {
            ServerBootstrap b = new ServerBootstrap(); // (2)
            b.group(bossGroup, workerGroup)
             .channel(NioServerSocketChannel.class) // (3)
             .childHandler(new ChannelInitializer<SocketChannel>() { // (4)
                 @Override
                 public void initChannel(SocketChannel ch) throws Exception {
                     ch.pipeline().addLast(new DiscardServerHandler());
                 }
             })
             .option(ChannelOption.SO_BACKLOG, 128)          // (5)
             .childOption(ChannelOption.SO_KEEPALIVE, true); // (6)
    
            // Bind and start to accept incoming connections.
            ChannelFuture f = b.bind(port).sync(); // (7)
    
            // Wait until the server socket is closed.
            // In this example, this does not happen, but you can do that to gracefully
            // shut down your server.
            f.channel().closeFuture().sync();
        } finally {
            workerGroup.shutdownGracefully();
            bossGroup.shutdownGracefully();
        }

接下来的源码分析是基于netty的4.1.39.Final版本。


http://www.niftyadmin.cn/n/864327.html

相关文章

HDU2063 过山车

过山车Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15793 Accepted Submission(s): 6923Problem DescriptionRPG girls今天和大家一起去游乐场玩&#xff0c;终于可以坐上梦寐以求的过山车了。可是&#xff…

RocketMQ网络通信

目录简介服务端实现客户端实现线程模型总结简介 RocketMQ的remoting模块是RocketMQ客户端、消费端、NameServer、Broker之间通信的基础。是通过netty框架实现的。核心类的继承结构如下&#xff1a; RemotingService接口定义了start()、shutdown()、registerRPCHook()方法。r…

RocketMQ存储之MappedFile

文章目录一、概述二、实现细节变量初始化数据write数据commit数据flush数据读取销毁文件内存文件映射预热三、总结一、概述 RocketMQ的存储依赖于三类文件&#xff1a;CommitLog、ConsumeQueue、IndexFile&#xff0c;每类文件的具体作用可以参考官方文档&#xff0c;这里我们…

HDU2037今年暑假不AC

今年暑假不ACTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 40203 Accepted Submission(s): 21480Problem Description“今年暑假不AC&#xff1f;”“是的。”“那你干什么呢&#xff1f;”“看世界杯呀&…

一位ACMer过来人的心得

刻苦的训练我打算最后稍微提一下。主要说后者&#xff1a;什么是有效地训练&#xff1f; 我想说下我的理解。 很多ACMer入门的时候&#xff0c;都被告知&#xff1a;要多做题&#xff0c;做个500多道就变牛了。其实&#xff0c;这既不是充分条件、也不会是必要条件。 我觉得一般…

RocketMQ存储之MappedFileQueue

文章目录一、概述二、实现细节总结一、概述 上一篇我们分析了MappedFile的实现细节&#xff0c;MappedFile实现了文件内存映射的功能。本篇我们分析MappedFileQueue的实现。 MappedFileQueue的作用是&#xff1a;将多个MappedFile按顺序组织起来&#xff0c;并且提供MappedFi…

HDU2079

选课时间(题目已修改,注意读题)Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3678 Accepted Submission(s): 2891Problem Description又到了选课的时间了&#xff0c;xhd看着选课表发呆&#xff0c;为了想让下…

ACM 计算几何中的精度问题(转)

计算几何头疼的地方一般在于代码量大和精度问题&#xff0c;代码量问题只要平时注意积累模板一般就不成问题了。精度问题则不好说&#xff0c;有时候一个精度问题就可能成为一道题的瓶颈&#xff0c;简直“画龙点睛”。这些年的题目基本是朝着越来越不卡精度的方向发展了&#…