ToB企服应用市场:ToB评测及商务社交产业平台

标题: EIK+Filebeat+Kafka [打印本页]

作者: 农妇山泉一亩田    时间: 2024-8-6 22:17
标题: EIK+Filebeat+Kafka
一.kafka介绍

1.kafka定义

Kafka 是一个分布式的基于发布/订阅模式的消息队列(MQ,Message Queue),主要应用于大数据范畴的及时计算以及日志收集。
2.Kafka 简介

Kafka 是最初由 Linkedin 公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于 Zookeeper 和谐的分布式消息中间件系统,它的最大的特性就是可以及时的处置惩罚大量数据以满足各种需求场景,比如基于 hadoop 的批处置惩罚系统、低延迟的及时系统、Spark/Flink 流式处置惩罚引擎,nginx 访问日志,消息服务等等,用 scala 语言编写,
Linkedin 于 2010 年贡献给了 Apache 基金会并成为顶级开源项目。
3.为什么必要消息队列(MQ)

主要缘故原由是由于在高并发情况下,同步哀求来不及处置惩罚,哀求往往会发生阻塞。比如大量的哀求并发访问数据库,导致行锁表锁,最后哀求线程会堆积过多,从而触发 too many connection 错误,引发雪崩效应。
我们使用消息队列,通过异步处置惩罚哀求,从而缓解系统的压力。消息队列常应用于异步处置惩罚,流量削峰,应用解耦,消息通讯等场景。
当前比力常见的 MQ 中间件有 ActiveMQ、RabbitMQ、RocketMQ、Kafka 等。
4.使用消息队列的长处

(1)解耦
允许你独立的扩展或修改两边的处置惩罚过程,只要确保它们遵守同样的接口约束。
(2)可规复性
系统的一部分组件失效时,不会影响到整个系统。消息队列低落了进程间的耦合度,所以纵然一个处置惩罚消息的进程挂掉,加入队列中的消息仍然可以在系统规复后被处置惩罚。
(3)缓冲
有助于控制和优化数据流经过系统的速度,解决生产消息和消耗消息的处置惩罚速度不同等的情况。
(4)灵活性 & 峰值处置惩罚本领
在访问量剧增的情况下,应用仍然必要继承发挥作用,但是这样的突发流量并不常见。如果为以能处置惩罚这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会由于突发的超负荷的哀求而完全崩溃。
(5)异步通信
很多时间,用户不想也不必要立即处置惩罚消息。消息队列提供了异步处置惩罚机制,允许用户把一个消息放入队列,但并不立即处置惩罚它。想向队列中放入多少消息就放多少,然后在必要的时间再去处置惩罚它们。
5.消息队列的两种模式

(1)点对点模式(一对一,消耗者自动拉取数据,消息收到后消息清除)
消息生产者生产消息发送到消息队列中,然后消息消耗者从消息队列中取出而且消耗消息。消息被消耗以后,消息队列中不再有存储,所以消息消耗者不可能消耗到已经被消耗的消息。消息队列支持存在多个消耗者,但是对一个消息而言,只会有一个消耗者可以消耗。

(2)发布/订阅模式(一对多,又叫观察者模式,消耗者消耗数据之后不会清除消息) 
消息生产者(发布)将消息发布到 topic 中,同时有多个消息消耗者(订阅)消耗该消息。和点对点方式不同,发布到 topic 的消息会被所有订阅者消耗。
发布/订阅模式是定义对象间一种一对多的依靠关系,使得每当一个对象(目的对象)的状态发生改变,则所有依靠于它的对象(观察者对象)都会得到通知并自动更新。

6.Kafka 的特性 

高吞吐量、低延迟
Kafka 每秒可以处置惩罚几十万条消息,它的延迟最低只有几毫秒。每个 topic 可以分多个 Partition,Consumer Group 对 Partition 举行消耗操作,提高负载平衡本领和消耗本领。
可扩展性
kafka 集群支持热扩展
长期性、可靠性
消息被长期化到本地磁盘,而且支持数据备份防止数据丢失
容错性
允许集群中节点失败(多副本情况下,若副本数量为 n,则允许 n-1 个节点失败)
高并发
支持数千个客户端同时读写
7.kafka系统布局

(1)Broker

(2)Topic

(3)Partition

Partation 数据路由规则:
1.指定了 patition,则直接使用;
2.未指定 patition 但指定 key(相当于消息中某个属性),通过对 key 的 value 举行 hash 取模,选出一个 patition;
3.patition 和 key 都未指定,使用轮询选出一个 patition。

