思维导图备注

Netty、Redis、Zookeeper高并发实战 - 尼恩
首页 收藏书籍 阅读记录
  • 书签 我的书签
  • 添加书签 添加书签 移除书签 移除书签

第12章 亿级高并发IM架构的开发实践

浏览 1 扫码
  • 小字体
  • 中字体
  • 大字体
2022-03-01 07:40:16
请 登录 再阅读
上一篇:
下一篇:
  • 书签
  • 添加书签 移除书签
  • 前言
    • 1.2 高并发利器Redis
      • 1.2.2 Redis成为缓存事实标准的原因
    • 1.3 分布式利器ZooKeeper
      • 1.3.2 ZooKeeper的优势
    • 1.4 高并发IM的综合实践
      • 1.4.1 高并发IM的学习价值
      • 1.4.2 庞大的应用场景
    • 1.5 Netty、Redis、ZooKeeper实践计划
      • 1.5.2 第2天:Reactor反应器模式实践
      • 1.5.3 第3天:异步回调模式实践
      • 1.5.4 第4天:Netty基础实践
      • 1.5.5 第5天:解码器(Decoder)与编码器(Encoder)实践
      • 1.5.6 第6天:JSON和ProtoBuf序列化实践
      • 1.5.7 第7~10天:基于Netty的单聊实战
      • 1.5.8 第11天:ZooKeeper实践计划
      • 1.5.9 第12天:Redis实践计划
    • 1.6 本章小结
  • 第2章 高并发IO的底层原理
    • 2.1 IO读写的基础原理
      • 2.1.1 内核缓冲区与进程缓冲区
      • 2.1.2 详解典型的系统调用流程
    • 2.2 四种主要的IO模型
      • 2.2.1 同步阻塞IO(Blocking IO)
      • 2.2.2 同步非阻塞NIO(None Blocking IO)
      • 2.2.3 IO多路复用模型(IO Multiplexing)
      • 2.2.4 异步IO模型(Asynchronous IO)
    • 2.3 通过合理配置来支持百万级并发连接
    • 2.4 本章小结
  • 第3章 Java NIO通信基础详解
    • 3.1 Java NIO简介
      • 3.1.1 NIO和OIO的对比
      • 3.1.2 通道(Channel)
      • 3.1.3 Selector选择器
      • 3.1.4 缓冲区(Buffer)
    • 3.2 详解NIO Buffer类及其属性
      • 3.2.1 Buffer类
      • 3.2.2 Buffer类的重要属性
      • 3.2.3 4个属性的小结
    • 3.3 详解NIO Buffer类的重要方法
      • 3.3.2 put()写入到缓冲区
      • 3.3.3 flip()翻转
      • 3.3.4 get()从缓冲区读取
      • 3.3.5 rewind()倒带
      • 3.3.6 mark( )和reset( )
      • 3.3.7 clear( )清空缓冲区
      • 3.3.8 使用Buffer类的基本步骤
    • 3.4 详解NIO Channel(通道)类
      • 3.4.1 Channel(通道)的主要类型
      • 3.4.2 FileChannel文件通道
      • 3.4.3 使用FileChannel完成文件复制的实践案例
      • 3.4.4 SocketChannel套接字通道
      • 3.4.5 使用SocketChannel发送文件的实践案例
      • 3.4.6 DatagramChannel数据报通道
      • 3.4.7 使用DatagramChannel数据包通道发送数据的实践案例
    • 3.5 详解NIO Selector选择器
      • 3.5.1 选择器以及注册
      • 3.5.2 SelectableChannel可选择通道
      • 3.5.3 SelectionKey选择键
      • 3.5.4 选择器使用流程
      • 3.5.5 使用NIO实现Discard服务器的实践案例
      • 3.5.6 使用SocketChannel在服务器端接收文件的实践案例
    • 3.6 本章小结
  • 第4章 鼎鼎大名的Reactor反应器模式
    • 4.1 Reactor反应器模式为何如此重要
      • 4.1.1 为什么首先学习Reactor反应器模式
      • 4.1.2 Reactor反应器模式简介
    • 4.2 单线程Reactor反应器模式
      • 4.2.1 什么是单线程Reactor反应器
      • 4.2.2 单线程Reactor反应器的参考代码
      • 4.2.3 一个Reactor反应器版本的EchoServer实践案例
      • 4.2.4 单线程Reactor反应器模式的缺点
    • 4.3 多线程的Reactor反应器模式
      • 4.3.2 多线程Reactor反应器的实践案例
      • 4.3.3 多线程Handler处理器的实践案例
    • 4.4 Reactor反应器模式小结
    • 4.5 本章小结
  • 第5章 并发基础中的Future异步回调模式
    • 5.1 从泡茶的案例说起
    • 5.2 join异步阻塞
      • 5.2.2 使用join实现异步泡茶喝的实践案例
      • 5.2.3 详解join合并方法
    • 5.3 FutureTask异步回调之重武器
      • 5.3.1 Callable接口
      • 5.3.2 初探FutureTask类
      • 5.3.3 Future接口
      • 5.3.4 再探FutureTask类
      • 5.3.5 使用FutureTask类实现异步泡茶喝的实践案例
    • 5.4 Guava的异步回调
      • 5.4.1 详解FutureCallback
      • 5.4.2 详解ListenableFuture
      • 5.4.3 ListenableFuture异步任务
      • 5.4.4 使用Guava实现泡茶喝的实践案例
    • 5.5 Netty的异步回调模式
      • 5.5.1 详解GenericFutureListener接口
      • 5.5.2 详解Netty的Future接口
      • 5.5.3 ChannelFuture的使用
      • 5.5.4 Netty的出站和入站异步回调
    • 5.6 本章小结
  • 第6章 Netty原理与基础
    • 6.1 第一个Netty的实践案例DiscardServer
      • 6.1.2 第一个Netty服务器端程序
      • 6.1.3 业务处理器NettyDiscardHandler
      • 6.1.4 运行NettyDiscardServer
    • 6.2 解密Netty中的Reactor反应器模式
      • 6.2.1 回顾Reactor反应器模式中IO事件的处理流程
      • 6.2.2 Netty中的Channel通道组件
      • 6.2.3 Netty中的Reactor反应器
      • 6.2.4 Netty中的Handler处理器
      • 6.2.5 Netty的流水线(Pipeline)
    • 6.3 详解Bootstrap启动器类
      • 6.3.1 父子通道
      • 6.3.2 EventLoopGroup线程组
      • 6.3.3 Bootstrap的启动流程
      • 6.3.4 ChannelOption通道选项
    • 6.4 详解Channel通道
      • 6.4.2 EmbeddedChannel嵌入式通道
    • 6.5 详解Handler业务处理器
      • 6.5.1 ChannelInboundHandler通道入站处理器
      • 6.5.3 ChannelInitializer通道初始化处理器
      • 6.5.4 ChannelInboundHandler的生命周期的实践案例
    • 6.6 详解Pipeline流水线
      • 6.6.1 Pipeline入站处理流程
      • 6.6.2 Pipeline出站处理流程
      • 6.6.3 ChannelHandlerContext上下文
      • 6.6.4 截断流水线的处理
      • 6.6.5 Handler业务处理器的热拔插
    • 6.7 详解ByteBuf缓冲区
      • 6.7.2 ByteBuf的逻辑部分
      • 6.7.3 ByteBuf的重要属性
      • 6.7.4 ByteBuf的三组方法
      • 6.7.5 ByteBuf基本使用的实践案例
      • 6.7.6 ByteBuf的引用计数
      • 6.7.7 ByteBuf的Allocator分配器
      • 6.7.8 ByteBuf缓冲区的类型
      • 6.7.9 三类ByteBuf使用的实践案例
      • 6.7.10 ByteBuf的自动释放
    • 6.8 ByteBuf浅层复制的高级使用方式
      • 6.8.1 slice切片浅层复制
      • 6.8.2 duplicate整体浅层复制
      • 6.8.3 浅层复制的问题
    • 6.10 本章小结
  • 第7章 Decoder与Encoder重要组件
    • 7.1 Decoder原理与实践
      • 6.9 EchoServer回显服务器的实践案例
        • 6.9.2 共享NettyEchoServerHandler处理器
        • 6.9.3 NettyEchoClient客户端代码
        • 6.9.4 NettyEchoClientHandler处理器
      • 7.1.2 自定义Byte2IntegerDecoder整数解码器的实践案例
      • 7.1.3 ReplayingDecoder解码器
      • 7.1.4 整数的分包解码器的实践案例
      • 7.1.5 字符串的分包解码器的实践案例
      • 7.1.6 MessageToMessageDecoder解码器
    • 7.2 开箱即用的Netty内置Decoder
      • 7.2.1 LineBasedFrameDecoder解码器
      • 7.2.2 DelimiterBasedFrameDecoder解码器
      • 7.2.3 LengthFieldBasedFrameDecoder解码器
    • 7.2.4 多字段Head-Content协议数据帧解析的实践案例
      • 7.3.1 MessageToByteEncoder编码器
    • 7.4 解码器和编码器的结合
      • 7.4.1 ByteToMessageCodec编解码器
      • 7.4.2 CombinedChannelDuplexHandler组合器
    • 7.5 本章小结
  • 第8章 JSON和ProtoBuf序列化
    • 8.1 详解粘包和拆包
      • 8.1.1 半包问题的实践案例
      • 8.1.2 什么是半包问题
      • 8.1.3 半包现象的原理
    • 8.3 Protobuf协议通信
      • 8.3.1 一个简单的proto文件的实践案例
      • 8.3.2 控制台命令生成POJO和Builder
      • 8.3.3 Maven插件生成POJO和Builder
      • 8.2 JSON协议通信
        • 8.2.2 JSON序列化与反序列化的实践案例
        • 8.2.3 JSON传输的编码器和解码器之原理
        • 8.2.4 JSON传输之服务器端的实践案例
        • 8.2.5 JSON传输之客户端的实践案例
    • 8.4 Protobuf编解码的实践案例
      • 8.4.2 Protobuf传输之服务器端的实践案例
      • 8.4.3 Protobuf传输之客户端的实践案例
    • 8.5 详解Protobuf协议语法
      • 8.5.1 proto的头部声明
      • 8.5.2 消息结构体与消息字段
      • 8.5.3 字段的数据类型
      • 8.5.4 其他的语法规范
    • 8.6 本章小结
  • 第9章 基于Netty的单体IM系统的开发实践
    • 9.1.1 自定义Protobuf编码器
    • 9.1.2 自定义Protobuf解码器
    • 9.2 概述IM的登录流程
      • 9.2.1 图解登录/响应流程的9个环节
      • 9.2.2 客户端涉及的主要模块
      • 9.2.3 服务器端涉及的主要模块
    • 9.1.3 IM系统中Protobuf消息格式的设计
    • 9.3 客户端的登录处理的实践案例
      • 9.3.1 LoginConsoleCommand和User POJO
      • 9.3.2 LoginSender发送器
      • 9.3.3 ClientSession客户端会话
      • 9.3.4 LoginResponceHandler登录响应处理器
      • 9.3.5 客户端流水线的装配
    • 9.4 服务器端的登录响应的实践案例
      • 9.4.1 服务器流水线的装配
      • 9.4.2 LoginRequestHandler登录请求处理器
      • 9.4.3 LoginProcesser用户验证逻辑
      • 9.4.4 EventLoop线程和业务线程相互隔离
    • 9.5 详解ServerSession服务器会话
      • 9.5.1 通道的容器属性
      • 9.5.2 ServerSession服务器端会话类
      • 9.5.3 SessionMap会话管理器
    • 9.6 点对点单聊的实践案例
      • 9.6.1 简述单聊的端到端流程
      • 9.6.2 客户端的ChatConsoleCommand收集聊天内容
      • 9.6.3 客户端的CommandController发送POJO
      • 9.6.4 服务器端的ChatRedirectHandler消息转发
      • 9.6.5 服务器端的ChatRedirectProcesser异步处理
      • 9.6.6 客户端的ChatMsgHandler接收POJO
    • 9.7 详解心跳检测
      • 9.7.2 服务器端的空闲检测
      • 9.7.3 客户端的心跳报文
  • 9.8 本章小结
    • 10.1 ZooKeeper伪集群安装和配置
      • 10.1.1 创建数据目录和日志目录:
      • 10.1.2 创建myid文件
      • 10.1.3 创建和修改配置文件
      • 10.1.4 配置文件示例
      • 10.1.5 启动ZooKeeper伪集群
    • 10.2 使用ZooKeeper进行分布式存储
      • 10.2.2 zkCli客户端命令清单
    • 10.3 ZooKeeper应用开发的实践
      • 10.3.1 ZkClient开源客户端介绍
      • 10.3.2 Curator开源客户端介绍
      • 10.3.3 Curator开发的环境准备
      • 10.3.4 Curator客户端实例的创建
      • 10.3.5 通过Curator创建ZNode节点
      • 10.3.6 在Curator中读取节点
      • 10.3.7 在Curator中更新节点
      • 10.3.8 在Curator中删除节点
    • 10.4 分布式命名服务的实践
      • 10.4.1 ID生成器
      • 10.4.2 ZooKeeper分布式ID生成器的实践案例
      • 10.4.3 集群节点的命名服务之实践案例
      • 10.4.4 使用ZK实现SnowFlakeID算法的实践案例
    • 10.5 分布式事件监听的重点
      • 10.5.1 Watcher标准的事件处理器
      • 10.5.2 NodeCache节点缓存的监听
      • 10.5.3 PathChildrenCache子节点监听
      • 10.5.4 Tree Cache节点树缓存
    • 10.6 分布式锁的原理与实践
      • 10.6.1 公平锁和可重入锁的原理
      • 10.6.2 ZooKeeper分布式锁的原理
      • 10.6.3 分布式锁的基本流程
      • 10.6.5 释放锁的实现
      • 10.6.6 分布式锁的使用
      • 10.6.7 Curator的InterProcessMutex可重入锁
  • 10.7 本章小结
    • 11.1 Redis入门
      • 11.1.2 Redis客户端命令
      • 11.1.3 Redis Key的命名规范
    • 11.2 Redis数据类型
      • 11.2.2 List列表
      • 11.2.4 Set集合
      • 11.2.5 Zset有序集合
    • 11.3 Jedis基础编程的实践案例
      • 11.3.1 Jedis操作String字符串
      • 11.3.2 Jedis操作List列表
      • 11.3.3 Jedis操作Hash哈希表
      • 11.3.4 Jedis操作Set集合
      • 11.3.5 Jedis操作Zset有序集合
    • 11.4 JedisPool连接池的实践案例
      • 11.4.1 JedisPool的配置
      • 11.4.2 JedisPool创建和预热
      • 11.4.3 JedisPool的使用
    • 11.5 使用spring-data-redis完成
      • 11.5.1 CRUD中应用缓存的场景
      • 11.5.2 配置spring-redis.xml
      • 11.5.3 使用RedisTemplate模板API
      • 11.5.4 使用RedisTemplate模板API完成CRUD的实践案例
      • 11.5.5 使用RedisCallback回调完成CRUD的实践案例
    • 11.6 Spring的Redis缓存注解
      • 11.6.1 使用Spring缓存注解完成CRUD的实践案例
      • 11.6.2 spring-redis.xml中配置的调整
      • 11.6.3 详解@CachePut和@Cacheable注解
      • 11.6.4 详解@CacheEvict注解
      • 11.6.5 详解@Caching组合注解
    • 11.7 详解SpringEL(SpEL)
      • 11.7.1 SpEL运算符
      • 11.7.2 缓存注解中的SpringEL表达式
    • 11.8 本章小结
  • 第12章 亿级高并发IM架构的开发实践
    • 12.1 如何支撑亿级流量的高并发IM架构的理论基础
      • 12.1.1 亿级流量的系统架构的开发实践
      • 12.1.2 高并发架构的技术选型
      • 12.1.3 详解IM消息的序列化协议选型
      • 12.1.4 详解长连接和短连接
    • 12.2 分布式IM的命名服务的实践案例
      • 12.2.1 IM节点的POJO类
      • 12.2.2 IM节点的ImWorker类
    • 12.3 Worker集群的负载均衡之实践案例
      • 12.3.1 ImLoadBalance负载均衡器
      • 12.3.2 与WebGate的整合
    • 12.4 即时通信消息的路由和转发的实践案例
      • 12.4.1 IM路由器WorkerRouter
      • 12.4.2 IM转发器WorkerReSender
    • 12.5 Feign短连接RESTful调用
      • 12.5.1 短连接API的接口准备
      • 12.5.2 声明远程接口的本地代理
      • 12.5.3 远程API的本地调用
    • 12.6 分布式的在线用户统计的实践案例
      • 12.6.1 Curator的分布式计数器
      • 12.6.2 用户上线和下线的统计
    • 12.7 本章小结
暂无相关搜索结果!
    展开/收起文章目录

    二维码

    手机扫一扫,轻松掌上学

    《Netty、Redis、Zookeeper高并发实战 - 尼恩》电子书下载

    请下载您需要的格式的电子书,随时随地,享受学习的乐趣!
    EPUB 电子书

    书签列表

      阅读记录

      阅读进度: 0.00% ( 0/0 ) 重置阅读进度