赞
踩
移动时代、5G时代、物联网时代的大幕已经开启,它们对于高性能、高并发的开发知识和技术的要求,抬升了Java工程师的学习台阶和面试门槛。大公司的面试题从某个侧面映射出生产场景中对专项技术的要求。高并发的面试题以前基本是BAT等大公司的专利,现在几乎蔓延至与Java项目相关的整个行业。例如,与Java NIO、Reactor模式、 高性能通信、分布式锁、分布式ID、分布式缓存、高并发架构等技术相关的面试题,从以前的加分题变成了现在的基础题,这也映射出开发Java项目所必需的技术栈:分布式Java框架、Redis缓存、分布式搜索ElasticSearch、分布式协调ZooKeeper、消息队列Kafka、高性能通信框架Netty。
今天分享的这份笔记虽然重在讲解Netty、Redis、 ZooKeeper的使用方法,但是还有一个更大的价值,就是为大家打下Java高并发开发技术的坚实基础。
首先,从操作系统的底层原理开始讲解:浅显易懂地剖析高并发IO的底层原理,并介绍如何让单体Java应用支持百万级的高并发:从传统的阻塞式OIO开始,细致地解析Reactor高性能模式,介绍高性能网络开发的基础知识:从Java的线程Join和线程池开始,介绍Java Future和Guava ListenableFuture两种常用异步回调技术。这些原理方面的基础知识非常重要,是大家在日常开发Java后台应用时解决实际问题的金钥匙。
接着,重点讲解Netty.这是目前当之无愧的高性能通信框架皇冠上的明珠,是支撑其他众多著名的高并发、分布式、大数据框架底层的框架。这里有两大特色:一是从Reactor模式入手,以四两拨千斤的方式来学习Netty原理;二是通过Netty来解决网络编程中的重点难题,如ProtoBuf序列化问题、 半包问题等。
然后,对ZooKeeper进行详细的介绍。除了全面地介绍使用Curator API操作ZooKeeper之外,还从实战的角度出发,介绍如何使用ZooKeeper来设计分布式ID生成器,并对重要的SnowFlake算法进行详细的介绍。另外,还通过图文并茂和结合小故事的方式浅显易懂地介绍分布式锁的基本原理,并完成一个ZooKeeper分布式锁的小实践案例。
接下来,从实践开发层面对Redis进行说明,详细介绍Redis的5种数据类型、客户端操作指令、Jedis Java API.另外,还通过Sspring-data-redis来 完成两种方式的数据分布式缓存,并详尽地介绍Spring的缓存注解以及涉及的SpEL表达式语言。
最后,通过CrazyIM项目介绍一个亿级流量的高并发IM系统模型。这个高并发架构的系统模型不仅仅限于IM系统,通过简单的调整和适配,就可以应用于当前主流的Java后台系统。
下面将会为大家展示笔记中的部分内容(着重是在让大家知道这份笔记是在讲些什么)由于文章的篇幅受限,完整版的获取方式我放在了文末!
Netty为何这么火
高并发利器Redis
分布式利器ZooKeeper
高并发IM的综合实践
Netty、Redis、ZooKeeper实践计划
第1天: Java NIO实践
第2天: Reactor反应器模式实践
第3天:异步回调模式实践
第4天: Netty基础实践
第5天:解码器(Decoder)与编码器(Encoder) 实践
第6天: JSON和ProtoBuf序列化实践
第7~10天:基于Netty的单聊实战
第11天: ZooKeeper实践计划
第12天: Redis实践计划
IO读写的基础原理
内核缓冲区与进程缓冲区
详解典型的系统调用流程
四种主要的IO模型
同步阻塞IO (Blocking IO)
同步非阻塞NIO (None Blocking IO)
IO多路复用模型(IO Multiplexing)
异步IO模型(Asynchronous IO)
通过合理配置来支持百万级并发连接
Java NIO简介
NIO和OIO的对比
通道(Channel)
Selector选择器
缓冲区(Buffer)
详解NIO Buffer类及其属性
Buffer类
Buffer类的重要属性
4个属性的小结
详解NIO Buffer类的重要方法
allocate()创建缓冲区
put()写入到缓冲区
flip()翻转
get()从缓冲区读取
rewind()倒带
mark( )和reset( )
clear( )清空缓中区
详解NIO Channel (通道)类
Channel (通道)的主要类型
FileChannel文件通道
使用FileChannel完成文件复制的实践案例
SocketChanne|套接字通道
使用SocketChannel发送文件的实践案例
DatagramChanne|数据报通道
使用DatagramChannel数据包通道发送数据的实践案例
详解NIO Selector选择器
选择器以及注册
SelectableChannel可选择通道
SelectionKey选择键
选择器使用流程
使用NIO实现Discard服务器的实践案例
使用SocketChannel在服务器端接收文件的实践案例
Reactor反应器模式为何如此重要
为什么首先学习Reactor反应器模式
Reactor反应器模式简介
多线程OIO的致命缺陷
单线程Reactor反应器模式
什么是单线程Reactor反应器
单线程Reactor反应器的参考代码
一个Reactor反应器版本的EchoServer实践案例
单线程Reactor反应器模式的缺点
多线程的Reactor反应器模式
多线程池Reactor反应器演进
多线程Reactor反应器的实践案例
多线程Handler处理器的实践案例
Reactor反应器模式小结
从泡茶的案例说起
join异步阻塞
线程的join合并流程
使用join实现异步泡茶喝的实践案例
详解join合并方法
FutureTask异步回调之重武器
Callable接口
初探FutureTask类
Future接口
再谈FutureTask类
使用FutureTask类实现异步泡茶喝的实践案例
Guava的异步回调
详解FutureCallback
详解ListenableFuture
ListenableFuture异步任务
使用Guava实现泡茶喝的实践案例
Netty的异步回调模式
详解GenericFutureListener接口
详解Netty的Future接口
ChannelFuture的使用
Netty的出站和入站异步回调
第一个Netty的实践案例DiscardServer
创建第一个Netty项目
第一个Netty服务器端程序
业务处理器NettyDiscardHandler
运行NettyDiscardServer
解密Netty中的Reactor反应器模式
回顾Reactor反应器模式中IO事件的处理流程
Netty中的Channel通道组件
Netty中的Reactor反应器
Netty中的Handler处理器
Netty的流水线(Pipeline)
详解Bootstrap启动器类
父子通道
EventLoopGroup线程组
Bootstrap的启动流程
ChannelOption通道选项
详解Channel通道
Channel通道的主要成员和方法
EmbeddedChannel嵌入式通道
详解Handler业务处理器
ChannellnboundHandler通道入站处理器
ChannelOutboundHandler通道出站处理器
Channellnitializer通道初始化处理器
ChannellnboundHandler的生命周期的实践案例
详解Pipeline流水线
Pipeline入站处理流程
Pipeline出站处理流程
ChannelHandlerContext上下文
截断流水线的处理
Handler业务处理器的热拔插
详解ByteBuf缓冲区
ByteBuf的优势
ByteBuf的逻辑部分
ByteBuf的重要属性
ByteBuf的三组方法
ByteBuf基本使用的实践案例
ByteBuf的引用计数
ByteBuf的Allocator分配器
ByteBuf缓冲区的类型
三类ByteBuf使用的实践案例
ByteBuf的自动释放
ByteBuf浅层复制的高级使用方式
slice切片浅层复制
duplicate整体浅层复制
浅层复制的问题
EchoServer回显服务器的实践案例
NettyEchoServer回显服务器的服务器端
共享NettyEchoServerHandler处理器
NettyEchoClient客户端代码
NettyEchoClientHandler处理器
Decoder原理与实践
ByteToMessageDecoder解码器
自定义Byte2IntegerDecoder整数解码器的实践案例
ReplayingDecoder解码器
整数的分包解码器的实践案例
字符串的分包解码器的实践案例
MessageToMessageDecoder解码器
开箱即用的Netty内置Decoder
LineBasedFrameDecoder解码器
DelimiterBasedFrameDecoder解码器
LengthFieldBasedFrameDecoder解码器
多字段Head-Content协议数据帧解析的实践案例
Encoder原理与实践
MessageToByteEncoder编码器
MessageToMessageEncoder编码器
解码器和编码器的结合
Byte ToMessageCodec编解码器
CombinedChannelDuplexHandler组合器
详解粘包和拆包
半包问题的实践案例
什么是半包问题
半包现象的原理
JSON协议通信
JSON序列化的通用类
JSON序列化与反序列化的实践案例
JSON传输的编码器和解码器之原理
JSON传输之服务器端的实践案例
JSON传输之客户端的实践案例
Protobuf协议通信
一个简单的proto文件的实践案例
控制台命令生成POJO和Builder
Maven插件生成POJO和Builder
消息POJO和Builder的使用之实践案例
Protobuf编解码的实践案例
Protobuf编码器和解码器的原理
Protobuf传输之服务器端的实践案例
Protobuf传输之客户端的实践案例
详解Protobuf协议语法
proto的头部声明
消息结构体与消息字段
字段的数据类型
其他的语法规范
自定义ProtoBuf编解码器
自定义Protobuf编码器
自定义Protobuf解码器
IM系统中Protobuf消息格式的设计
概述IM的登录流程
图解登录/响应流程的9个环节
客户端涉及的主要模块
服务器端涉及的主要模块
客户端的登录处理的实践案例
LoginConsoleCommand和User POJO
LoginSender发送器
ClientSession客户端会话
LoginResponceHandler登录响应处理器
客户端流水线的装配
服务器端的登录响应的实践案例
服务器流水线的装配
LoginRequestHandler登录请求处理器
LoginProcesser用户验证逻辑
EventLoop线程和业务线程相互隔离
详解ServerSession服务器会话
通道的容器属性
ServerSession服务器端会话类
SessionMap会话管理器
点对点单聊的实践案例
简述单聊的端到端流程
客户端的ChatConsoleCommand收集聊天内容
客户端的CommandContoller发送POJO
服务器端的ChatRedirectHandler消息转发
服务器端的ChatRedirectProcesser异步处理
客户端的ChatMsgHandler接收POJO
详解心跳检测
网络连接的假死现象
服务器端的空闲检测
客户端的心跳报文
ZooKeeper伪集群安装和配置
创建数据目录和日志目录:
创建myid文件
创建和修改配置文件
配置文件示例
使用ZooKeeper进行分布式存储
详解ZooKeeper存储模型
zkCli客户端命令清单
ZooKeeper应用开发的实践
ZkcClient开源客户端介绍
Curator开源客户端介绍
Curator开发的环境准备
Curator客户端实例的创建
通过Curator创建ZNode节点
在Curator中读取节点
在Curator中更新节点
在Curator中删除节点
分布式命名服务的实践
ID生成器
ZooKeeper分布式ID生成器的实践案例
集群节点的命名服务之实践案例
使用ZK实现SnowFlakelD算法的实践案例
分布式事件监听的重点
Watcher标准的事件处理器
NodeCache节点缓存的监听
PathChildrenCache子节点监听
Tree Cache节点树缓存
分布式锁的原理与实践
公平锁和可重入锁的原理
ZooKeeper分布式锁的原理
分布式锁的基本流程
加锁的实现
释放锁的实现
分布式锁的使用
Curator的InterProcessMutex可重入锁
Redis入门
Redis安装和配置
Redis客户端命令
Redis Key的命名规范
Redis数据类型
String字符串
List列表
Hash哈希表
Set集合
Zset有序集合
Jedis基础编程的实践案例
Jedis提作Sring字符串
Jedis操作List列表
Jedis操作Hash哈希表
Jedis操作Set集合
Jedis操作Zset有序集合
JedisPool连接池的实践案例
JedisPool的配置
JedisPool创建和预热
JedisPool的使用
使用spring-data-redis完成
CRUD中应用缓存的场景
配置spring-redis.xml
使用RedisTemplate模板API
使用RedisTemplate模板API完成CRUD的实践案例
使用RedisCallback回调完成CRUD的实践案例
Spring的Redis缓存注解
使用Spring缓存注解完成CRUD的实践案例
spring-redis.xml中配置的调整
详解@CachePut和@Cacheable注解
详解@CacheEvict注解
详解@Caching组合注解
详解SpringEL (SpEL)
SpEL运算符
缓存注解中的SpringEL表达式
如何支撑亿级流量的高并发IM架构的理论基础
亿级流量的系统架构的开发实践
高并发架构的技术选型
详解IM消息的序列化协议选型
详解长连接和短连接
分布式IM的命名服务的实践案例
IM节点的POJO类
IM节点的ImWorker类
Worker集群的负裁均衡之实践案例
ImLoadBalance负载均衡器
与WebGate的整合
即时通信消息的路由和转发的实践案例
IM路由器WorkerRouter
IM转发器WorkerReSender
Feign短连接RESTful调用
短连接API的接口准备
声明远程接口的本地代理
远程API的本地调用
分布式的在线用户统计的实践案例
Curstor的分布式计数器
用户上线和下线的统计
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。