摘要:
把 HAProxy 用上了,终于不用担心某个节点挂了,还要去手动修改管理后台配置文件的api地址了. 在某网站下载了一个 window 可以用的版本 haproxy-1.7.8 不得不吐槽一下,作者要了48分,真敢开口.还好我是年度会员... 下载解压后,修改 haproxy.cfg 文件. 参数就 阅读全文
摘要:
RabbitMQ 默认的集群模式,也就是普通模式,最大的问题就在于存储队列完整数据的节点一旦宕机, 如果是非持久化队列,则消息丢失;如果是持久化队列+持久化消息,则必须等该节点恢复. 所以后来 RabbitMQ 开始支持队列(完整数据)复制.比如在有5个节点的集群里,可以指定某个队列的完整数据在2个 阅读全文
摘要:
上篇文章把单机集群搭建好了,可以开始验证普通集群的相关功能了. 我们首先在管理后台(15672,15673 都可以)添加一个用户,并用新用户登录,添加一个虚拟主机 由于是在一台机器上模拟集群,所以我们把创建连接的工具类小改一下,将端口号作为入参. 一.非持久化队列验证 1.生产者连接到 node1 阅读全文
摘要:
拜读了网上很多前辈的文章,对RabbitMQ的集群有了一点点认识. 好多文章都说到,RabbitMQ的集群分为普通集群和镜像集群,有的还加了两种:单机集群和主从集群. 我看来看去,看了半天,怎么感觉,其实RabbitMQ的集群实际就一种:普通集群. 至于单机集群,无非是在一台机器上模拟普通集群, 镜 阅读全文
摘要:
数据库HA 一般把数据库层面的HA,和应用层面HA分开考虑 数据库一般采用数据库产品提供的HA方案,比如Oracle的RAC,mysql的集群,mongodb的replica set等 无HA的运维 在应用层面不做HA,我们产品有试过,后果十分惨重。无论是应用down了,还是硬件故障,都会造成业务中 阅读全文
摘要:
消费者确认解决的问题是确认消息是否被消费者"成功消费". 它有个前提条件,那就是生产者发布的消息已经"成功"发送出去了. 因此还需要一个机制来告诉生产者,你发送的消息真的"成功"发送了. 在标准的AMQP 0-9-1,保证消息不会丢失的唯一方法是使用事务:在通道上开启事务,发布消息,提交事务.但是事 阅读全文
摘要:
由于生产者和消费者不直接通信,生产者只负责把消息发送到队列,消费者只负责从队列获取消息(不管是push还是pull). 消息被"消费"后,是需要从队列中删除的.那怎么确认消息被"成功消费"了呢? 是消费者从队列获取到消息后,broker 就从队列中删除该消息? 那如果消费者收到消息后,还没来得及"消 阅读全文
摘要:
在远程计算机上运行一个函数并等待结果,我们通常叫这种模式为远程过程调用或者RPC. 通过 RabbitMQ 进行 RPC 很容易,客户端发送请求消息,服务器回复响应消息.为了接收响应,我们需要发送带有“回调”队列地址的请求. 同时,这里面涉及到几个比较重要的消息属性: 消息属性 Durable : 阅读全文
摘要:
上篇文章讲了声明一个队列时的参数设置,这篇文章主要说一说发布消息时的参数设置. 发布消息时的完整入参是这样的: exchange: 交换机名称 routingKey:路由键 路由键的设置跟交换机的类型有关. 如果交换机的类型是"fanout",那么不管这个参数传入的是啥,哪怕是个空字符串(不能是nu 阅读全文
摘要:
代码中,我们通常这样声明一个队列: 对于第5个参数: arguments , 它的类型是一个键值对集合 : 它到底有哪些key呢? 我们可以通过 RabbitMQ 的管理页面看到: 一共10个: Message TTL : 消息生存期 Auto expire : 队列生存期 Max length : 阅读全文