MQ中间件
文章平均质量分 85
MQ消息中间件的技术选型,主流MQ中间件的基础原理与高级特性扩张。
庄小焱
我是庄小焱,某大厂Java高级工程师、PMP项目管理专家、系统架构设计师(高级)、CSDN博文专家。博主在支付交易领域,信贷金融领域深耕,我在博客中分享业务、技术、产品相关知识,欢迎大家和我交流学习。
展开
-
RocketMq——NameServer源码分析
RocketMQ架构体系里有四个角色:NameServer、Broker、Producer、Consumer。其中,Broker统称为服务端,Producer属于消息生产者和Consumer属于消息消费者,他们统称为客户端。客户端要如何与服务端通信?拿消息发送举例,一个消息可以发送到哪些Broker上?有新的Broker上线/旧的Broker下线,客户端如何感知到?在RocketMQ中就是NameServer来实现的。。原创 2024-02-18 23:50:52 · 573 阅读 · 0 评论 -
RocketMq——Producer源码分析
本博文将详细介绍MQ中间件技术选型。帮助你更好的使用合适的MQ中间件在自己的项目中,博文将介绍市面上常见的RabbitMQ,Kafka等。原创 2021-04-07 21:45:57 · 508 阅读 · 0 评论 -
RocketMq——Broker消息高性能存储分析
RocketMQ支持海量的消息积压,是因为它直接将消息写入到磁盘。同时,为了解决磁盘IO速度慢的问题,RocketMQ做了大量的优化。顺序写、零拷贝、异步刷盘是RocketMQ高性能存储的三大利器,消息生产时,CommitLog、ConsumerQueue、Index都是顺序写的,消息消费时,ConsumerQueue是顺序读的,但是CommitLog是随机读的。原创 2021-09-25 20:05:02 · 3775 阅读 · 0 评论 -
MQ——RocketMQ生产者原理
问题1:如果在使用MQ的时候,对于发送消息的长度有限制吗?如果是发送长消息会存在什么问题?怎么样解决长消息或者是大消息问题?问题答案:消息的大小受服务器内存的限制,如果它是持久的,那么空闲硬盘空间也是如此,在 3.8.0 版本之前,它曾经是 2 GiB:自版本 3.8.0 以来一直是 512 MiB:如果太大的话,连接后将一直负载很重这样容易消耗内存资源。在RabbitMQ中通过tracing 中的Max payload bytes:表示每条消息的最大限制,单位为B。比如设置了了此值为10,那么原创 2021-10-24 08:21:10 · 1403 阅读 · 0 评论 -
MQ——Rabbit面试问题
RabbitMQ高级级消息队列协议。是一种的跨进程的通信的机制,用于上下游之间的管道方式的传递的消息。RabbitMQ的作用是本来系统运行好好的,现在你非要加入个消息队列进去,那消息队列挂了,你的系统不是呵呵了。因此,系统可用性会降低;加入了消息队列,要多考虑很多方面的问题,比如:一致性问题、如何保证消息不被重复消费、如何保证消息可靠性传输等。因此,需要考虑的东西更多,复杂性增大。A 系统处理完了直接返回成功了,人都以为你这个请求就成功了;原创 2020-05-29 15:48:47 · 4267 阅读 · 1 评论 -
MQ——Kafka面试问题
摘要主要的是的针对于的kafka的面试的问题进行分析和总结Kafka的用途有哪些?使用场景如何?总结下来就几个字:异步处理、日常系统解耦、削峰、提速、广播。如果再说具体一点例如:消息,网站活动追踪,监测指标,日志聚合,流处理,事件采集,提交日志等Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么?ISR:In-Sync Replicas 副本同步队列AR:Assigned Replicas 所有副本ISR是由leader维护,follower从leader同步数据有一些延迟(原创 2021-04-21 14:20:33 · 1710 阅读 · 0 评论 -
MQ——Kafka知识脑图
主要讲解Kafka 的基本的原理和相关的集群的原理以及MQ的主要使用场景。Apache Kafka 是一个分布式发布-订阅消息系统。是大数据领域消息队列中唯一的王者。最初由 linkedin 公司使用 scala 语言开发,在2010年贡献给了Apache基金会并成为顶级开源项目。至今已有十余年,仍然是大数据领域不可或缺的并且是越来越重要的一个组件。Kafka 适合离线和在线消息,消息保留在磁盘上,并在集群内复制以防止数据丢失。它与 Flink 和 Spark 有非常好的集成,应用于实时流式数据分析。原创 2021-04-20 21:52:03 · 327 阅读 · 0 评论 -
MQ——Kafka基本概念
摘要Kafka起初是由LinkedIn公司采用Scala语言开发的一个多分区、多副本且基于ZooKeeper协调的分布式消息系统,现已被捐献给Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Storm、Spark、Flink等都支持与Kafka集成。Kafka之所以受到越来越多的青睐,与它所“扮演”的三大角色是分不开的:消息系统:Kafka 和传统的消息原创 2021-04-22 12:35:08 · 258 阅读 · 0 评论 -
MQ——Kafka生产者原理
摘要虽然Kafka是用Java/Scala语言编写的,但这并不妨碍它对于多语言的支持,在Kafka官网中,“CLIENTS”的入口‘提供了一份多语言的支持列表,其中包括常用的C/C++、Python、Go等语言,不过这些其他类语言的客户端并非由Kafka社区维护,如果使用则需要另行下载。本章主要针对现下流行的新生产者(Java语言编写的)客户端做详细介绍,而旧生产者客户端已被淘汰,故不再做相应的介绍了。客户端开发一个正常的生产逻辑需要具备以下几个步骤:(1)配置生产者客户端参数及创建相应的生原创 2021-04-22 13:17:51 · 331 阅读 · 0 评论 -
MQ——Kafka消费者原理
摘要与生产者对应的是消费者,应用程序可以通过KafkaConsumer 来订阅主题,并从订阅的主题中拉取消息。不过在使用KafkaConsumer消费消息之前需要先了解消费者和消费组的概念,否则无法理解如何使用KafkaConsumer。本章首先讲解消费者与消费组之间的关系,进而再细致地讲解如何使用KafkaConsumer。消费者与消费组消费者(Consumer)负责订阅Kafka中的主题(Topic),并且从订阅的主题上拉取消息。与其他一些消息中间件不同的是:在Kafka的消费理念中还有一层原创 2021-04-22 13:53:09 · 2145 阅读 · 0 评论 -
MQ——Kafka主题与分区原理
摘要主题和分区是Kafka 的两个核心概念,前面章节中讲述的生产者和消费者的设计理念所针对的都是主题和分区层面的操作。主题作为消息的归类,可以再细分为一个或多个分区,分区也可以看作对消息的二次归类。分区的划分不仅为Kafka提供了可伸缩性、水平扩展的功能,还通过多副本机制来为Kafka提供数据冗余以提高数据可靠性。从Kafka的底层实现来说,主题和分区都是逻辑上的概念,分区可以有一至多个副本,每个副本对应一个日志文件,每个日志文件对应一至多个日志分段(LogSegment),每个日志分段还可以细分为原创 2021-04-22 15:14:38 · 829 阅读 · 0 评论 -
MQ——Kafka日志存储原理
摘要主要是介绍的kafka的日志存储系统文件目录布局回顾之前所学的知识:Kafka 中的消息是以主题为基本单位进行归类的,各个主题在逻辑上相互独立。每个主题又可以分为一个或多个分区,分区的数量可以在主题创建的时候指定,也可以在之后修改。每条消息在发送的时候会根据分区规则被追加到指定的分区中,分区中的每条消息都会被分配一个唯一的序列号,也就是通常所说的偏移量(offset),具有4个分区的主题的逻辑结构见图1-2。如果分区规则设置得合理,那么所有的消息可以均匀地分布到不同的分区中,这样就可以实原创 2021-04-29 22:20:30 · 814 阅读 · 0 评论 -
MQ——RabbitMQ学习脑图
摘要博文参考原创 2021-10-11 22:32:56 · 259 阅读 · 1 评论 -
MQ——RabbitMQ网络分区原理
摘要网络分区是在使用RabbitMQ 时所不得不面对的一个问题,网络分区的发生可能会引起消息丢失或者服务不可用等。可以简单地通过重启的方式或者配置自动化处理的方式来处理这个问题。网络分区的意义网络分区的判定网络分区的模拟网络分区的影响手动处理网络分区自动处理网络分区博文参考...原创 2021-10-10 10:58:28 · 2318 阅读 · 0 评论 -
MQ——RabbitMQ集群原理
摘要主要围绕运维层面展开论述,主要包括集群搭建、日志查看、故障恢复、集群迁移、集群监控这几个方面。RabbitMQ集群搭建RabbitMQ日志查看RabbitMQ故障恢复RabbitMQ集群迁移RabbitMQ集群监控...原创 2021-09-25 20:06:46 · 1467 阅读 · 0 评论 -
MQ——RabbitMQ基础组件
讲述RabbitMQ的入门知识,包括生产者、消费者、队列、交换器、路由键、绑定、连接及信道等基本术语。本章还阐述了RabbitMQ与AMQP 协议的对应关系。并详细的阐述其原源码。RabbitMQ 整体上是一个生产者与消费者模型,主要负责接收、存储和转发消息。可以把消息传递的过程想象成:当你将一个包裹送到邮局,邮局会暂存并最终将邮件通过邮递员送到收件人的手上, RabbitMQ 就好比由邮局、邮箱和邮递员组成的一个系统。从计算机术语层面来说,RabbitMQ 模型更像是一种交换机模型。原创 2021-09-24 00:07:31 · 3499 阅读 · 1 评论 -
MQ——RabbitMQ工作模式
摘要本文主要是主要是的对RabbitMQ的源码进行详细的阅读和理解,同时也是对MQ中源码进行深入的学习和分析,同时这个也是本系列博文的开始,后期将继续推出对MQ源码的理解和学习的博文。什么是RabbitMQRabbitMQ怎么样使用以及构建实战RabbitMQ的作用以及优缺点RabbitMQ对比其他MQ,以及应用场景RabbitMQ的项目的源码以及说明参考博文Installing on Windows Manually — RabbitMQ白嫖!我花了原创 2021-09-14 14:40:32 · 582 阅读 · 0 评论 -
MQ——RabbitMQ高级特性原理2
摘要第9章介绍RabbitMQ相关的一些原理,主要内容包括RabbitMQ存储机制、磁盘和内存告警、流控机制、镜像队列。RabbitMQ存储机制RabbitMQ磁盘和内存告警RabbitMQ流控机制RabbitMQ镜像队列...原创 2021-09-25 20:31:12 · 1510 阅读 · 2 评论 -
MQ——RabbitMQ高级特性原理
摘要本博文将介绍数据可靠性的一些细节,并展示RabbitMQ的几种已具备或衍生的高级特性,包括TTL、死信队列、延迟队列、优先级队列、RPC等,这些功能在实际使用中可以让某些应用的实现变得事半功倍。同时对源码进行详细的分析。Rabbit的TTLRabbit的死信队列Rabbit的延迟队列Rabbit的优先级队列Rabbit的RPC...原创 2021-09-25 19:59:26 · 560 阅读 · 0 评论 -
MQ——RabbitMQ高级特性3
摘要本博文件详细的介绍RabbitMQ的消息追踪和均衡负载的相关的原理。消息追踪均衡负载博文参考原创 2021-10-10 11:01:19 · 985 阅读 · 0 评论 -
MQ——RabbitMQ集群原理
摘要主要讲述Federation和 Shovel这两个插件的使用、细节及相关原理。相对于集群的部署方式,Federation和Shovel可以部署在广域网中,为RabbitMQ提供更广泛的应用空间。FederationShovel原创 2021-09-25 20:27:00 · 1256 阅读 · 0 评论 -
MQ——RabbitMQ权限管理
摘要本博文主要围绕RabbitMQ管理这个主题展开,包括多租户、权限、用户、应用和集群管理、服务端状态等方面,并且从侧面讲述rabbitmqctl 工具和rabbitmq_management 插件的使用。多租户管理权限管理用户管理应用管理集群管理服务端状态管理...原创 2021-09-25 20:02:49 · 3156 阅读 · 0 评论 -
MQ——RabbitMQ工作模式实战
摘要主要是讲解Rabbit的实战代码和分析。主要的代码在:https://github.com/2462612540/Senior-Architect/tree/a_1.0/RabbitMQ简答模式下项目结构简单模式下生产者代码package com.xjl.mq.producer;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client原创 2021-09-23 23:39:24 · 349 阅读 · 2 评论 -
MQ——RabbitMQ集群容器构建实战
摘要主要是的实现RabbitMQ集群的构建工作。将详细的讲述集群构建的过程和步骤。Docker的安装RabbitMQ的安装RabbitMQ集群的安装RabbitMQ集群的测试原创 2021-09-18 00:00:58 · 362 阅读 · 0 评论