消息中间件
文章平均质量分 93
Men-DD
这个作者很懒,什么都没留下…
展开
-
分布式中间件提问
答:broker 是指一个或多个 erlang node 的逻辑分组,且 node 上运行着 RabbitMQ 应用程序。cluster 是在 broker 的基础之上,增加了 node 之间共享元数据的约束。答:在非 cluster 模式下,元数据主要分为 Queue 元数据(queue 名字和属性等)、Exchange 元数据(exchange 名字、类型和属性等)、Binding 元数据(存放路由关系的查找表)、Vhost 元数据(vhost 范围内针对前三者的名字空间约束和安全属性设置)。在原创 2022-07-10 00:54:51 · 387 阅读 · 0 评论 -
分布式中间件(五):RocketMQ 源码
RocketMQ的官方Git仓库地址:https://github.com/apache/rocketmq功能模块mvn clean install -Dmaven.test.skip=true在项目目录下创建一个conf目录,并从distribution拷贝broker.conf和logback_broker.xml和logback_namesrv.xmlnamesrv模块,运行NamesrvStartup环境变量: ROCKETMQ_HOMEBroker的启动类是broker模块下的BrokerSta原创 2022-06-23 09:55:34 · 147 阅读 · 0 评论 -
分布式中间件(四):RocketMQ 原理
原来四个队列,现在要缩减成两个队列。如果立即缩减读写队列,那么被缩减的MessageQueue上没有被消费的消息,就会丢失存储文件主要分为三个部分:辅助的存储文件:所有生产者发过来的消息,都会无差别的依次存储到Commitlog文件当中。这样的好处是可以减少查找目标文件的时间,让消息以最快的速度落盘: Kafka 存文件需要寻找消息所属的Partition文件,再完成写入。 当Topic比较多时,这样的Partition寻址就会浪费比较多的时间,所以Kafka不太适合多Topic的场景正因为消息的记录大小原创 2022-06-17 23:10:54 · 902 阅读 · 0 评论 -
分布式中间件(三):RocketMQ 提问
RocketMQ的事务消息机制就是为了保证零丢失来设计的,并且经过阿里的验证,肯定是非常靠谱的深入理解事务消息到底是不是靠谱以电商订单场景为例,来简单分析下事务消息机制如何保证消息不丢失。我们看下下面这个流程图:这个half消息是在订单系统进行下单操作前发送,并且对下游服务的消费者是不可见的。那这个消息的作用更多的体现在确认RocketMQ的服务是否正常。相当于嗅探下RocketMQ服务是否正常,并且通知RocketMQ,我马上就要发一个很重要的消息了,你做好准备如果没有half消息这个流程,那我们通常是原创 2022-06-15 11:38:13 · 284 阅读 · 0 评论 -
分布式中间件(二):RocketMQ 应用
RocketMQ的编程模型消息发送者的固定步骤1.创建消息生产者producer,并制定生产者组名2.指定Nameserver地址3.启动producer4.创建消息对象,指定主题Topic、Tag和消息体5.发送消息6.关闭生产者producer消息消费者的固定步骤1.创建消费者Consumer,制定消费者组名2.指定Nameserver地址3.订阅主题Topic和Tag4.设置回调函数,处理消息5.启动消费者consumerRocketMQ的推模式也是由拉模式封装出来的消息大小限制在原创 2022-06-15 09:33:30 · 3463 阅读 · 0 评论 -
分布式中间件(一):RocketMQ
早期阿里使用ActiveMQ,但是,当消息开始逐渐增多后,ActiveMQ的IO性能很快达到了瓶颈。于是,阿里开始关注Kafka。但是Kafka是针对日志收集场景设计的,他的并发性能并不是很理想。尤其当他的Topic过多时,由于Partition文件也会过多,会严重影响IO性能。于是阿里才决定自研中间件,最早叫做MetaQ,后来改名成为RocketMQ官网地址: http://rocketmq.apache.orggithub地址是 https://github.com/apache/rocketmqht原创 2022-06-13 17:46:00 · 568 阅读 · 0 评论 -
分布式中间件(二):Kafka 提问
如果消费这边配置的是,万一消费到数据还没处理完,就自动提交offset了,但是此时你consumer直接宕机了,未处理完的数据丢失了,下次也消费不到了。提示: 如果设置不自动提交,可能会出现重复消费问题发送消息如果配置了重试机制,比如网络抖动时间过长导致发送端发送超时,实际broker可能已经接收到消息,但发送方会重新发送消息如果消费这边配置的是自动提交,刚拉取了一批数据处理了一部分,但还没来得及提交,服务挂了,下次重启又会拉取相同的一批数据重复处理一般消费端都是要做如果发送端配置了重试机制,kafka不会原创 2022-06-10 17:31:00 · 111 阅读 · 0 评论 -
分布式中间件(一):Kafka
kafka是一个分布式的,分区的消息(官方称之为commit log)服务下载修改配置文件启动停止启动脚本语法:停止kafka:原创 2022-06-07 19:10:42 · 328 阅读 · 0 评论 -
分布式中间件(四):RabbitMQ 提问
对于单个数据,可以使用生产者确认机制。通过多次确认的方式,保证生产者的消息能够正确的发送到RabbitMQ中。RabbitMQ的生产者确认机制分为同步确认和异步确认。同步确认主要是通过在生产者端使用指定一个等待确认的完成时间。异步确认机制则是通过在生产者端注入两个回调确认函数。第一个函数是在生产者发送消息时调用第二个函数则是生产者收到Broker的消息确认请求时调用两个函数需要通过sequenceNumber自行完成消息的前后对应。sequenceNumber的生成方式需要通过channel的序列原创 2022-06-07 14:05:19 · 118 阅读 · 0 评论 -
分布式中间件(三):RabbitMQ 应用
rabbitmq 使用文档 https://www.rabbitmq.com/getstarted.html如何使用Classic和Quorum队列、 Stream队列 客户端不同https://www.rabbitmq.com/tutorials/tutorial-one-java.html2. 首先创建连接,获取Channel3. 声明queue队列如果要声明一个Quorum队列,则只需要在后面的arguments中传入一个参数,x-queue-type,参数值设定为quorum。注意:1原创 2022-06-02 10:19:46 · 1451 阅读 · 0 评论 -
分布式中间件(二):RabbitMQ
rabbitmq@worker2在RabbitMQ中,一个节点的服务其实也是作为一个集群来处理的,在web控制台的admin-> cluster 中可以看到集群的名字,并且可以在页面上修改。而多节点的集群有两种方式这种模式使用Erlang语言天生具备的集群方式搭建。这种集群模式下,集群的各个节点之间只会有相同的元数据,即队列结构,而消息不会进行冗余,只存在一个节点中。消费时,如果消费的不是存有数据的节点, RabbitMQ会临时在节点之间进行数据传输,将消息从存有数据的节点传输到消费的节点。很显然,这种集原创 2022-06-01 17:19:00 · 478 阅读 · 0 评论 -
分布式中间件(一):消息队列(MQ)
队列,是一种FIFO先进先出的数据结构。消息由生产者发送到MQ进行排队,然后按原来的顺序交由消息的消费者进行处理RabbitMQ 2007年发布,是一个在 AMQP (高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。RocketMQ出自阿里公司的开源产品,用 Java 语言实现,在设计时参考了 Kafka,并做出了自己的一些改进,消息可靠性上比 Kafka 更好。经历过多次双十一的考验,性能和稳定性还是值得信赖的,RocketMQ在阿里集团被广泛应用在订单,交易,充值,流原创 2022-06-01 12:18:49 · 424 阅读 · 0 评论 -
消息中间件
常见的消息中间件比较ActiveMQRabbitMQRabbitMQKafka性能(单台)6000+万级(12000+)十万级百万级消息持久化支持支持支持支持多语言支持支持支持很少支持社区活跃度高高很少高支持协议多(JMS AMQP)多(AMQP STOMP MQTT)少少综合评价优点: 成熟,已经...原创 2019-01-23 23:59:57 · 135 阅读 · 0 评论