
netty学习之路
高性能服务是当下互联网服务一个永不过时的话题,本专栏记载了笔者的netty学习心得,希望能对读者有所启发。
懋为
居安思危,思则有备,有备无患,敢以此规。
展开
-
Netty框架学习之路(七)—— 零拷贝
前言今天参加了一个面试,面试官问了关于对Netty中零拷贝的理解,答得不是很完美,因此回来后仔细研究了一下。零拷贝 Zero-Copy首先,零拷贝不是Netty特有的机制,传统意义上的零拷贝指的是在操作数据时,不需要将数据 buffer 从一个内存区域拷贝到另一个内存区域,因为少了一次内存的拷贝,因此 CPU 的效率就得到的提升。这是一种在 OS 层面上的 Zero-copy,目的是避...原创 2018-04-26 01:12:16 · 1658 阅读 · 1 评论 -
Netty框架学习之路(六)—— 引导
前言之前的博文介绍了Channel、EventLoop及由其衍生出来的相关概念。但这些都是静态的概念,为了能使Netty程序运行起来,必须要有一个全局的组件将上述内容串联起来,这便就是本文所讲内容——引导。引导类引导类的层次结构如下: 主要包括一个抽象父类(AbstractBootstrap)和两个具体的子类(Bootstrap、ServerBootstrap)。从类名可以看...原创 2018-04-02 01:31:45 · 604 阅读 · 0 评论 -
Netty框架学习之路(五)—— EventLoop及事件循环机制
在前面的博文中,我们大致分析了解了Channel及其相关概念。在Netty的线程模型中,每个channel都有唯一的一个eventLoop与之相绑定,那么在这篇博文中我们来看一下EvenLoop及其相关概念。在传统的Java NIO编程中,我们经常使用到如下代码: public static void main(String[] args) { try { ...原创 2018-03-30 00:22:48 · 8210 阅读 · 2 评论 -
Netty框架学习之路(四)—— Channel及相关概念
在Netty框架中,Channel是其中之一的核心概念,是Netty网络通信的主体,由它负责同对端进行网络通信、注册和数据操作等功能。本文我们来详细地分析 Netty 中的 Channel以及跟Channel相关的其他概念,包括ChannelPipeline、ChannelHandlerContext、ChannelHandler等。Channel的抽象类AbstractChannel有一如下...原创 2018-03-22 23:43:05 · 30429 阅读 · 0 评论 -
Netty框架学习之路(三)—— 初识Netty线程模型
前言笔者认为单独讨论Netty的线程模型太抽象,如果能在现实生活中找到一样事物作为类比,那肯定能帮助我们提升对Netty的认识。笔者曾经利用大学毕业和入职报到的空窗期去餐厅打工体验生活,感想此处不表。餐厅里面有一个司空见惯的现象,一般服务员的数量都会少于餐桌的数量,也就是说,在用餐高峰时期,一个服务员在同一时刻可能会招待不止一桌的客人,这是怎么做到的呢?Netty线程模型首先,...原创 2018-03-14 23:23:38 · 1055 阅读 · 1 评论 -
Netty框架学习之路(二)—— 一个简单的Netty程序
前言上一篇博文中主要介绍了三种IO模式,Netty是一个高性能、异步事件驱动的Java NIO框架,本文以一个简单的Netty程序带领大家先来领略一下Netty的风采,程序的功能主要是获取当前的服务器时间。客户端TimeClient.javapublic class TimeClient { public void connect(int port, String...原创 2018-03-13 23:39:46 · 1093 阅读 · 2 评论 -
Netty框架学习之路(一)—— Java网络IO模型
前言《Unix网络编程:卷1》中介绍了5中IO模型,JAVA作为运行在宿主机上的程序,底层也遵循这5中I/O模型规则。这5中I/O模型分别是:阻塞式IO非阻塞式IOI/O复用信号驱动式IO异步IO 按POSIX标准来分,IO分为同步和异步,上面的前4钟都属于同步IO。在Unix系统中,操作系统的IO操作是一个系统调用recvfrom(),即一个系统调用recvfrom包...原创 2018-03-03 23:27:55 · 2600 阅读 · 2 评论