摘要: 前言 在讲解滑动时间窗之前,有个问题可以思考一下,如何统计当前时间服务的QPS呢?博主在前公司的时候,他们是这么设计的,在分布式环境下,列如当前时间 2021-9-13 23:12:10, 那么解析成key = 2021-9-13-23-12-10,并通过这个key查询redis,获取一个整型的统计 阅读全文
posted @ 2021-09-14 13:46 gaojy 阅读(1679) 评论(0) 推荐(0) 编辑
摘要: 前言 不管是netty还是sofa-jraft,使用对象池的目的就是避免重复创建对象,消耗内存,减少GC压力。 原理 https://www.jianshu.com/p/854b855bd198 Recyclers在Jraft中的使用测试案例 主要测试了在多线程模型下,能够获取和回收同一个对象。 以 阅读全文
posted @ 2021-09-05 23:36 gaojy 阅读(90) 评论(0) 推荐(0) 编辑
摘要: Metrics埋点监控 在应用程序中,通常会记录日志以便事后分析,在很多情况下是产生了问题之后,再去查看日志,是一种事后的静态分析。在很多时候,我们可能需要了解整个系统在当前,或者某一时刻运行的情况,比如一个系统后台服务,我们可能需要了解一些实时监控的数据例如 1、每秒钟的请求数是多少(TPS)? 阅读全文
posted @ 2021-09-05 20:40 gaojy 阅读(745) 评论(0) 推荐(0) 编辑
摘要: 背景 博主最近在研究sofa-jraft的时候,看到jraft使用的protobuf,所以单独拎出来单独理解一下。 Protobuf语法 https://www.cnblogs.com/resentment/p/6539021.html 使用案例 1 添加proto文件 syntax="proto2 阅读全文
posted @ 2021-08-30 18:55 gaojy 阅读(613) 评论(0) 推荐(0) 编辑
摘要: 前言 最近博主在研究蚂蚁金服sofastack平台的sofa-jraft框架,其中涉及到选举部分的定时任务实现HashedWheelTimer,拿出来单独整理一下,其也是netty处理大量连接超时的心跳检测实现。 算法描述 关于时间轮算法,有点类似于HashMap。在new 一个HashedWhee 阅读全文
posted @ 2021-08-28 23:11 gaojy 阅读(1288) 评论(0) 推荐(1) 编辑
摘要: mqbroker if [ -z "$ROCKETMQ_HOME" ] ; then ## resolve links - $0 may be a link to maven's home PRG="$0" # 当前文件名 # need this for relative symlinks whil 阅读全文
posted @ 2021-08-26 21:53 gaojy 阅读(546) 评论(0) 推荐(0) 编辑
摘要: 数据结构 在commitlog中维护了一组MappedFile,属性为MappedFileQueue,具体看一下里面包含哪些字段 public class MappedFileQueue { private static final Logger log = LoggerFactory.getLog 阅读全文
posted @ 2021-08-26 15:09 gaojy 阅读(413) 评论(0) 推荐(0) 编辑
摘要: 简述 rocketmq发送的消息有以下类型,普通并发消息,分区有序消息,全局有序消息(topic分区数=1),延迟消息和事务消息。 发送方式分为同步发送,异步发送,指定队列发送,单向发送,批量发送。 DefaultMQProducerImpl#start public void start(fina 阅读全文
posted @ 2021-08-25 23:16 gaojy 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 前面讲解到对于consumequeue的文件恢复和过期文件删除,和flush的过程这边就不再重点阐述,实际上consumequeue中的存储单元是一个20个字节的数据,前8个字节存储消息在commitlog上的物理点位,接着是4字节的消息size,最后是8字节的tag的hash值。可以看做消息在co 阅读全文
posted @ 2021-08-24 00:36 gaojy 阅读(531) 评论(0) 推荐(0) 编辑
摘要: broker过期文件删除机制 RocketMQ会每隔10秒执行文件清理任务 this.scheduledExecutorService.scheduleAtFixedRate(new Runnable() { @Override public void run() { DefaultMessageS 阅读全文
posted @ 2021-08-23 21:37 gaojy 阅读(896) 评论(0) 推荐(0) 编辑