深入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简介的主要内容,如果未能解决你的问题,请参考以下文章