[置顶] 消息中间件收录集

本篇主要整理工作中遇到的一些消息中间件的相关知识,包括Kafka, RabbitMQ, RocketMQ, ActiveMQ等,不排除收录其他消息中间件的可能。 这里会持续收录相关知识,包括安装、部署、使用示例、监控、运维、原理等。 所有新撰写的与中间件有关的文章都会收录与此,注意保存本文链接。Kafka运维 kafka集群配置 kafka的安装(包括zookeeper) 原理 kafka文件存...
阅读(1673) 评论(12)

RabbitMQ管理(4)——应用管理

本文主要阐述应用与集群相关的一些操作管理命令,包括关闭、重置、开启服务,还有建立集群的一些信息。有关集群搭建更多的信息可以参考RabbitMQ的安装及集群搭建方法。rabbitmqctl stop [pid_file] 用于停止运行RabbitMQ的Erlang虚拟机和RabbitMQ服务应用。如果指定了pid_file,还需要等待指定进程的结束。其中pid_file是通过调用rabbitmq-s...
阅读(61) 评论(0)

RabbitMQ管理(3)——Web端管理

前面讲述的都是使用rabbitmqctl工具来管理RabbitMQ,有些时候你是否会觉得这种方式是不是不太友好?而且为能够运行rabbitmqctl工具,当前的用户需要拥有访问Erlang cookie的权限,由于服务器可能是以guest或者rabbit用户身份来运行的,因此你需要获得这些文件的访问权限,这样就引申出来一些权限管理的问题。RabbitMQ的开发团队也考虑到了这种情况,并且开发了Rab...
阅读(241) 评论(0)

RabbitMQ管理(2)——用户管理

在RabbitMQ中,用户是访问控制(Access Control)的基本单元,且单个用户可以跨越多个vhost进行授权。针对一至多个vhost,用户可以被赋予不同级别的访问权限,并使用标准的用户名和密码来认证用户。 创建用户的命令为:rabbitmqctl add_user {username} {password}。其中username表示要创建的用户名称;password表示创建用户登录的密...
阅读(353) 评论(0)

RabbitMQ管理(1)——多租户与权限

每一个RabbitMQ服务器都能创建虚拟的消息服务器,我们称之为虚拟主机(virtual host),简称为vhost。每一个vhost本质上是一个独立的小型RabbitMQ服务器,拥有自己独立的队列、交换器以及绑定关系等待,并且它拥有自己独立的权限。vhost就像是虚拟机与物理服务器一样,它们在各个实例间提供逻辑上的分离,允许你为不同程序安全保密地运行数据,它既能将同一个RabbitMQ的中众多客...
阅读(293) 评论(0)

RabbitMQ之惰性队列(Lazy Queue)

RabbitMQ从3.6.0版本开始引入了惰性队列(Lazy Queue)的概念。惰性队列会尽可能的将消息存入磁盘中,而在消费者消费到相应的消息时才会被加载到内存中,它的一个重要的设计目标是能够支持更长的队列,即支持更多的消息存储。当消费者由于各种各样的原因(比如消费者下线、宕机亦或者是由于维护而关闭等)而致使长时间内不能消费消息造成堆积时,惰性队列就很有必要了。默认情况下,当生产者将消息发送到Ra...
阅读(366) 评论(1)

RabbitMQ之监控(3)

确保RabbitMQ能够健康的运行还不足以让人放松警惕。考虑这样一种情况:小明为小张创建了一个队列并绑定了一个交换器,之后某人由于疏忽而阴差阳错的删除了这个队列而无人得知,最后小张在使用这个队列的时候就会报出“NOT FOUND”的错误。如果这些在测试环境中发生,那么还可以弥补。如果在实际生产环境中,如果误删了一个队列,那必然会造成不可估计的影响。此时业务方如果正在使用这个队列,正常情况下会立刻报出...
阅读(424) 评论(0)

RabbitMQ之监控(2)

本文接RabbitMQ之监控(1)。不管是通过HTTP API接口还是客户端,获取的数据都是为了提供监控视图之用,不过这一切都基于RabbitMQ服务运行完好的情况下。虽然可以通过某些其他工具或方法来检测RabbitMQ进程是否在运行(如:ps aux | grep rabbitmq),或者5672端口是否开启(如:telnet xxx.xxx.xxx.xxx 5672),但是这样依旧不能真正的评判...
阅读(838) 评论(2)

RabbitMQ负载均衡(4)——LVS

负载均衡的方案有很多,适合RabbitMQ使用的处理HAProxy之外还有LVS。LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在Linux2.6.32内核以前,使用LVS时必须要重新编译内核以支持LVS功能模...
阅读(513) 评论(0)

RabbitMQ负载均衡(3)——Keepalived+HAProxy实现高可用的负载均衡

