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中,流处理器是指从输入主题获取连续数据流,对此输入执行某些处理以及生成连续数据流以输出主题的任何内容。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Filebeat可以将数据直接发送到Kafka,可以使用以下步骤配置Filebeat将数据发送到Kafka: 1. 下载和安装Filebeat 参考前面我给你的答案,下载和安装Filebeat。 2. 配置FilebeatFilebeat的配置文件中(filebeat.yml),添加以下配置,将数据发送到Kafka: ``` output.kafka: hosts: ["kafka-broker1:9092", "kafka-broker2:9092"] topic: "my-topic" required_acks: 1 compression: gzip max_message_bytes: 1000000 partition.round_robin: reachable_only: false version: "2.1.1" ``` 说明: - hosts: 指定Kafka的broker地址。 - topic: 指定发送到的Kafka主题。 - required_acks: 指定Kafka需要确认的acks数。如果设置为1,则需要Kafka确认写入成功;如果设置为0,则不需要确认写入成功;如果设置为-1,则需要Kafka确认所有副本已经写入成功。 - compression: 指定压缩算法。默认为none,可选的值包括none、gzip和snappy。 - max_message_bytes: 指定每条消息的最大字节数。默认为1000000。 - partition.round_robin: 指定使用round-robin方式将消息发送到分区。 - version: 指定Kafka协议版本。 3. 启动Filebeat 启动Filebeat服务,Filebeat将开始将数据发送到Kafka。 ``` PS > Start-Service filebeat ``` 4. 测试 发送一些测试数据,检查数据是否已经成功发送到Kafka中的指定主题。 ``` echo "Hello, Kafka!" | .\filebeat -e -c .\filebeat.yml -d "publish" ``` 注意:在测试时需要将filebeat.yml中的path配置项修改为实际的日志文件路径。 以上就是使用Filebeat将数据发送到Kafka的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值