摘要:
上一篇文章主要讲了netty的read过程,本文主要分析一下write和writeAndFlush。 主要内容 本文分以下几个部分阐述一个java对象最后是如何转变成字节流,写到socket缓冲区中去的 pipeline中的标准链表结构 一个标准的pipeline链式结构如下 数据从head节点流入 阅读全文
摘要:
在上一篇文章中,我们分析了processSelectedKey这个方法中的accept过程,本文将分析一下work线程中的read过程。 该方法主要是对SelectionKey k进行了检查,有如下几种不同的情况 1)OP_ACCEPT,接受客户端连接 2)OP_READ, 可读事件, 即 Chan 阅读全文
摘要:
通读本文,你会了解到1.netty如何接受新的请求2.netty如何给新请求分配reactor线程3.netty如何给每个新连接增加ChannelHandler netty中的reactor线程 netty中最核心的东西莫过于两种类型的reactor线程,可以看作netty中两种类型的发动机,驱动着 阅读全文
摘要:
在上一篇文章中,我们已经了解了pipeline在netty中所处的角色,像是一条流水线,控制着字节流的读写,本文,我们在这个基础上继续深挖pipeline在事件传播 Unsafe 顾名思义,unsafe是不安全的意思,就是告诉你不要在应用程序里面直接使用Unsafe以及他的衍生类对象。 netty官 阅读全文
摘要:
netty在服务端端口绑定和新连接建立的过程中会建立相应的channel,而与channel的动作密切相关的是pipeline这个概念,pipeline像是可以看作是一条流水线,原始的原料(字节流)进来,经过加工,最后输出 pipeline 初始化 在上一篇文章中,我们已经知道了创建NioSocke 阅读全文
摘要:
本文接着前两篇文章来讲,主要讲服务端类剩下的部分,我们还是来先看看服务端的代码 在前面两篇博文中从源码的角度分析了如下几行代码主要做了哪些工作。 本篇博文将从源码的角度分析ChannelFuture f = b.bind(8888).sync() 的内部实现。这样就完成了Netty服务器端启动过程的 阅读全文
摘要:
BootStrap在netty的应用程序中负责引导服务器和客户端。netty包含了两种不同类型的引导: 1. 使用服务器的ServerBootStrap,用于接受客户端的连接以及为已接受的连接创建子通道。 2. 用于客户端的BootStrap,不接受新的连接,并且是在父通道类完成一些操作。 一般服务 阅读全文
摘要:
提到Netty首当其冲被提起的肯定是支持它承受高并发的线程模型,说到线程模型就不得不提到NioEventLoopGroup这个线程池,接下来进入正题。 线程模型 首先来看一段Netty的使用示例 下面将分析第一、二行代码,看下NioEventLoopGroup类的构造函数干了些什么。其余的部分将在其 阅读全文
摘要:
Tomcat Session 概述 首先 HTTP 是一个无状态的协议, 这意味着每次发起的HTTP请求, 都是一个全新的请求(与上个请求没有任何联系, 服务端不会保留上个请求的任何信息), 而 Session 的出现就是为了解决这个问题, 将 Client 端的每次请求都关联起来, 要实现 Ses 阅读全文
摘要:
我们接着上一篇文章的容器处理来讲,当postParseRequest方法返回true时,则由容器继续处理,在service方法中有connector.getService().getContainer().getPipeline().getFirst().invoke(request, respon 阅读全文