试想下如果前面配置的HAProxy主机192.168.0.9突然宕机或者网卡失效,那么虽然RabbitMQ集群没有任何故障,但是对于外界的客户端来说所有的连接都会被断开,结果将是灾难性的。确保负载均衡服务的可靠性同样显得十分的重要。这里就引入Keepalived工具,它能够通过自身健康检查、资源接管功能做高可用(双机热备),实现故障转移。Keepalived采用VRRP(Virtual Router...
阅读(675) 评论(6)

RabbitMQ负载均衡(2)——HAProxy

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案,包括Twitter,Reddit,StackOverflow,GitHub在内的多家知名互联网公司在使用。HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。安装HAProxy首先需要去HAProxy的官网下载HAProxy的安装文件,目前最新的版本为...
阅读(565) 评论(6)

RabbitMQ负载均衡(1)

面对大量业务访问、高并发请求可以使用高性能的服务器来提升RabbitMQ服务的负载能力。当单机容量达到极限时,我们可以采取集群的策略来对负载能力做进一步的提升,但是这里还存在一个负载不均衡的问题。试想如果一个集群中有3个节点,那么所有的客户端都与其中的单个节点node1建立TCP连接,那么node1的网络负载必然会大大增加而显得难以承受,其他节点又由于没有那么多的负载而造成硬件资源的浪费,所以负载均...
阅读(653) 评论(0)

RabbitMQ消息追踪之rabbitmq_tracing

rabbitmq_tracing插件相当于Firehose的GUI版本,它同样能跟踪RabbitMQ中消息的流入流出情况。rabbitmq_tracing插件同样会对流入流出的消息做封装,然后将封装后的消息日志存入相应的trace文件之中。可以使用rabbitmq-plugins enable rabbitmq_tracing命令来启动rabbitmq_tracing插件。[root@node3 o...
阅读(805) 评论(0)

RabbitMQ消息追踪之Firehose

在使用任何消息中间件的过程中,难免会出现某条消息异常丢失的情况。对于RabbitMQ而言,可能是因为生产者或消费者与RabbitMQ断开了连接,而它们与RabbitMQ又采用了不同的确认机制;也有可能是因为交换器与队列之间不同的转发策略;甚至是交换器并没有与任何队列进行绑定,生产者又不感知或者没有采取相应的措施;另外RabbitMQ本身的集群策略也可能导致消息的丢失。这个时候就需要有一个较好的机制跟...
阅读(445) 评论(0)

模拟RabbitMQ网络分区

1. 概述正常情况下,很难观察到RabbitMQ网络分区的发生。为了更好的理解网络分区,需要某些手段将其模拟出来,以便对其做相应的分析处理,进而在正式应用环境中遇到类似情形可以处理的游刃有余。往长远方面讲,也可以采取一些必要的手段去避免网络分区的发生,或者可以监控网络分区以便对其迅速处理。模拟网络分区的方式有多种,主要分为以下3大类: iptables封禁/解封IP地址或者端口号。 关闭/开启网卡。...
阅读(648) 评论(0)

学会查看 RabbitMQ日志

如果在使用RabbitMQ的过程中出现了异常情况,通过翻阅RabbitMQ的服务日志可以让你在处理异常的过程中事半功倍。RabbitMQ日志中会有明确的事件日期、事件内容以及事件等级等。RabbitMQ的日志默认存放在$RABBITMQ_HOME/var/log/rabbitmq目录下。本小节主要从RabbitMQ服务开启、RabbitMQ服务关闭以及RabbitMQ集群搭建的角度来举例说明Rabb...
阅读(919) 评论(0)

RabbitMQ Network Partitions 处理策略

网络分区的意义RabbitMQ的模型类似交换机模型,且采用erlang这种电信网络方面的专用语言实现。RabbitMQ集群是不能跨LAN部署(如果要WAN部署需要采用专门的插件)的,也就是基于网络情况良好的前提下运行的。这种假设就好比paxos并不解决拜占庭问题。为什么RabbitMQ需要这种前提假设?这个它本身的数据一致性复制原理有关。RabbitMQ采用的镜像队列是一种环形的逻辑结构,如下图:R...
阅读(1058) 评论(0)

RabbitMQ Network Partitions 服务日志对比

如果你一直使用RabbitMQ作为业务的消息中间件,难免会遇到网络分区(Network Partitions)的故障,也许你当时会束手无策,一脸懵逼,不过希望在看完这篇文章之后,能给你一点解决网络分区的思路。RabbitMQ中所有节点状态的变更都会记录在日志当中,日志默认地址为:$RABBITMA_HOME/var/log/rabbitmq/rabbit@node*.log。所以当网络分区发生的时候...
阅读(780) 评论(0)

Kafka压缩

在某些情况下,整个应用的瓶颈不在于CPU或者磁盘,而是受网络带宽的影响。当然你可以选择在业务代码中对每一条消息做压缩处理,之后再发送到kafka中,之后业务消费端再进行解压处理,这种方式对应消息的压缩效率是非常低。而真正有效的压缩是对一批消息进行压缩而不是单独的为每条消息进行压缩。Kafka(本文是以0.8.2.x的版本做基准的)本身可以支持几种类型的压缩,比如gzip和snappy,更高的版本还支...
阅读(1632) 评论(0)

RabbitMQ的元数据重建

1.概述对于RabbitMQ运维层面来说,扩容和迁移是必不可少。扩容比较简单,一般往集群中加入新的机器节点即可,不过新的机器节点中是没有消息的,如果想要新加入的节点能快速的存储消息还是需要做点小手术的。不过这是后话,本文的主要内容是迁移,而迁移的首要工作就是为新的集群重建原集群的元数据。重建RabbitMQ元数据,说白了就是在新的集群上重新创建exchange、queue以及彼此的binding关系...
阅读(828) 评论(0)

Highly Available (Mirrored) Queues

本文翻译RabbitMQ官方文档:Highly Available (Mirrored) Queues,原文地址:http://www.rabbitmq.com/ha.html。(翻译水平有限,不喜轻喷~~)高可用(镜像)队列默认情况下,queues存放在RabbitMQ集群的单个节点之上。exchanges和bindings恰恰相反,在集群中的所有节点中都有存档。queues可以配置镜像以此可以在...
阅读(758) 评论(0)
213条 共11页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:822697次
    • 积分:9899
    • 等级:
    • 排名:第1873名
    • 原创:190篇
    • 转载:15篇
    • 译文:3篇
    • 评论:687条
    最新资讯
    内推简历请砸:
    zhuzhonghua.ideal@qq.com。

    消息中间件交流可以加微信:hiddenzzh。
    最新评论
    博客专栏