当前位置:   article > 正文

Filebeat与Kafka初步了解_filebeat kafka

filebeat kafka

最近刚开始学习中间件,对于其中理解有误的地方,望各位大侠指正,相互学习。


Filebeat

Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到MQ中间件,或者直接到elasticsearch或者logstarsh中存放。

工作流程:

1、 filebeat启动一个或多个探测器(prospectors)
2、 filebeat启动收割进程(harvester)
3、 发送这些新的日志数据到处理程序(spooler)
4、 Filebeat输出集合的数据
FileBeat工作流程


Kafka

Kafka常被用于消息中间件使用。

官方文档介绍
ApacheKafka是一个分布式流媒体平台
流媒体平台有三个关键功能:

  • 发布和订阅记录流,类似于消息队列或企业消息传递系统。
  • 以容错的持久方式存储记录流。
  • 记录发生时处理流。

消息队列

队列:先进先出的数据结构。
消息队列:将要传输的数据放在队列中。

Tips:
生产者:将数据放至消息队列
消费者:从消息队列里取数据

为什么需要使用消息队列?

  • 解耦 --减少系统之间的相互调用,对数据的存取通过消息队列实现
  • 异步
  • 削峰与限流 --用于高并发

需要解决的问题

  • 高可用
    通过集群部署实现,非单机
  • 数据丢失
    1.事务机制 --太耗性能,同步
    2.Confirm机制(推荐) --接收消息回调,设置接收时间,异步
  • 消费者怎么从消息队列中得到数据?
    生产者通知/消费者不断刷新等候

应用场景
  • 系统或应用程序之间获取实时性数据的管道
  • 转换或响应数据流的实时流应用程序
理解
  • Kafka作为一个集群运行在一个/多个服务器上
  • Kafka集群以主题(topic)的类型存放数据流
  • 每条记录由一个键,一个值和一个时间戳组成
常用API
  • Producer API 生产者
  • Consumer API 消费者
  • Streams API 流
  • Connector API 连接

组件理解

介绍kafka中的关键性组件或者组成

主题,分区日志

主题是发布记录的类别或者订阅源的名称。Topic一般对应的是多个消费者。当然也可以没有,或者单个消费者。

  1. 对于每个主题,kafka集群都维护着下图的分区日志。每一个主题都有具有分区。
    主题
    每一个主题都有多个分区(Partition),分区中的每一条记录都有唯一ID标志。可以通过配置消息的存放时间,持久性的保留记录。
  2. 消费者可以调整偏移量去读取记录。例如:消费者可以重置旧的偏移量,或者跳到最近的记录开始获取记录。
    消费者读取数据
分配

每一个分区都有一个服务器做为leader,0或者多个follower,Leader负责处理分区的读取与写入。每个服务器都充当着一个分区的leader或者其他服务器的follower,以此达到负载均衡。

生产者

生成者负责将数据发布至其选择的主题的,并选择那一条数据分配到哪一个分区,以实现平衡负载。

消费者

消费者对应着消费者组名。消费者组中的一个实例负责接收被传递到消费者组的记录,消费者实例可以在单独的进程中,也可以在不同的机器上。

  • 消费者实例具有相同的消费者组,记录在消费者实例上负载均衡
  • 消费者实例不具备相同的消费者组,则每个记录将广播至每一个消费者进程
    消费者

特点

介绍kafka的特点,主要为消息系统,数据存储,并行性,流处理

消息系统

传统的消息模型:排队,发布-订阅

  • 排队:可拓展处理,无并发
  • 发布-订阅:无法拓展处理

Kafka结合这两种模型,即消费者组,可以对用户组进行扩展处理,另外,与发布-订阅模型一样,kafka可以向多个消费者组广播消息。

并行性

多消费者组,多主题,主题多分区。

每一个消费组对应一个主题,每个主题对应着多个日志分区,由于每一个主题的每一个分区都只有一个消费者,并按顺序的使用数据,每个主题都许多分区,这任然可以平衡多消费者实例的负载。

消费者实例不能多与分区数。理论上分区数为消费者线程数。

数据存储
  • Kafka数据存放与消费之间实现解耦,作为实时消息存放系统。
  • 数据存放在磁盘,并进行复制以实现容错。
  • 允许生产者进行等待确认,直到数据被存放至磁盘,并完成复制。
  • 允许消费者选择读取数据的位置,进而作为一种高性能,低延迟提交日志存储,复制和传播的专用分布式文件系统。
数据存储

仅仅读取,写入和存储数据流是不够的,目的是实现流的实时处理。

在Kafka中,流处理器是指从输入主题获取连续数据流,对此输入执行某些处理以及生成连续数据流以输出主题的任何内容。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/579092
推荐阅读
相关标签
  

闽ICP备14008679号