随笔分类 - 中间件
摘要:1、RabbitMQ网址 RabbitMQ官网:https://www.rabbitmq.com/ Github地址:https://github.com/rabbitmq/rabbitmq-server RabbitMQ的rabbitmq-env.conf文件:https://www.rabbit
阅读全文
摘要:1、HAProxy安装(二进制) 1.1、部署环境 软件版本 lua:5.4.3 haproxy:2.5.6 系统环境 192.168.1.101:CentOSLinuxrelease7.7.1908(Core) 192.168.1.102:CentOSLinuxrelease7.7.1908(Co
阅读全文
摘要:1、消息追踪 在使用任何消息中间件的过程中,难免会出现消息异常丢失的情况。 可能是生产者与Broker断开了连接并且也没有任何重试机制。 可能是消费者在处理消息时发生了异常,不过却提前进行了ack。 可能是交换器并没有与任何队列进行绑定,生产者感知不到或者没有采取相应的措施。 可能是RabbitMQ
阅读全文
摘要:1、网络分区的意义 RabbitMQ集群的网络分区的容错性并不是很高,一般都是使用Federation或者Shovel来解决广域网中的使用问题。不过即使是在局域网环境下,网络分区也不可能完全避免,网络设备(比如中继设备、网卡)出现故障也会导致网络分区。 当出现网络分区时,不同分区里的节点会认为不属于
阅读全文
摘要:1、存储机制 持久化消息和非持久化消息都可以被写入到磁盘。 持久化消息一到达队列就会被写入磁盘。持久化消息会尽可能地保存在内存中,这样可以提高一定的性能,但当内存吃紧时会从内存中清除。 非持久化消息一般只会保存在内存中,但在内存吃紧时也会被写入到磁盘中,以节省内存空间。 将持久化消息和非持久化消息存
阅读全文
摘要:RabbitMQ可以通过3种方式实现分布式部署:集群、Federation和Shovel。这3种方式不是互斥的,可以根据需要选择其中的一种或者以几种的组合来达到分布式部署的目的。 Federation和Shovel可以为RabbitMQ的分布式部署提供更高的灵活性,但同时也提高了部署的复杂性。 1、
阅读全文
摘要:RabbitMQ集群允许消费者和生产者在RabbitMQ一个节点崩惯的情况下继续运行,它也可以通过添加更多的节点来水平扩展消息通信的吞吐量。 当失去一个RabbitMQ 节点时,客户端能够重新连接到集群中的任何其他节点并继续生产或者消费。不过RabbitMQ集群不能保证消息的不会丢失,即便将消息、队
阅读全文
摘要:一般情况下,可以使用默认配置直接运行RabbitMQ。 配置RabbitMQ服务有三种方法: (1)环境变量(Enviroment Variables):RabbitMQ服务端参数可以通过环境变量进行配直。例如,节点名称、RabbitMQ配置文件的地址、节点内部通信的端口等。 (2)配置文件(Con
阅读全文
摘要:rabbitmqctl是一个命令行工具,使用这个工具可以执行大部分的RabbitMQ的管理操作。 rabbitmq management是RabbitMQ提供的一个管理插件,可以让用户通过图形化的方式来管理RabbitMQ,但是它的功能却远不仅于此。 1、RabbitMQ服务管理 rabbitmq-
阅读全文
摘要:1、RabbitMQ架构 RabbitMQ是一个生产者与消费者模型,主要负责接收、存储和转发消息。 RabbitMQ的整体架构模型,如图2-1所示。 AMQP消息路由必须有三部分:交换器、队列和绑定。 1.1、生产者和消费者 生产者(Producer):创建消息,然后将消息发布(发送)到Rabbit
阅读全文
摘要:RabbitMQ官网:https://www.rabbitmq.com/ Github地址:https://github.com/rabbitmq/rabbitmq-server RabbitMQ是由Erlang语言编写的,因此,在安装RabbitMQ之前需要安装Erlang 。建议采用较新版的Er
阅读全文
摘要:1、什么是消息中间件 消息(Message)就是在应用之间传送的数据。消息可以非常简单,比如只包含文本字符串、JSON等,也可以很复杂,比如内嵌对象。 消息队列中间件(Message Queue Middleware ,简称为MQ)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通
阅读全文
摘要:1、副本剖析 副本(Replica)是分布式系统中常见的概念之一,指的是分布式系统对数据和服务提供的一种冗余方式。在常见的分布式系统中,为了对外提供可用的服务,我们往往会对数据和服务进行副本处理。 数据副本是指在不同的节点上持久化同一份数据,当某一个节点上存储的数据丢失时,可以从副本上读取该数据,这
阅读全文
摘要:1、分区分配策略 Kafka消费者客户端使用参数partition.assignment.strategy来设置消费者与订阅主题之间的分区分配策略。 分区分配策略有三种:RangeAssignor、RoundRobinAssignor和StickyAssignor。 默认分配策略是RangeAssi
阅读全文
摘要:1、协议设计 在目前的Kafka 2.0.0中,一共包含了43种协议类型,每种协议类型都有对应的请求(Request)和响应(Response),它们都遵守特定的协议模式。 1.1、请求头和响应头 1.1.1、请求头 每种类型的Request都包含相同结构的协议请求头(RequestHeader)和
阅读全文
摘要:1、为什么不能使用简单的扩容 现在有三台机器组成的ZooKeeper集群。但是一两个月后,你会发现使用ZooKeeper的客户端越来越多,并且成为一个关键的服务,因此你想要把服务器扩容到五台,没什么大不了的,是嘛?你可以在深夜停止集群,重新配置所有服务器,并在不到一分钟的时间里恢复服务。如果你的应用
阅读全文
摘要:1、权限管理 ZooKeeper的权限管理,即ACL控制功能。一个ZooKeeper的znode存储两部分内容:数据和状态,状态中包含ACL信息。 每一个znode都会有自己的ACL列表,ACL列表包括: [scheme:id:permissions] 和Acl相关的zkCli.sh命令: getA
阅读全文
摘要:我们已经讨论了快照、事务日志和存储设备,本节中,我们将会讨论如何在文件系统上实现这些功能。 数据存储有两类:事务日志文件和快照文件。这两类文件均以普通文件的形式保存到本地文件系统中。事务日志是在进行事务处理的时候写入的,因此我们强烈建议将其存储在专用设备上(因为这对于保持良好的吞吐能力和延迟非常重要
阅读全文
摘要:ZooKeeper运行在一组服务器上,而客户端连接到这些服务器上执行操作。但是这些服务器对客户端发送的操作到底做了什么呢?我们要在这组ZooKeeper服务器中选择某一个服务器,称之为群首(leader)。其他服务器追随leader,被称为追随者(follower)。 leader是处理所有改变Zo
阅读全文
摘要:1、zkCli.sh脚本的使用方法 官方手册:https://zookeeper.apache.org/doc/current/zookeeperCLI.html 1.1、连接和退出ZooKeeper服务器 1、连接到ZooKeeper服务器 使用ZooKeeper客户端(zkCli.sh)连接到Z
阅读全文