Kafka的存储

Kafka的存储层级概念上比较简单,一个topic分为若干partition,一个partition再分为若干segment。下图是一个示例:topic是个逻辑概念,partition和segment则是真实存储数据的:一个partition对应磁盘上面一个目录,一个segment对应partition目录下的一个日志文件,消息数据就是以append-only的方式顺序写入segment文件...

Kafka的扩容和缩容

本文讨论Kafka的扩缩容以及故障后如何“补齐”分区,本文的操作基于Kafka 2.6版本。扩容扩容也就是新增节点,扩容后老的数据不会自动迁移,只有新创建的topic才可能会分配到新增的节点上面。如果我们不需要迁移旧数据,那直接把新的节点启动起来就行了,不需要做额外的操作。但有的时候,新增节点后,我们会将一些老数据迁移到新的节点上,以达到负载均衡的目的,这个时候就需要手动操作了。Kafka提...

Kafka的可靠性

本文讨论一下Kafka广义上的可靠性,所谓广义是从不同的角度、不同维度去观察系统的可靠性,比如从生产者(Producer)的角度看如何保证已经确认的数据一定写入了系统,不会丢失;从消费者(Consumer)的角度,只要数据没有彻底丢失,就可以读取。再比如从服务端(Broker)的角度,如何保证在可用性(Availability)和持久性(Durability)方面做权衡。副本机制分布式系统的...

Kafka的高效

Kafka在大数据领域消息中间件的位置独占鳌头很多年了,很重要的一个原因就是其能很高效的承载海量数据,这里的高效指读写能做到低延迟、高吞吐。要做到高效,不是特别难,有很多MQ以及Redis之类的组件都可以做到;要做到支撑海量数据且有良好的水平扩展性,也有很多组件,但能同时兼顾二者的,的确就不多了。而Kafka能同时兼顾,主要是在设计上花费了很多心思,核心的一些点包括:磁盘的连续读写充分利用操...

ES数据可靠性分析

ES作为全文检索兼存储系统,数据可靠性至关重要,本文讨论ES是如何实现数据可靠性的。ES底层基于Lucene,所以有必要先搞清楚一些相关的概念。refresh && flush && commitLucene中,有flush和commit的概念。所谓flush,就是定期将内存Buffer里面的数据刷新到Directory这样一个抽象的文件存储层,其实就是生成segment。需要注意的是,因为...

Flink的窗口介绍

Flink的Watermark细节介绍一文中提到了Watermark其实主要就是解决Event Time + Window中的数据完整性问题的,本文作为那篇文章的补充,再介绍一下Window这个概念。关于这部分,我觉得官方文档已经介绍的非常详细了,如果你是Flink使用者,强烈建议好好读几遍。我这里就主要概括性的介绍一下,作为前面文章的补充,同时解决前文遗留的一个问题。What & Why什...

Flink的Watermark细节介绍

在前面的流处理随谈一文中已经简单介绍了Watermark,本文主要再结合Flink具体分析一下,作为补充。理论如果看完之前的文章,已经完全理解了Watermark,那可以直接跳过这部分,看实战部分。如果还不太理解,我通过几个问题来阐述一下,帮助你理解。要注意的是下面的描述方式和实际实现未必完全一样(有些甚至是我的个人观点),但可以帮助你更好的理解。What?Watermark是什么?从不同的...

流处理随谈

说到流处理,很多后端工程师,特别是大数据工程师应该都不陌生,Storm、Spark以及如日中天的Flink应该或多或少的听过或者用过。本文从下面几个方面简单聊聊流处理:流处理发展史流处理中的一些重要思想和设计一些流处理框架的简单对比(Storm、Spark、Flink、Google Cloud Dataflow、Kafka Stream)注:本文说的Spark都指其流式部分,即Spark (...
站点总览
  • 文章总数:281篇
  • 分类总数:15个
  • 评论总数:449条
  • 运行时间:6年329天
最近评论
Michael翔虽然看似基础,但是深入研究并不简单,赞~PS:最后的「##总结」,语法应该少了个空格啦~
徐小鹏小米手环5的睡眠监测确实不行,
Gordon那写入ES 只能单条写入加routing了? 不能bulk批量加吧? 会影响写入效率么?
Gordon有弊端的吧? 例如以用户ID作为routing 只适合按用户的搜索 没有传用户ID的就无...
多多非常好的文章,学习到了👍
窗外一叶我认为这本书里吹嘘的成分比较多,没有多少干货。移动通信网络(5G6G)和WiFi的界限会越来越...
aa懵逼
yhm流痞
马旭鹏路过
lukez比如ignore_older参数比clean_inactive长..其中逻辑请参考官方文档