随笔分类 -  中间件

摘要:支持立即获取锁方式,如果获取到返回true,获取不到则返回false; 支持等待获取锁方式,如果获取到,直接返回true,获取不到在等待一小段时间,在这一小段时间内反复尝试,如果尝试成功,则返回true,等待时间过后还获取不到则返回false; 不能产生死锁的情况; 不能释放非自己加的锁; 下面我们 阅读全文
posted @ 2020-11-09 16:23 苏先生139 阅读(168) 评论(0) 推荐(0) 编辑
摘要:一、RocketMQ的安装 1、文档 官方网站 http://rocketmq.apache.org GitHub https://github.com/apache/rocketmq 2、下载 wget https://mirror.bit.edu.cn/apache/rocketmq/4.7.0 阅读全文
posted @ 2020-10-16 17:29 苏先生139 阅读(866) 评论(0) 推荐(0) 编辑
摘要:一、事务消息的由来 1、案例 引用官方的购物案例: 小明购买一个100元的东西,账户扣款100元的同时需要保证在下游的积分系统给小明这个账号增加100积分。账号系统和积分系统是两个独立是系统,一个要减少100元,一个要增加100积分。如下图: 2、问题 账号服务扣款成功了,通知积分系统也成功了,但是 阅读全文
posted @ 2020-10-16 16:36 苏先生139 阅读(712) 评论(0) 推荐(0) 编辑
摘要:一、消息发送过程 我们将消息流程分为如下三大部分,每一部分都有可能会丢失数据。 生产阶段:Producer通过网络将消息发送给Broker,这个发送可能会发生丢失,比如网络延迟不可达等。 存储阶段:Broker肯定是先把消息放到内存的,然后根据刷盘策略持久化到硬盘中,刚收到Producer的消息,再 阅读全文
posted @ 2020-10-16 16:28 苏先生139 阅读(1676) 评论(1) 推荐(1) 编辑
摘要:一、Demo import org.apache.rocketmq.client.producer.DefaultMQProducer; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq 阅读全文
posted @ 2020-10-16 16:23 苏先生139 阅读(343) 评论(0) 推荐(0) 编辑
摘要:一、原理 1、消息存在哪了? 消息持久化的地方其实是磁盘上,在如下目录里的commitlog文件夹里。 /root/store/commitlog 源码如下: // {@link org.apache.rocketmq.store.config.MessageStoreConfig} // 数据存储 阅读全文
posted @ 2020-10-16 16:16 苏先生139 阅读(588) 评论(0) 推荐(0) 编辑
摘要:一、说明 分为两种,一种是直接发消息,client内部有选择queue的算法,不允许外界改变。还有一种是可以自定义queue的选择算法(内置了三种算法,不喜欢的话可以自定义算法实现)。 public class org.apache.rocketmq.client.producer.DefaultM 阅读全文
posted @ 2020-10-16 16:04 苏先生139 阅读(2172) 评论(0) 推荐(0) 编辑
摘要:一、问题复现 1、描述 两个一样的Consumer Group的Consumer订阅同一个Topic,但是是不同的tag,Consumer1订阅Topic的tag1,Consumer2订阅Topic的tag2,然后分别启动。这时候往Topic的tag1里发送10条数据,Topic的tag2里发送10 阅读全文
posted @ 2020-10-16 15:51 苏先生139 阅读(2952) 评论(3) 推荐(1) 编辑
摘要:一、问题描述 RocketMQ的Consumer是如何做的负载均衡?比如:5个Consumer进程同时消费一个Topic,这个Topic只有4个queue会出现啥情况?反之Consumer数量小于queue的数据是啥情况? 二、源码剖析 1、RebalancePushImpl public clas 阅读全文
posted @ 2020-10-16 15:35 苏先生139 阅读(2105) 评论(0) 推荐(1) 编辑
摘要:一、环境准备 1、补充 如果单机都不会安装网站 https://blog.csdn.net/ctwctw/article/details/107143968 再次强调,如果单机都不会的话,先抽出2min看看上面文章,因为需要改jvm配置的,默认8G,没那么大的内存启动会报错的。 2、机器 机器用途 阅读全文
posted @ 2020-10-16 15:29 苏先生139 阅读(897) 评论(0) 推荐(0) 编辑
摘要:一、为什么要集群 单点存在单点故障问题 集群可以分担压力,提高QPS 主从可以保证消息可靠性,比如只有M没S。M磁盘坏了,那未被消费的消息都丢了。而S可以作为备份。 二、单M模式 1、特点 只有一个Master节点,所以单点故障是致命缺点。 优点:配置简单,方便部署。 缺点:单点故障,一旦Broke 阅读全文
posted @ 2020-10-16 15:14 苏先生139 阅读(375) 评论(0) 推荐(0) 编辑
摘要:一条消费成功被消费经历了生产者->MQ->消费者,因此在这三个步骤中都有可能造成消息丢失。 一 消息生产者没有把消息成功发送到MQ 1.1 事务机制 AMQP协议提供了事务机制,在投递消息时开启事务支持,如果消息投递失败,则回滚事务。 自定义事务管理器 @Configuration public c 阅读全文
posted @ 2020-10-16 11:13 苏先生139 阅读(275) 评论(0) 推荐(0) 编辑
摘要:既然使用在项目中使用了MQ,那么就不可避免的需要考虑消息丢失问题。在一些涉及到了金钱交易的场景下,消息丢失还是很致命的。那么在RocketMQ中存在哪几种消息丢失的场景呢? 先来一张最简单的消费流程图: 上图中大致包含了这么几种场景: 生产者产生消息发送给RocketMQ RocketMQ接收到了消 阅读全文
posted @ 2020-10-16 10:34 苏先生139 阅读(1499) 评论(0) 推荐(0) 编辑
摘要:缓存穿透 那什么是缓存穿透,它就是指当用户在查询一条数据的时候,而此时数据库和缓存却没有关于这条数据的任何记录,而这条数据在缓存中没找到就会向数据库请求获取数据。它拿不到数据时,是会一直查询数据库,这样会对数据库的访问造成很大的压力。 如:用户查询一个 id = -1 的商品信息,一般数据库 id 阅读全文
posted @ 2020-10-13 10:50 苏先生139 阅读(171) 评论(0) 推荐(0) 编辑
摘要:概述 Docker是一个开源的应用容器引擎,它基于go 语言开发,并遵从 Apache2.0开源协议。
使用 Docker可以让开发者封装他们的应用以及依赖包到一个可移植的容器中,然后发布到任意的Linux机器上,也可以实现虚拟化。Docker 容器完全使用沙箱机制,相互之间不会有任何接口,这保证了 阅读全文
posted @ 2020-09-07 11:34 苏先生139 阅读(240) 评论(0) 推荐(0) 编辑
摘要:Maven工程添加依赖 <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> 原理: 使用步骤: 第一步:创 阅读全文
posted @ 2020-05-03 12:31 苏先生139 阅读(180) 评论(0) 推荐(0) 编辑
摘要:一、消息中间件的介绍 介绍 ​ 消息队列 是指利用 高效可靠 的 消息传递机制 进行与平台无关的 数据交流,并基于 数据通信 来进行分布式系统的集成。 特点(作用) 应用解耦 异步通信 流量削峰 (海量)日志处理 消息通讯 …... 应用场景 根据消息队列的特点,可以衍生出很多场景,或者说很多场景都 阅读全文
posted @ 2020-05-03 11:55 苏先生139 阅读(284) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示