前言:

有人说世界上有三个伟大的发明:火,轮子,以及 Kafka。

发展到现在,Apache Kafka 无疑是很成功的,Confluent 公司曾表示世界五百强中有三分之一的企业在使用 Kafka。在流式计算中,Kafka 一般用来缓存数据,例如 Flink 通过消费 Kafka 的数据进行计算。

而要谈对Kafka有多熟悉,我相信还是阿里的大佬们最有发言权,所以今天分享的内容,就是Alibaba内部首发的“限量笔记”,关于Kafka的精髓全部写在这里面了,真是不得不得不感叹:不愧是Alibaba的技术官啊,真的服了!

项目中kafka redis 和ea之间的关系 redis和kafka的性能区别_后端

Redis简介

  • Redis与Memcached区别
  • Redis优点
  • Redis缺点

项目中kafka redis 和ea之间的关系 redis和kafka的性能区别_Redis_02

Redis数据类型

  • String
  • Hash
  • List
  • Set
  • Sorted set

项目中kafka redis 和ea之间的关系 redis和kafka的性能区别_面试_03

Redis事务

  • MULTI&EXEC(原子执行,并非互斥)
  • WATCH&UNWATCH(原子执行+乐观锁)

项目中kafka redis 和ea之间的关系 redis和kafka的性能区别_数据_04

Redis分布式锁

  • 排他锁 SETNX
  • 带有超时特性的锁

项目中kafka redis 和ea之间的关系 redis和kafka的性能区别_数据_05

Redis持久化机制

  • RDB(Redis Database,全量模式)
  • AOF(Append Only File,增量模式)
  • 触发方式
  • 相互比较
  • RDB最佳策略
  • AOF最佳策略
  • Redis消息队列

项目中kafka redis 和ea之间的关系 redis和kafka的性能区别_java_06

Redis高级数据结构

  • BitMap(String的一些其他命令)
  • 过期策略
  • 内存淘汰策略
  • 主从复制(数据是同步的,类似于MySQL Replication)
  • 哨兵 sentinel(数据是同步的)
  • 集群(数据是分片的,sharing)
  • Hash映射(并非一致性哈希,而是哈希槽)
  • 数据分片
  • 节点间通信协议——Gossip
  • 主从选举——Raft
  • 功能限制
  • 数据迁移/在线扩容
  • Codis
  • twemproxy

项目中kafka redis 和ea之间的关系 redis和kafka的性能区别_面试_07

配置文件+应用场景+Lua脚本+与DB保持一致

项目中kafka redis 和ea之间的关系 redis和kafka的性能区别_java_08

Redis源码

  • 线程模型——单线程
  • RedisObject

项目中kafka redis 和ea之间的关系 redis和kafka的性能区别_面试_09

这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。