2.2.1 Netty thread model

tags: High-performance programming  java  netty  Multithreading

Introduction to Netty

Netty is a high-performance, highly scalable asynchronous event-driven network application framework, which greatly simplifies network programming such as TCP and UDP client and server development.

Four important aspects of Netty:

  1. Reactor threading model: a high-performance multi-threaded programming idea
  2. Channel concept defined by Netty: enhanced channel concept
  3. ChannelPipeline responsibility chain design pattern: event handling mechanism
  4. Memory management: enhanced ByteBuf buffer

Netty overall structure diagram

Simple Netty example

/**
 * Echoes back any received data from a client.
 */
public final class EchoServer {
    static final int PORT = Integer.parseInt(System.getProperty("port", "8080"));

    public static void main(String[] args) throws Exception {
        // Configure the server.
        // Create EventLoopGroup accept thread group NioEventLoop
        EventLoopGroup bossGroup = new NioEventLoopGroup(1);
        // Create EventLoopGroup I/O thread group
        EventLoopGroup workerGroup2 = new NioEventLoopGroup(1);
        try {
            // The server starts the boot tool class
            ServerBootstrap b = new ServerBootstrap();
            // Configure the reactor thread group processed by the server and other configurations of the server
            b.group(bossGroup, workerGroup2).channel(NioServerSocketChannel.class).option(ChannelOption.SO_BACKLOG, 100)
                    .handler(new LoggingHandler(LogLevel.DEBUG)).childHandler(new ChannelInitializer<SocketChannel>() {
                @Override
                public void initChannel(SocketChannel ch) throws Exception {
                    ChannelPipeline p = ch.pipeline();
                    p.addLast(new com.study.hc.net.netty.EchoServerHandler());
                }
            });
            // Start the service through bind
            ChannelFuture f = b.bind(PORT).sync();
            // Block the main thread, knowing that the network service is closed
            f.channel().closeFuture().sync();
        } finally {
            // Close the thread group
            bossGroup.shutdownGracefully();
            workerGroup2.shutdownGracefully();
        }
    }
}

Netty thread model

In order to make NIO processing better use of multi-threading features, Netty implements the Reactor threading model.

There are four core concepts in the Reactor model:

  1. Resources (request/task)
  2. Synchronous Event Demultipexer Synchronous Event Demultipexer
  3. Dispatcher
  4. Request Handler

EventLoopGriup initialization process

EventLoop start

EventLoop itself implements the Executor interface. When the executor method is called to submit a task, it is judged whether to start, and if it is started, the built-in executor is called to trigger the execution of the run method.

Bind binding port process

Channel concept

Channel in netty is an abstract concept, which can be understood as an enhancement and expansion of JDK NIO Channel. Many properties and methods have been added. For complete information, please refer to the code comments. Here are a few common properties and methods:

Intelligent Recommendation

Netty features and thread model

Zero copy hard driver - kernel buffer - protocol engine only DMA copy avoids cpu copy There was actually a cpu copy of kernel buffer - socket buffer, but the copied information can rarely be ignored; ...

013. NETTY thread model

Introduction to Netty Netty is a high-performance, high-scalable asynchronous event-driven network application framework, which greatly simplifies network programming such as TCP and UDP clients and s...

Netty thread model and basics

Why use Netty Netty is an asynchronous event-driven web application framework for rapid development of maintainable high-performance and high-profile servers and clients. Netty has the advantages of h...

Netty thread model and gameplay

Event cycle group   All I / O operations in Netty are asynchronous, and the asynchronous execution results are obtained by channelfuture. Asynchronously executes a thread pool EventLoopGroup, it ...

Netty - Thread Model Reactor

table of Contents Thread model 1, traditional IO service model 2, Reactor mode reactor Three modes: to sum up Netty model Excommissum Thread model 1, traditional IO service model Blocked IO mode Get i...

More Recommendation

Netty thread model [next]

Hey everyone, I amJava small white 2021。 The programmer of the halfway is in the development of aircraft, and the opportunity to find a more interesting thing under the development of a surveying cour...

【Netty】 thread model

content 1. Single Reactor single thread 2. Single Reactor Multi -thread 3. Reactor Main Strike Model Single -threaded model (single Reactor single thread) Multi -threaded model (single Reactor multi -...

Netty entry thread model

Single-threaded model: the boss thread is responsible for connection and data reading and writing Hybrid model: the boss thread is responsible for connection and data reading and writing, and the work...

Redis source code parsing: 09redis database implementations (key operation, key timeout function key space notification)

This chapter of the Redis database server implementations are introduced, indicating achieve Redis database-related operations, including key-value pairs in the database to add, delete, view, update a...

PAT B1041-B1045 Question

1、b1041 2、b1042 3、b1043 4、b1044 5、b1045...

Copyright  DMCA © 2018-2026 - All Rights Reserved - www.programmersought.com  User Notice

Top