前言
kafka的外在表现很像消息系统,允许发布和订阅消息流,但是它和传统的消息系统有很大的差异:
-
首先,kafka是个现代分布式系统,以集群的方式运行,可以自由伸缩
-
其次,kafka可以按照要求存储数据,保存多久都可以
-
第三,流式处理将数据处理的层次提示到了新高度,消息系统只会传递数据。kafka的流式处理能力可以让我们用很少的代码就能动态的处理派生流和数据集。所以,kafka不仅仅是个消息中间件
kafka不仅仅是个消息中间件,同时它是个流平台,这个平台上可以发布和订阅数据流(kafka的流,有一个单独的包stream的处理),并把它们保存起来,进行处理,这个就是kafka作者的设计理念。今天之所以要聊Kafka,是因为前不久我们公司来了位阿里P8大神,在看完他的手写“Kafka笔记”,我只能用两个字来形容:膜拜!崇拜!
本文框架如下
第一部分,主要是在阅读代码过程中的日志和笔记;
第二部分,主要介绍了 Redis 的主要框架,以及 Redis 是如何提供服务的,从一个最简单的命令开始讲起;
第三部分,主要介绍 Redis 底层用作存储的数据结构,这一部分很有趣;
第四部分,主要讲解了 Redis 的核心功能,包括持久化,订阅/发布模式,主从复制,事务机制,集群等等;
第五部分,展示了 Redis 几个简单的应用;
第六部分,介绍了 Redis 和 Memcached 的区别,以及稍稍讲解了 Memcached。
Tips:本文内容已经整理成了pdf版本,内容由真实腾讯专家手写,感兴趣的朋友可以通过【关注+点赞+评论本文】的方式获取到腾讯专家手写Redis源码日志笔记pdf版本!
Redis服务框架
①初探 Redis
- Redis 在缓存系统所处的位置
②Redis 事件驱动详解
- 事件驱动数据结构
- 事件循环中心
-
Redis 事件驱动原理
-
事件注册详解
-
准备监听工作
-
为监听套接字注册事件
-
事件循环
-
事件触发
③Redis 是如何提供服务的
- initServerConfig()
- aeMain()
- 新连接的处理流程
- 请求的处理流程
- 执行命令
- 在哪里回复客户端
Redis 基础数据结构
①Redis 数据结构综述
一览 Redis 数据结构:
- Redis 命令和相关的数据结构
- Redis 数据结构 redisOb
- Redis 数据结构 sds
- Redis 数据结构 dict
- Redis 数据结构 ziplist
- Redis 数据结构 skiplist
- Redis 数据结构 intset
Redis 内功心法
①Redis 数据淘汰机制
- 概述
- LRU 数据淘汰机制
- TTL 数据淘汰机制
- 在哪里开始淘汰数据
②RDB 持久化策略
- 简介 Redis 持久化 RDB、AOF
- 数据结构 rio
- RDB 持久化的运作机制
- RDB 数据的组织方式
③AOF 持久化策略
- 简介
- AOF 数据组织方式
- AOF 持久化运作机制
- 细说更新缓存
- AOF 恢复过程
- AOF 的适用场景
④订阅发布机制
- 两种订阅
- 订阅相关数据结构
- 订阅过程
- 消息发布
⑤主从复制
- 概述
- 积压空间
- 主从数据同步机制概述
- 全同步
- 部分同步
- 缓存主机
- 总结
⑥Redis 事务机制
- Redis 事务简述
- Redis 命令队列
- 键值的监视
- Redis 事务的执行与取消
- Redis 事务番外篇
⑦Redis 与 Lua 脚本
- Lua 简介
- Redis 为什么添加 Lua 支持
- Lua 环境的初始化
- Lua 脚本执行 Redis 命令
- Redis Lua 脚本的执行过程
- 脏命令
- Lua 脚本的传播
- 总结
⑧Redis 哨兵机制
- Redis 哨兵的服务框架
- 定时程序
- 哨兵与 Redis 服务器的互联
- HELLO 命令
- INFO 命令
- 心跳
- 在线状态监测
- 故障修复
- Redis 监视器
- Redis 数据迁移
⑨Redis 集群(上)
- 前奏
- 谈一致性哈希算法(consistent hashing)
- 怎么实现?
- twemproxy - Redis 集群管理方案
- Redis 官方版本支持的集群
⑩Redis 集群(下)
- 数据结构
- 数据访问
- 新的节点
- 心跳机制
- 故障修复
- 故障修复的协议
- 数据迁移
- 总结
Redis 应用
- Redis 应用
- 积分排行榜
- 分布式锁
- 消息中间件
- Web 服务器存储 session
其他
①内存数据管理
- 共享对象
- 两种内存分配策略
- memory aware 支持
- zmalloc_get_private_dirty() 函数
- 总结
②Redis 日志和断言
- Redis 日志
- Redis 断言
③Redis 与 Memcache
- 单进程单线程与单进程多线程
- 丰富与简单的数据结构
- 其他
- 性能测试
④小剖Memcache
- 初始化过程
- UNIX 域套接字和 UDP/TCP 工作模式
- 工作线程管理和线程调配方式
- 存储容器
- 连接管理
- 一个请求的工作流程
- Memcached 的分布式
⑤Memcached slab 分配策略
- Memcached slab 概述
- slab class
- 内存分配的过程
- lru 机制
⑥源码阅读工具
- sublime text 2/3
- Eclipse CDT
- Source insight
总结
虽然面试套路众多,但对于技术面试来说,主要还是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。
上面提到的关于这些JAVA基础、三大框架、项目经验、并发编程、JVM及调优、网络、设计模式、spring+mybatis源码解读、Mysql调优、分布式监控、消息队列、分布式存储等等面试题笔记及资料都是免费分享的,有需要学习的小伙伴可以直接点点点点点这里免费下载
。
[外链图片转存中…(img-AS3kqsEI-1624611102138)]
[外链图片转存中…(img-gzakupxK-1624611102139)]
上面提到的关于这些JAVA基础、三大框架、项目经验、并发编程、JVM及调优、网络、设计模式、spring+mybatis源码解读、Mysql调优、分布式监控、消息队列、分布式存储等等面试题笔记及资料都是免费分享的,有需要学习的小伙伴可以直接点点点点点这里免费下载
有些面试官喜欢问自己擅长的问题,比如在实际编程中遇到的或者他自己一直在琢磨的这方面的问题,还有些面试官,尤其是大厂的比如 BAT 的面试官喜欢问面试者认为自己擅长的,然后通过提问的方式深挖细节,刨根到底。