认识Netty

1.netty是什么

在官网地址https://netty.io/,我们可以详细的看到 关于Netty的相关介绍,这里做一个简单的翻译。

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

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

这句话是netty简介的标题,同时也是对netty总体的一个概括。

Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server.'

Quick and easy' doesn't mean that a resulting application will suffer from a maintainability or a performance issue. Netty has been designed carefully with the experiences earned from the implementation of a lot of protocols such as FTP, SMTP, HTTP, and various binary and text-based legacy protocols. As a result, Netty has succeeded to find a way to achieve ease of development, performance, stability, and flexibility without a compromise.

这两段话是对于netty的详细介绍,

Netty基于NIO的客户端和服务端的框架能够快速、简单的搭建协议的服务端和客户端的网络应用,大大减少了网络部分的开发。

同时在保证快速、简单的同时也没有忽略应用的可维护性、高性能,通过对各种协议的经验总结,找到了一种不妥协的简单、高性能、稳定、灵活的方法。

最后总结一下,netty本质就是一个网络应用开发的框架,基于异步、事件驱动实现,能够快速、简单帮我们开发高性能、可维护的网络服务器和客户端。

2.netty做什么

其实这个在上面netty介绍已经描述了,Netty可以帮助我们开发高性能、可维护的网络服务器和客户端。

那么基于Netty开发的软件有哪些呢?

我们可以看一下Netty的Git上面描述的3rd-party projects Related projects

其中列举几个我们熟悉的包括Elaticsearch搜索引擎、Dubbo分布式框架、gRpc框架、分布式调度Zookeeper、Spark、Hadoop、RocketMQ。

3.netty优点

在Netty官网上面我们可以看到Netty描述的相关特点,其实也是映射到我们这里提到的优点,主要提到一下五个方面:
Design(设计方面)

1.对各种协议、阻塞、非阻塞通信统一的API(这一方面体现Netty对API的提供完善、以及命名的规范,后续会详细分析源码)

2.基于灵活和可配置化的事件驱动模型,让我们清晰的分离关注点(比如拆包、序列化、日志、业务处理、心跳检测)

3.高度可定制的线程模型(主要体现在对于JDK的Executor的各种扩展支持)

4.对于无连接数据套接字的支持Since3.1

Ease of use(易用性)

1.完善的文档、用户指南、代码Demo

2.接口的封装使得我们上手比较容易

Performance(性能)

1.高吞吐量、低延迟

2.更少的资源消耗(池化技术在Netty中使用频繁)

3.最小化不必要的内存复制(零COPY)

Security(安全)

1.完善的SSL/TLS和StartTLS支持

Community(社区)

1.开源的早、并且在持续的更新(可以参考一下Netty的活跃度排行榜以及Commit提交历史)

4.架构


这张图的Netty官网的一张架构图,主要分为三个部分

1.Core核心层

1.支持零复制丰富的Byte Buffer

2.标准统一的通信API

3.可扩展的事件模型

2.传输层服务

1.TCP的Socket以及UDP的Datagram

2.HttpTunnel (有兴趣的了解一下)

3.IN-VM Pipe

3.支撑层

1.包括扩展的协议 例如HTTP、WebSocket

2.支撑的服务 例如序列化、解压缩等

你可能感兴趣的:(认识Netty)