每条消息都会有一个自增的编号,用于标识消息的偏移量,标识序次从 0 开始。
每个 partition 中的数据使用多个 segment 文件存储。
如果 topic 有多个 partition,消耗数据时就不能保证数据的序次。严格保证消息的消耗序次的场景下(比方商品秒杀、 抢红包),必要将 partition 数量设为 1。
●broker 存储 topic 的数据。如果某 topic 有 N 个 partition,集群有 N 个 broker,那么每个 broker 存储该 topic 的一个 partition。
●如果某 topic 有 N 个 partition,集群有 (N+M) 个 broker,那么其中有 N 个 broker 存储 topic 的一个 partition, 剩下的 M 个 broker 不存储该 topic 的 partition 数据。
●如果某 topic 有 N 个 partition,集群中 broker 数量少于 N 个,那么一个 broker 存储该 topic 的一个或多个 partition。在实际生产情况中,只管克制这种情况的发生,这种情况容易导致 Kafka 集群数据不平衡。

分区的缘故原由:
●方便在集群中扩展,每个Partition可以通过调解以顺应它地点的机器,而一个topic又可以有多个Partition构成,因此整个集群就可以顺应任意大小的数据了;
●可以提高并发,由于可以以Partition为单元读写了。

(4)Replica

(5)Leader

(6)Follower

(7)Producer

(8)Consumer

(9)Consumer Group(CG)

(10)offset 偏移量

(11)Zookeeper

二.摆设kafka集群

   192.168.86.60  :Zookeeper+Kafka
  192.168.86.70  :Zookeeper+Kafka
  192.168.86.80  :Zookeeper+Kafka
  1.上传软件包并解压 

  1. cd /opt/
  2. tar xf kafka_2.13-2.8.2.tgz
复制代码
2.修改设置文件 

  1. vim server.properties
复制代码
 

 


3.修改情况变量 

  1. 所有服务器操作
  2. vim /etc/profile
  3. export KAFKA_HOME=/usr/local/kafka
  4. export PATH=$PATH:$KAFKA_HOME/bin
复制代码

4. 启动kafka

  1. cd /usr/local/kafka/bin/
  2. ./kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
  3. netstat -lntp | grep 9092
复制代码


 5.Kafka 命令行操作

  1. kafka/bin/kafka-topics.sh --zookeeper IP1:2181,IP2:2181,IP3:2181 --create --topic 主题名 --partitions 分区数 --replication-factor 副本数      #创建topic
  2. kafka/bin/kafka-topics.sh --zookeeper IP1:2181,IP2:2181,IP3:2181 --list                                             #查看topic列表
  3. kafka/bin/kafka-topics.sh --zookeeper IP1:2181,IP2:2181,IP3:2181 --discribe --topic 主题名                          #查看topic详细信息
  4. kafka/bin/kafka-topics.sh --zookeeper IP1:2181,IP2:2181,IP3:2181 --delete --topic 主题名                            #删除topic
  5. kafka/bin/kafka-topics.sh --zookeeper IP1:2181,IP2:2181,IP3:2181 --alter --topic 主题名 --partitions 分区数         #修改topic的分区数(只能增不能减)
  6. kafka/bin/kafka-console-producer.sh --broker-list IP1:9092,IP2:9092,IP3:9092 --topic 主题名                           #向topic推送数据
  7. kafka/bin/kafka-console-consumer.sh --bootstrap-server IP1:9092,IP2:9092,IP3:9092 --topic 主题名 [--from-beginning]   #从topic拉取数据
复制代码
三. 搭建ELK+Filebead+zookeeper+kafka

IP地点安装软件
192.168.86.10ElasticSearch
192.168.86.20ElasticSearch、Kibana
192.168.86.30ElasticSearch
192.168.86.40Nginx、Logstash
192.168.86.50Nginx、Filebeat
192.168.86.60Zookeeper、Kafka
192.168.86.70Zookeeper、Kafka
192.168.86.80Zookeeper、Kafka
修改Filebeat设置

  1. cd /usr/local/filebeat
  2. vim filebeat.yml
  3. 注释162、164行内容
  4. 163行起添加
  5. output.kafka:
  6.   enabled: true
  7.   hosts: ["192.168.86.60:9092","192.168.86.770","192.168.86.80"]  #指定 Kafka 集群配置
  8.   topic: "nginx"    #指定 Kafka 的 topic
  9. ————————————
复制代码

   欣赏器访问更新数据 
  1. 启动 filebeat
  2. ./filebeat -e -c filebeat.yml
复制代码
 修改Logstash设置

  1. cd /etc/logstash/conf.d/
  2. vim kafka.conf
复制代码
 
欣赏器访问kibana验证

   欣赏器访问 http://192.168.86.20:5601 登录 Kibana,单击【管理】按钮【创建索引模式】,搜刮【nginx_kafka-*】单击 【下一步】按钮创建,选择【@timestamp】 按钮,【创建索引模式】;可检察图表信息及日志信息。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4