09 2019 档案
摘要:问题 : NioEventLoop 作用到底是什么?是在哪里用到的? NioEventLoop 和我们开头创建的 ServerBootstrap 和 EventLoopGroup 是什么关系 ? NioEventLoop 和 NioChannel 怎么传递的(按合理,一个channel应该分配一个N
阅读全文
摘要:概述 先了解一下 netty 大概框架图 ,可以看到客户端的创建和服务端最大的区别 - 服务端传入两个 EventLoopGroup,客户端传入一个 EventLoopGroup - channel 的类型也不同,服务端传入的是 NioServerSocketChannel ,客户端传入的是 Nio
阅读全文
摘要:NIO Select 知识 select 示例代码 : 源码阅读 通过上一篇文章我们知道了,netty 实际是由两个 Reactor 组成,前者维护一个 Acceptor 绑定接口,处理客户端的连接,然后再将读写,解码编码工作交给另外一个 Reactor ,我们先来看一下这样一个过程,明白总体的过程
阅读全文
摘要:问题 : DirectBuffer DirectByteBuffer 自身是一个Java对象,在Java堆中;而这个对象中有个long类型字段address,记录着一块调用 malloc() 申请到的native memory。DirectByteBuffer 自身是(Java)堆内的,它背后真正承
阅读全文
摘要:问题 : 零拷贝解决的是什么问题 零拷贝的本质是什么 文章部分知识来自参考链接中朱大的文章,半原创 概述 假如有以下场景:你需要发送一张图片给某个朋友,那么选择好图片后(read),建立连接发送。(write) 这个过程可以见下图 &ems
阅读全文
摘要:问题 为什么需要虚拟内存 如何实现 虚拟内存的动机 早期程序员自己写程序还要自己管理内存地址(内存条上的地址),要自己知道分配到内存条的哪个地方, 为了解决这个问题,早期的分页管理就出现了,程序员只要知道逻辑地址就可以,然后真实的物理地址不需要管,由分页管理。 举例 : 当时有一种计算机,其指令中给
阅读全文
摘要:问题 session 如何生成的?sessionId为什么不直接使用时间戳+单机名 sessionid 关闭的时候的逻辑,sessionid 的维护是由各节点还是leader ? 会话相关 sessionid 生成 我们看一下session 管理类 SessionTracke
阅读全文
摘要:前言 在开始阅读代码前我们先来了解一下zk 的大致结构,具体大概要实现的核心功能有那些,心中有个大概的框架阅读代码时再深入其中的细节,就会非常好懂,本人觉得这是一个阅读源码的好方法,可以最快地切入到源码中,先知大体,后知细节。 我们先不考虑权限控制的问题,zk底层使用 zab ,是一种分布式一致性协议,服务的对象是客户端,需要做持久化,根据这些我们可以大致做出以下功能视图。 更...
阅读全文