最新消息: 关于Git&GitHub 版本控制你了解多少?
您现在的位置是:群英 > 服务器 > 系统运维 >
Kafka和Redis作为消息队列不同之处在哪?
linuxe发表于 2020-10-20 16:17 次浏览
kafka是个日志处理缓冲组件,在大数据信息处理中使用。和传统的消息队列相比较简化了队列结构和功能,以流形式处理存储(持久化)消息(主要是日志)。日志数据量巨大,处理组件一般会处理不过来,所以作为缓冲层的kafka,支持巨大吞吐量。为了防止信息丢失,其消息被调用后不直接丢弃,要多存储一段时间,等过期时间过了才丢弃。这是mq和redis不能具备的。主要特点如下:巨型存储量: 支持TB甚至PB级别数据。高吞吐,高IO:一般配置的服务器能实现单机每秒100K以上消息的传输。消息分区,分布式消费:能保消息顺序传输。 支持离线数据处理和实时数据处理。Scale out:支持在线水平扩展,以支持更大数据处理量
 
redis只是提供一个高性能的、原子操作内存键值对,具有高速访问能力,可用做消息队列的存储,但是不具备消息队列的任何功能和逻辑,要作为消息队列来实现的话,功能和逻辑要通过上层应用自己实现。

一、ELK架构引入Redis配置步骤

1、首先将Filebeat的输出给到redis中,修改OUTPUT部分:

1 output:
2   redis:
3     hosts:["192.168.1.100"]
4     port:6379
5     password: 'redis_password'
6     key: 'log'  #这个key就是将写入redis的key名,list类型

 

2、登录Redis后通过keys *命令可以看到有了一个key叫做log,这个就是配置文件里设置的key名,使用LLEN demo可以看到该key的长度,input如果输入了100行,那么这个key就应该有100行

 

3、配置Logstash从Redis中读取数据,修改input部分:

01 input {
02     redis {
03         host => "192.168.1.100"
04         port => "6379"
05         db => "0"
06         data_type => "list"
07         key => "log"
08         password => 'redis_password'
09     }
10 }

 

 

4、所有组件都运行成功后再去redis看看,队列会因为被output到了ES中而消失掉或者是迅速减少长度

 

二、ELK架构引入Kafka配置步骤

1、部署JDK与Zookeeper环境,详细安装部署可以参考本站文章《ZooKeeper集群配置教程》

 

2、安装Kafka,详细安装部署可以参考本站文章《Kafka集群部署使用与扩容教程》

 

3、修改Filebeat配置文件,将output输出目标指定为kafka

01 filebeat.inputs:
02 - type: log
03   enabled: true
04   paths:
05     - /var/log/nginx/access.log
06   tags: ["access"]  #添加tags标记
07 - type: log
08   enabled: true
09   paths:
10     - /var/log/nginx/error.log
11   tags: ["error"]  #添加tags标记
12 output:
13   kafka:
14     hosts:["192.168.1.100:9092"]
15     topic: log  #写到kafka中的队列标签,可自定义
16     topics:
17       - topic: "nginx-access"  #topic名称
18         when.contains:
19           tags: "access"  #当tags是access时则写入nginx-access这个topic中
20       - topic: "nginx-error"
21         when.contains:
22           tags: "error"

 

4、修改Logstash配置文件,将input修改为从Kafka中读取数据

01 input {
02     kafka {
03         bootstrap_servers => "192.168.1.100:9092,192.168.1.101:9092,192.168.1.102:9092,"
04         topics => ["nginx-access"]  #需要和filebeat输出到kafka的topic保持一致
05         group_id => "log"
06         codec => "plain"  #如果日志是json格式的这里就需要改为json
07     }
08  
09     kafka {
10         bootstrap_servers => "192.168.1.100:9092,192.168.1.101:9092,192.168.1.102:9092,"
11         topics => ["error"]
12         group_id => "log"
13         codec => "plain"  #如果日志是json格式的这里就需要改为json
14     }
15 }

 

5、查看kafka队列信息

1 /usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server 192.168.1.100:9092 --list  #查看Group,应该能看到log这个队列存在
2 /usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server 192.168.1.100:9092 --group log --describe  #查看具体的队列和消费信息
 

标签:redis 跳跃表
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
相关信息推荐