Netty学习(一)- Netty入门与Netty应用实战

一、什么是Netty

Netty官网上是这样定义Netty的:

Netty is an asynchronous event-driven network application framework
for rapid development of maintainable high performance protocol servers & clients.

用人话(Google翻译)的话来说就是:

Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务端和客户端。

简单来说,Netty有以下特点:

  • 设计:适用于不同的协议(阻塞和非阻塞);可定制的线程模型;
  • 性能:更好的吞吐量、低延迟;省资源;减少不必要的内存拷贝;提供的Reactor线程模型能够做到高效的并发处理;
  • 安全:完整的SSL/TLS和STARTTLS支持;
  • 易用:封装了JDK的NIO,大大简化NIO编程;并且自带粘包拆包。异常检测等机制;
  • 应用:在消息中间件、分布式通信框架中有很好的应用和验证(Dubbo默认使用Netty作为基础通信框架);

二、Netty入门demo

本节将通过搭建一个语音机器人的demo来了解Netty的用法,实现的主要功能为:客户端发送查询指令,服务端根据通过Netty框架接收到指令后做出响应,并在客户端显示。

首先导入Netty需要的依赖,本次使用的是4.x版本:

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

服务端
首先是服务端的搭建。服务端的作用是接收客户端命令并处理命令,做出响应。整个流程如下:

  • 创建两个NioEventLoopGroup实例,一个用来接受客户端的连接;另一个用来进行SocketChannel读写;
  • 创建ServerBootstrap,用于启动NIO服务端的辅助启动类;
  • 调用创建ServerBootstrap的group方法,将两个NioEventLoopGrou作为参数传入;
  • 创建NioServerSocketChannel,并设置TCP参数,将backlog设置为1024(服务端在接收客户端的TCP连接的时候,同一时间只能处理一个,多了会将请求放在队列里,backlog指定了队列大小);
  • 绑定ChildChanelHandler,创建pipeline, 处理网络I/O事件、消息编解码等;
  • 线程组阻塞、关闭;
/**
 * Created by wanggenshen
 * Date: on 2019/5/16 00:49.
 * Description: 机器人服务端, 用于接收指令, 并对指令作出新响应
 */
public class RobotServer {
   

    public static void bind(int port) throws InterruptedException {
   
        // 用于服务端接受客户端连接
        EventLoopGroup parentGroup = new NioEventLoopGroup();
        // 用于进行SocketChannel的网络读写
        EventLoopGroup workGroup = new NioEventLoopGroup();
        try {
   
            // 启动NIO服务端辅助启动类
            ServerBootstrap bootstrap = new ServerBootstrap();
            bootstrap.group(parentGroup, workGroup)
                    .channel(NioServerSocketChannel.class)
                    .option(Channe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值