1. Netty笔记03-Netty组件和设计

    本章包含:

    • Netty的技术与架构
    • Channel, EventLoop, 和 ChannelFuture
    • ChannelHandlerChannelPipeline
    • Bootstrapping

    3.1 Channel, EventLoop和ChannelFuture

    Channel, EventLoopChannelFuture可以看成是Netty对网络的抽象:

    • Channel:Socket
    • EventLoop: 控制流、多线程和并发
    • ChannelFuture:异步通知

    3.1.1 Channel接口

    基本IO操作(bind(), connect(), read(), write())依赖于底层网络传输。在基于Java的网络中,基础组成是Socket类。Netty的Channel接口提供了的API能大幅度减少直接操作Socket的复杂度。此外,Channel是所有扩展类的根类。下面是一些继承的类:

    • EmbeddedChannel ...
    Tagged as : Netty
  2. Netty笔记02-第一个Netty应用

    本章包含: - 设置开发环境 - 一个Echo服务和客户端 - 构建和测试应用

    2.1 设置开发环境

    下载安装JDK和MAVEN,设置JAVA_HOME,并且设置M2_HOME

    2.2 Netty的客户端和服务器概览

    下图是我们的Echo服务器和客户端一览。虽然我们大部分是在写web应用,但实现服务器和客户端有助于更好的理解Netty API. Alt text

    2.3 编写Echo服务器

    所有的Netty Server都需要: - 至少一个ChannelHandler:这个组建实现了服务端用于处理客户端提交的数据,它是业务逻辑。 - Bootstrapping:用来配置服务的启动代码。最少的启动代码是绑定端口。

    2.3.1 ChannelHandler和业务逻辑

    上一篇中,我们介绍了Future和回调,并且介绍了他们用于事件驱动设计。我们也讨论了ChannelHandler,用于接收和响应事件通知。在Netty应用中,所有的数据处理逻辑都是包含在这个核心概念里面的。

    因为Echo服务用于响应进来的消息,它需要实现 ...

    Tagged as : Netty
  3. Netty笔记01-Netty简介

    Netty(http://netty.io )是一个用来快速开发可维护高性能服务器和客户端应用的异步事件驱动网络应用框架。

    高性能系统不仅需要我们有优秀的编码技巧,还需要对网络、多线程与并发有相关的经验。

    1.1 Java网络

    早期版本Java的java.net支持本地系统的socket库提供的阻塞函数。

    Alt text

    • accept()一直阻塞直到ServerSocket简历了链接,它返回一个Socket对象用来在客户端和服务器之间进行通信。
    • BufferedRead用来从Socket中读取文本;PrintWriter用来写入。
    • readLine阻塞直到发送了回车换行

    上面的代码每次只能处理一个链接。要管理多个并发的客户端,需要为每一个新的Socket来分配一个Thread,如图: Alt text

    我们来思考一下这个方法: - 首先,很多时间线程处于等待状态,这是一种资源的浪费; - 每个线程需要在内存上分配64k到1M的空间; - 即使JVM支持大量的线程,但上下文之间的切换耗时。

    1.1.1 Java NIO

    setsockopt ...

    Tagged as : Netty

Page 1 / 1