第1章 高并发时代的必备技能
基于NIO的客户端、服务端编程框架netty
JBOSS提供的java开源框架,既能开发高并发、高可用、高可靠的服务端程序,也能开发高可用、高可靠的客户端程序。
NIO(Non-blocking I/O) 非阻塞输入输出
使用Netty的应用:kafka、RocketMQ等消息中间件,Elastic Search搜索引擎、大数据处理Hadoop的RPC框架、主流分布式通信框架Dubbo
Netty受青睐的原因:Netty提供异步的、事件驱动的网络应用程序框架和工具。Netty所有的IO操作都是异步非阻塞的,通过Future-listener机制,用户可以很方便的主动获取或者通过通知机制获取IO操作结果
Netty的优点:
API使用简单,开发门槛低
功能强大,预置了多种编解码功能,支持多种主流协议
性能高,与其他业界主流NIO框架对比,Netty的综合性能最优
成熟、稳定,Netty修复了JDK NIO的bug
社区活跃,版本迭代周期短,发现的bug能够及时被修复
互联网大厂面试必杀器
高并发利器redis
Remote Dictionary Service 远程字典服务器 C语言开发 将数据保存在内存中,数据存取速度快
通过key-value的形式来存取数据,key只能是String类型,value类型包括:String、List、Map、Set、SortedSet
应用场景:缓存信息(商品内容、新闻内容等),分布式会话、聊天室好友列表、任务队列(秒杀、抢购、12306)、应用的排行榜、访问统计、数据过期处理
优点:
速度快 不需要等待磁盘IO
丰富的数据结构 String list map set sortedSet
单线程 避免了线程切换和锁机制的性能消耗
支持持久化 支持RDB和AOF两种方式,将内存中的数据写入外部的物理存储设备
支持发布订阅
支持Lua脚本
支持分布式锁
支持原子操作和事务
支持主从(master-slave)复制与高可用(redis-sentinel)集群
支持管道 可以将多个命令一次性发送到服务器,然后由服务器一次性返回所有结果,在批量执行命令的场景中,可以减少网络传输开销
分布式利器zookeeper
分布式协调工具,核心优势:实现了分布式环境的数据一致性。
第2章 高并发IO的底层原理
IO操作实际上是内核缓存和进程缓存的数据交换
client<——————>网卡<————read&wri