kafka、hive、mysql、redis、hbase架构笔记
- kafka
- 介绍
- 设计
- 特点
- 主题和日志
- 生产者
- 消费者
- 名词
- hive
- 架构
- 运行机制
- mysql
- mysql逻辑架构
- redis
- 概念
- 持久化
- 架构
- hbase
- 架构
kafka
介绍
kafka是一个分布式流平台。
设计
①可跨越多个数据中心作为集群运行
②将记录流存储在topic中
③每个记录由一个键、一个值、一个时间戳组成
特点
①允许应用程序发布的记录流到多个topic
②应用程序可订阅多个topic,并处理他们
③应用程序可充当流处理器,消费数据并生产数据到topic
④生产者、消费者可重复使用
⑤管理和检查topic
主题和日志
①每个topic可以有0、1、n个消费者去消费他
②topic的每个分区都是一个有序的队列,这些记录连续的附加到日志中
③可配置记录保存时间,在超过期限后,记录则被丢弃,不管他有没有被消费
④消费者保留的唯一元数据是他在日志中的偏移量(位置),可设置消费最新、从头开始、从现在开始
生产者
将数据发布到他们选择的主题,并将记录指配给topic的某个分区。指定方式:①简单的循环方式 ②根据某些语义某些键
消费者
①消费者组是逻辑上的一个订阅者
名词
①Producer :消息生产者,就是向kafka broker发消息的客户端;
②Consumer :消息消费者,向kafka broker取消息的客户端;
③Consumer Group (CG):消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
④Broker :一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。
⑤Topic :可以理解为一个队列,生产者和消费者面向的都是一个topic;
⑥Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列;
⑦Replica:副本,为保证集群中的某个节点发生故障时,该节点上的partition数据不丢失,且kafka仍然能够继续工作,kafka提供了副本机制,一个topic的每个分区都有若干个副本,一个leader和若干个follower。
⑧leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是leader。
⑨follower:每个分区多个副本中的“从”,实时从leader中同步数据,保持和leader数据的同步。leader发生故障时,某个follower会成为新的leader。
hive
架构
运行机制
mysql
mysql逻辑架构
redis
概念
非关系型键值对数据库,遵循BSD协议、支持网络、可基于内存、可持久化的日志型、键值对的数据库。
持久化
把数据从内存写到磁盘中,防止内存数据丢失
方式
①RDB:写入磁盘中的RDB文件(默认方式)。性能更好
②AOF:只追加到磁盘中的AOF文件。更安全
存储结构遵循RESP协议:是一种客户端和服务端之间的通讯协议,特点是①实现简单 ②快速解析 ③可读性好
架构
单机版:使用简单,容量有限,无法高可用
主从复制(伪分布):在一台服务器创建多个redis节点,降低了读压力,但没有解决写压力,不能保证高可用
哨兵:sentinels是一个分布式监控redis主从服务器的系统。具有监控、提醒、故障自动转移功能。但没有解决master的写压力
集群(proxy型):在client和Master间有防火墙,故障转移方案需要自行配置
集群(直连型):无中心结构,redis服务器间彼此连接和复制
hbase
架构