| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 【RocketMQ】--初识 -> 正文阅读 |
|
[大数据]【RocketMQ】--初识 |
RocketMQ简介消息对列RocketMQ版(原ONS)是阿里云基于Apache RocketMQ构建的低延迟、高并发、高可用、高可靠的分布式消息中间件。最初由阿里巴巴自研并捐赠给Apache基金会,服务阿里集团13年,覆盖全集团所有业务。作为双十一交易核心链路的官方指定产品,支持千万级并发、万亿级数据洪峰,历年刷新大规模交易消息流转记录。 RocketMQ应用场景link. 案例没有使用RocketMQ之前
使用RocketMQ之后解决方案是进行解耦,起一台RocketMQ,交易系统进行一次操作(如扣减库存,扣减优惠券),就生成一条消息,把它放到一个对应的主题上来,交给会员系统、商品系统,然后会员系统、商品系统作为消费者从RocketMQ中拿到消息并且处理 具体流程1.RocketMQ搭建好2.引入RocketMQ的客户端maven包引入:
3.订单系统完成商品的生产,把消息写入RocketMQ
4.商品系统增加一个监听类,进行商品的消费RocketMQ作为客户端中,生产者是可以作为controller介入的,消费者一般来说实用的是监听模式(推模式),也就是有消息来了,自动往这个监听里面去发送数据 定义一个组件专门监听RocketMQ的消息,主题,分组,模式(集群) 完成商品的消费(通过监听) 存在问题如何解决消息丢失?我们是通过生产者给RocketMQ发送消息,消费者从RocketMQ中取走消息来实现的解耦,那么消息丢失了怎么办呢? RocketMQ–主从复制图示解析~~~主从复制RocketMQ发送消息的时候如果对应的是集群只会发送给主(Master),从的数据是从主的同步复制过去的,这种复制方式可以是同步的也可以是异步的 ~~~刷盘RocketMQ的消息虽然存储在磁盘,但是刚往里面写的时候是写到内存(memory)里的,不保险,万一RocketMQ宕机了或者服务器断电了,数据就丢失了,存入磁盘才能保证数据万无一失,这个过程就叫做刷盘(同步刷盘,异步刷盘)。 ~~~~~~同步复制,异步刷盘一般我们采取的方法是同步复制,异步刷盘: 消费策略一般情况下,最为消费者,也是从主里面进行消费,当主宕机了或者主非常繁忙,才会从从里面进行消费 生产者–重试结论生产者给RocketMQ发送消息时调用的方法:rocketMQTemplate.getProducer().send(message) 默认重试两次,第一次发送失败,重试一次(发送的第二次),第二次发送失败,再重试一次(发送的第三次),一般情况下作为生产者会发送三次 原理(源码)rocketMQTemplate.getProducer().getRetryTimesWhenSendAsyncFailed() 消费者–重试结论消费者默认会重试16次,1+16=17,重试16次以上就会进入死信队列 消费者重试次数与间隔时间消费者重试机制(重试与死信队列)如何解决消息的重复?–幂等性上面说了,生产者和消费者解决消息丢失的方案都是重试,那么,一直重试会不会造成消息重复呢?如何解决 最优的方式去重表,mysql数据库,索引唯一(unique) 完美的方案不光写日志,再写一个topic主题 ,可以用来数据分析为什么数据老是重复 图示RocketMQ高效存储架构kafka在处理海量主题时,性能下降很快!!! 写在一个文件里如何消费?消费的时候会把所有的对应的索引写入另一个文件Comsumequeue,Comsumequeue里会保存主题信息,主题信息是队列的数据结构,轮询的方式 消费的时候怎么确保效率很高?消费者首先找队列,找到对列就能找到这条消息对应的偏移量,找到偏移量就能在CommitLog中找到消息本体 总结?欲听详情,请听下回分解! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 10:27:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |