ELK之消息队列选择redis_kafka_rabbitmq
前言描述
生产初级,Service服务较少,访问量较少,随着业务量的不断增加,日志量成倍增长,然后就遇到了消息队列redis被充爆,不能满足应用的情况。针对此情况,我们来分析下可用的消息多列。
官方推荐消息队列
redis、kafka、rabbitmq。我们现在针对这三种进行比较。
从消息订阅模式比较
Redis
redis是基于内存的应用,消息都存放在内存中,写入读取速度快,但是受内存容量的限制,容易造成内存充爆。
Kakfa
kafka是一个分布式的流式处理平台,它的设计初衷就是一个日志系统,消息内容是可以持久化一段时间的,消息的订阅消费位置的确定是通过消费者offset来定位的,也可以定位到之前消息再次消费。
Rabbitmq
rabbitmq的一个特殊之处是,生产者并不是直接将消息发送到队列中,而是通过exchange中继,exchange转发到队列。所以rabbitmq在消息的路由方面比之前两者都好很多。
从work queue来比较
Redis
redis的消息数据就存放在内存中,因为redis数据的原子性,数据只能被消费一次,不能重复。
Kafka
kafka通过consumer group的方式实现了work queue。·同一个组的消费者能够协调完成任务。另外它是一个分布式的文件系统,他的队列可以理解为topic,我们都知道topic是可以划分为多个partition的,多个partiton是可以分布在不同的node节点上的。这样当一个consumer来消费的时候,就可以到不同的节点上去获取消息,也就达到了负载均衡的作用,避免单点压力。于此同时,就会产生另外的一个问题,当有消费者在进行消费的时候,如何保证这个队列同时不背其他的消费者消费,这就需要zookeeper的分布式锁来解决了。
Rabbitmq
rabbitmq也是有自己的一个机制来实现队列的负载均衡,通过轮询机制给worker发布消息,以此来实现。当有大量的消费者去消费同一个队列的时候,这个队列的性能就会成为一个瓶颈
Rabbitmq的一个强大之处
因为它的一个核心exchanger。它可以将消息路由到不同的队列去,比如我既要打印输出,还要持久化,那我就可以直接路由到两个queue中去。
ELK之消息队列选择redis_kafka_rabbitmq的更多相关文章
- 通信有连接有消息队列选择boost.asio
通信有连接有消息队列选择boost.asio 连接自主管理 消息队列自主管理
- Xp 消息队列的使用
1.安装消息队列3.0: 控制面板/添加删除程序/添加window组件/找到消息队列/选择->详细信息->MSMQ HTTP支持. 注意:如果计算机没有连接到域需要去掉Active Dir ...
- ELK之使用kafka作为消息队列收集日志
参考:https://www.cnblogs.com/fengjian2016/p/5841556.html https://www.cnblogs.com/hei12138/p/7805475 ...
- RocketMQ消息发送的队列选择与容错策略
一个topic有多个队列,分散在不同的broker.producer在发送消息的时候,需要选择一个队列 producer发送消息全局时序图: 队列选择与容错策略结论: 在不开启容错的情况下,轮询队列进 ...
- 消息队列 ActiveMQ 、RocketMQ 、RabbitMQ 和 Kafka 如何选择?
「 预计阅读 6 分钟 」 旁白:这是一篇拖更了N久的文章...0.0(看不见我~) 往期回顾 前端框架 jQuery 和 Vue 如何选择? 安全框架 Shiro 和 Spring Security ...
- 常用的消息队列中间件mq对比
原文地址:https://blog.csdn.net/qq_30764991/article/details/80239076 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量 ...
- MQ(1)---消息队列概念和使用场景
消息队列概念和使用场景 声明:本文转自:MQ入门总结(一)消息队列概念和使用场景 写的很好,都不用自己在整理了,非常感谢该作者的用心. 一.什么是消息队列 消息即是信息的载体.为了让消息发送者和消息接 ...
- Java并发编程原理与实战三十六:阻塞队列&消息队列
一.阻塞队列 1.阻塞队列BlockingQueue ---->可以理解成生产者消费者的模式---->消费者要等待到生产者生产出来产品.---->而非阻塞队列ConcurrentLi ...
- RabbitMQ (十六) 消息队列的应用场景 (转)
原贴 : http://blog.csdn.net/cws1214/article/details/52922267 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题 ...
随机推荐
- OpenCV——SURF特征检测、匹配与对象查找
SURF原理详解:https://wenku.baidu.com/view/2f1e4d8ef705cc1754270945.html SURF算法工作原理 选择图像中的POI(Points of i ...
- 六,ESP8266 TCP Client(基于Lua脚本语言)
今天不知道是不是让我姐挺失望.......很多时候都不知道自己努力的方向对不对,,以后能不能带给家人最美好的期盼...... Init.lua 没啥改变,,就改了一下加载Client.lua gpio ...
- bat输出重定向
重定向符号主要有:>,>>,<,>&,<&和|,而本文只讨论前五个. 第一节 首先从一个经典问题开始,“1>nul 2>nul”的意思是 ...
- 相亲神器记录Swift1.2
这个简单APP是用swfit1.2写的,主要重点是:1.点击键盘return键可退出键盘. 2.各个控件值的传递. Storyboard界面设计: View代码: import UIKit class ...
- 服务发现比较:Consul vs Zookeeper vs Etcd vs Eureka
原文:https://blog.csdn.net/dengyisheng/article/details/71215234 服务发现比较:Consul vs Zookeeper vs Etcd vs ...
- python3 的 round 函数的 练习
python3 的 round 函数感觉很别扭,其运算结果与习惯不相符.特记录下来: 代码 ''' python 3的 round 函数 是"四舍六入五成双"的 https://w ...
- 4556: [Tjoi2016&Heoi2016]字符串
4556: [Tjoi2016&Heoi2016]字符串 链接 分析: 首先可以二分这个长度.此时需要判断是否存在一个以b结尾的前缀,满足与[c,d]的lcp大于等于mid. 如果我们把串翻转 ...
- 【python笔记】使用matplotlib,pylab进行python绘图
一提到python绘图,matplotlib是不得不提的python最著名的绘图库,它里面包含了类似matlab的一整套绘图的API.因此,作为想要学习python绘图的童鞋们就得在自己的python ...
- Windows10没有修改hosts文件权限的解决方案(亲测有效)
当遇到有hosts文件不会编辑或者,修改了没办法保存”,以及需要权限等问题如图: 或者这样: 我学了一招,现在教给你: 1.win+R 2.进入hosts的文件所在目录: 3.我们开始如何操作才能不出 ...
- python 连接 hive 的 HiveServer2 的配置坑
环境: hadoop 2.7.6 hive 2.3.4 Hive 的 thirft 启动: hadoop 单机或者集群需要: 启动 webhdfs 修改 hadoop 的代理用户 <proper ...