深入netty学习--netty简介

Posted 建华老刘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入netty学习--netty简介相关的知识,希望对你有一定的参考价值。

随着互联网行业的飞速发展,网站的规模也在不断扩大,系统并发访问量也越来越高,传统基于 Tomcat 等 Web 容器的垂直架构已经无法满足需求,需要拆分应用进行服务化,以提高开发和维护效率。从网络情况看,垂直的架构需要被水平拆分,水平拆分之后系统一般采用分布式部署,各个节点之间需要远程服务调用,此时,Netty 作为异步高性能的 RPC 框架应运而生。


由此可见,学好 RPC 框架是分布式架构的基础,当然现在互联网流行的 RPC 框架很多,像 Netty、Mina、RMI、Apache Thrift、Protocol buffers等。但是 Netty 有很多其他框架不具备的特性,所以作为一个高性能的网络框架更值得我们学习。


下面我们就先从 Netty 官网了解一下 Netty 到底是什么,能提供什么特性,支持哪些协议。


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


Netty 是为快速开发高性能、高可靠性的网络服务器和客户端而提供的一种异步的、基于事件驱动的网络框架。


Netty的特性

1. 设计

  •     适用于不同协议的统一API(阻塞或者非阻塞)

  •     基于灵活可扩展的事件模型,从而实现关注点分离的架构设计

  •     可定制的线程模型,单线程或者线程池

  •     真正的无连接数据报套接字支持(since 3.1)

2. 易用性

  •     良好的javadoc,用户指南和示例

  •     不需要而外的jar包依赖,只需要JDK5 或以上版本就足够了

3. 性能

  •     更好的吞吐量、低延迟

  •     需要更少的资源

  •     尽量少的内存拷贝

4. 安全

  •     完全支持 SSL/TLS 和 StartTLS


Netty 架构图

由上图可以看出,Netty 分为三大部分,核心模块、传输服务、协议支持。下面分别详细的说明一下。


核心模块

  • 可扩展的事件模型

  • 统一的API

  • 支持零拷贝和丰富的字节缓冲区


传输服务

  • 套接字和数据报的传输

  • Http 隧道

  • 基于虚拟内存的管道传输


协议支持

  • HTTP、WebSocket协议

  • SSL StartTLS 支持

  • Google Protobuf支持

  • zlib/gzip 压缩支持

  • 大文件传输支持

  • RTSP 流媒体支持

  • 遗留的文本和二进制的支持


本文主要是让大家从宏观上了解一下 Netty,在以后的文章中我会详细的讲解 Netty 的每一个细节,期待大家的参与。


您在阅读本文以及以后的文章内容时,如发现错误请即使告知我,我好及时修复。



    


以上是关于深入netty学习--netty简介的主要内容,如果未能解决你的问题,请参考以下文章

netty常用API学习

Netty 简介《Netty In Action》 #yyds干货盘点#

Netty源码面试解析实战- 引导篇

netty框架学习记录

转netty-mina对比一

Netty学习随笔