总结:绘上一张Kakfa架构思维大纲脑图(xmind)
其实关于Kafka,能问的问题实在是太多了,扒了几天,最终筛选出44问:基础篇17问、进阶篇15问、高级篇12问,个个直戳痛点,不知道如果你不着急看答案,又能答出几个呢?
若是对Kafka的知识还回忆不起来,不妨先看我手绘的知识总结脑图(xmind不能上传,文章里用的是图片版)进行整体架构的梳理
梳理了知识,刷完了面试,如若你还想进一步的深入学习解读kafka以及源码,那么接下来的这份《手写“kafka”》将会是个不错的选择。
-
Kafka入门
-
为什么选择Kafka
-
Kafka的安装、管理和配置
-
Kafka的集群
-
第一个Kafka程序
-
Kafka的生产者
-
Kafka的消费者
-
深入理解Kafka
-
可靠的数据传递
-
Spring和Kafka的整合
-
SpringBoot和Kafka的整合
-
Kafka实战之削峰填谷
-
数据管道和流式处理(了解即可)
==============================================================================
默认情况下,influxdb
数据存储在/var/lib/influxdb/
下:
-
/var/lib/influxdb/data
存储tsm
文件。 -
/var/lib/influxdb/wal
存储wal
文件。 -
/var/lib/influxdb/meta
存放元数据(meta.db
),包含系统状态的内部信息,用户信息、数据库/分片元数据、CQs、RPs和订阅等。
第一层是database
目录,第二层是retention policy
目录以及_series
,rp
目录下shard group id
目录,shard group id
目录下是.tsm
文件和fields.idx
。
[root@xfyLinux ~]# tree /var/lib/influxdb/data
/var/lib/influxdb/data
├── _internal
│ ├── monitor
│ │ ├── 11
│ │ │ ├── 000000003-000000002.tsm
│ │ │ └── fields.idx
│ │ ├── 12
│ │ │ ├── 000000004-000000002.tsm
│ │ │ └── fields.idx
│ └── _series
│ ├── 00
│ │ └── 0000
│ ├── 01
│ │ └── 0000
│ ├── 02
│ │ └── 0000
│ ├── 03
│ │ └── 0000
│ ├── 04
│ │ └── 0000
│ ├── 05
│ │ └── 0000
│ ├── 06
│ │ └── 0000
│ └── 07
│ └── 0000
└── mytest
├── 30d
│ ├── 15
│ │ ├── 000000003-000000001.tsm
│ │ └── fields.idx
│ ├── 17
│ │ ├── 000000003-000000002.tsm
│ │ └── fields.idx
│ └── 19
│ ├── 000000004-000000004.tsm
│ └── fields.idx
├── autogen
│ └── 3
└── _series
├── 00
│ └── 0000
├── 01
│ └── 0000
├── 02
│ └── 0000
├── 03
│ └── 0000
├── 04
│ └── 0000
├── 05
│ └── 0000
├── 06
│ └── 0000
└── 07
└── 0000
第一层是database
目录,第二层是retention policy
目录,rp
目录下是shard group id
目录,shard group id
目录下是.wal
文件。
[root@xfyLinux 00]# tree /var/lib/influxdb/wal
/var/lib/influxdb/wal
├── _internal
│ └── monitor
│ ├── 11
│ ├── 12
│ │ └── _00013.wal
│ ├── 14
│ │ └── _00014.wal
│ ├── 16
│ │ └── _00015.wal
│ ├── 18
│ │ └── _00016.wal
│ ├── 20
│ │ └── _00016.wal
│ ├── 22
│ │ └── _00016.wal
│ └── 24
│ ├── _00005.wal
│ └── _00006.wal
└── mytest
├── 30d
│ ├── 15
│ │ └── _00004.wal
│ ├── 17
│ │ └── _00004.wal
│ └── 19
│ └── _00005.wal
└── autogen
└── 3
============================================================================
influxdb
中数据存储位置、文件大小等一些配置可在/etc/influxdb/influxdb.conf
中配置。如下摘取部分配置:
[meta]
存储meta数据
Where the metadata/raft database is stored
dir = “/var/lib/influxdb/meta”
Automatically create a default retention policy when creating a database.
用于控制默认存储策略,数据库创建时,会自动生成存储策略。
retention-autocreate = true
If log messages are printed for the meta service
mete服务日志记录
logging-enabled = true
[data]
[data]
The directory where the TSM storage engine stores TSM files.
TSM文件存储路径
dir = “/var/lib/influxdb/data”
The directory where the TSM storage engine stores WAL files.
wal文件存储路径
wal-dir = “/var/lib/influxdb/wal”
The amount of time that a write will wait before fsyncing. A duration
一般设置为0 同步写入wal文件和cache文件
wal-fsync-delay = “0s”
The type of shard index to use for new shards. The default is an in-memory index that is
recreated at startup. A value of “tsi1” will use a disk based index that supports higher
cardinality datasets.
index-version = “inmem”
Whether queries should be logged before execution. Very useful for troubleshooting, but will
log any sensitive data contained within a query.
是否开启 请求日志,debug 环境开启,线上环境关闭
query-log-enabled = true
CacheMaxMemorySize is the maximum size a shard’s cache can
reach before it starts rejecting writes.
Valid size suffixes are k, m, or g (case insensitive, 1024 = 1k).
Values without a size suffix are in bytes.
shard的最大内存 1g,超过1g后拒绝写入
cache-max-memory-size = “1g”
CacheSnapshotMemorySize is the size at which the engine will
snapshot the cache and write it to a TSM file, freeing up memory
Valid size suffixes are k, m, or g (case insensitive, 1024 = 1k).
Values without a size suffix are in bytes.
设置cache最大阈值,达到阈值就生成快照 并刷新数据到tsm文件
cache-snapshot-memory-size = “25m”
CacheSnapshotWriteColdDuration is the length of time at
which the engine will snapshot the cache and write it to
a new TSM file if the shard hasn’t received writes or deletes
cache 快照 刷新到tsm文件的延迟 10分钟
cache-snapshot-write-cold-duration = “10m”
CompactFullWriteColdDuration is the duration at which the engine
will compact all TSM files in a shard if it hasn’t received a
write or delete
单个tsm文件存在的时间4h,时间后合并为一个大的TSM文件
compact-full-write-cold-duration = “4h”
=====================================================================
TSM
树是专门为influxdb
构建的数据存储格式。与现有的B+ tree
或LSM tree
实现相比,TSM tree
具有更好的压缩和更高的读写吞吐量。
最后
俗话说,好学者临池学书,不过网络时代,对于大多数的我们来说,我倒是觉得学习意识的觉醒很重要,这是开始学习的转折点,比如看到对自己方向发展有用的信息,先收藏一波是一波,比如如果你觉得我这篇文章ok,先点赞收藏一波。这样,等真的沉下心来学习,不至于被找资料分散了心神。慢慢来,先从点赞收藏做起,加油吧!
另外,给大家安排了一波学习面试资料:
以上就是本文的全部内容,希望对大家的面试有所帮助,祝大家早日升职加薪迎娶白富美走上人生巅峰!
是一波,比如如果你觉得我这篇文章ok,先点赞收藏一波。这样,等真的沉下心来学习,不至于被找资料分散了心神。慢慢来,先从点赞收藏做起,加油吧!
另外,给大家安排了一波学习面试资料:
[外链图片转存中…(img-BRhHQVZp-1715285378337)]
[外链图片转存中…(img-zQQFbhrg-1715285378338)]
以上就是本文的全部内容,希望对大家的面试有所帮助,祝大家早日升职加薪迎娶白富美走上人生巅峰!