目录

Life in Flow

Embrace your dreams and unlock your full potential at every stage of life.

Offset、CommitLog、ZeroCopy

消息偏移量 Offset 一个 Topic 下面有多个 message queue,message queue 是无限长的数组,一条消息进来下标就会涨 1,下标就是 offset(索引的位置),消息在某个 MessageQueue 里的位置,通过 offset 的值可以定位到这条消息,或者指示 Consumer 从这条消息开始向后处理。 message queue 中的 maxOffset 表示消息的最大 offset, maxOffset 并不是最新的那条消息的 offset,而是最新消息的 offset+1,minOffset 则是现存在的最小 offset。 fileReserveTime=48 默认消息存储 48 小时后,消息会被物理地从磁盘删除,message queue 的 min offset 也就对应增长。(1-5000,消息删除之后,1001-5000)所以比 minOffset 还要小的那些消息已经不在 broker 上了,就无法被消费。 Offset 的存储类型 本地文件类型:DefaultMQPushConsumer 的 BROADCASTING 模式,各....

RocketMQ消费者核心概念

常见核心配置 consumeFromWhere 配置 参考 CONSUME_FROM_FIRST_OFFSET: 初次从消息队列头部开始消费,即历史消息(还储存在broker的)全部消费一遍,后续再启动接着上次消费的进度开始消费 CONSUME_FROM_LAST_OFFSET: 默认策略,初次从该队列最尾开始消费,即跳过历史消息,后续再启动接着上次消费的进度开始消费 CONSUME_FROM_TIMESTAMP : 从某个时间点开始消费,默认是半个小时以前,后续再启动接着上次消费的进度开始消费 allocateMessageQueueStrategy:负载均衡策略算法,即消费者分配到 queue 的算法,默认值是 AllocateMessageQueueAveragely 即取模平均分配。 offsetStore:消息消费进度存储器 offsetStore 有两个策略: * LocalFileOffsetStore : Consumer记录消息的消费进度。 * RemoteBrokerOffsetStor : Broker记录消息的消费进度。 广播模式默认使用Lo....

Docker引擎

简介  Docker引擎是用来运行和管理容器的核心软件。基于开放容器计划(OCI)相关标准要求,Docker引擎采用了模块化的设计原则,其组件是可替换的。  Docker引擎主要组件构如下: Docker客户端 Docker守护进程 containerd runc 摆脱LXC  LXC提供了对诸如:命名空间、控制组、等基础工具的操作能,他们是基于Linux内核的容器虚拟化技术。  因为LXC是基于Linux,这不利于Docker实现跨平台,其次,如果核心的组件依赖于外部工具,会给Docker项目带来巨大的风险。因此,Docker公司开发了名为Libcontainer的自研工具,用于替代LXC。Libcontainer的目标是成为与平台无关的工具,可基于不同内核为Docker上层提供必要的容器交互功能。在Docker 0.9版本中,Libcontainer取代 拆分大而全的Docker daemon  随着时间的退役,Docker daemon的整体性带来了越来越多的问题。 难于变更。 运行越来越慢。  Docker公司意识到这些问题,开始努力着手拆解大而全的Docker da....

RocketMQ生产者核心概念

常见核心配置  VIM /test/rocketmq/distribution/target/apache-rocketmq/conf/2m-2s-sync/broker-a.properties compressMsgBodyOverHowmuch :消息超过默认字节 4096 后进行压缩 retryTimesWhenSendFailed : 失败重发次数 maxMessageSize : 最大消息配置,默认 128k topicQueueNums : 主题下面的队列数量,默认是 4 autoCreateTopicEnable : 是否自动创建主题 Topic, 开发建议为 true,生产要为 false defaultTopicQueueNums : 自动创建服务器不存在的 topic,默认创建的队列数 autoCreateSubscriptionGroup: 是否允许 Broker 自动创建订阅组,建议线下开发开启,线上关闭 brokerClusterName : 集群名称 brokerId : 0 表示 Master 主节点 大于 0 表示从节点 brokerIP1 : Br....

RocketMQ集群高可用之主从模式

常见集群模式  推荐方案 2、4、5 单节点 优点:本地开发测试,配置简单,如果采用同步刷盘,消息一条都不会丢。 缺点:不可靠,如果宕机,会导致服务不可用 主从(异步、同步双写) 优点:同步双写消息不丢失, 异步复制存在少量丢失 ,主节点宕机,从节点可以对外提供消息的消费,但是不支持写入。 缺点:主备有短暂消息延迟,毫秒级,目前不支持自动切换,需要脚本或者其他程序进行检测然后进行停止broker,重启让从节点成为主节点 双主 优点:配置简单, 可以靠配置RAID磁盘阵列保证消息可靠,异步刷盘丢失少量消息 缺点: master机器宕机期间,未被消费的消息在机器恢复之前不可消费,实时性会受到影响 双主双从,多主多从模式(异步复制) 优点:磁盘损坏,消息丢失的非常少,消息实时性不会受影响,Master 宕机后,消费者仍然可以从Slave消费 缺点:主备有短暂消息延迟,毫秒级,如果Master宕机,磁盘损坏情况,会丢失少量消息 双主双从,多主多从模式(同步双写) 优点:同步双写方式,主备都写成功,向应用才返回成功,服务可用性与数据可用性都非常高 缺点:性能比异步复制模式略低,主宕机后,....

Springboot整合RocketMQ

Trouble Shooting 多网卡下为 rocketmq 指定 IP # 修改配置文件 vim /test/rocketmq/distribution/target/apache-rocketmq/conf/broker.conf brokerIP1=192.168.31.220 #新增内容 # 启动Broker命令命令 nohup sh /test/rocketmq/distribution/target/apache-rocketmq/bin/mqbroker -n 192.168.31.220:9876 -c /test/rocketmq/distribution/target/apache-rocketmq/conf/broker.conf & 控制台查看不了数据,提示连接 10909 错误 原因:Rocket默认开启了VIP通道,VIP通道端口为10911-2=10909 解决:阿里云安全组需要增加一个端口 10909 消息发送 添加 Maven 相关依赖 <dependency> <groupId>org.apache.rocket....

RocketMQ入门与部署

RocketMQ4.x 特性 支持 Broker(减少带宽的传输)和 Consumer 端消息过滤 支持发布订阅模型,和点对点, 支持拉 pull 和推 push 两种消息模式 单一队列百万消息、亿级消息堆积 支持单 master 节点,多 master 节点,多 master 多 slave 节点 任意一点都是高可用,水平拓展,Producer、Consumer、队列都可以分布式 消息失败重试机制、支持特定 level 的定时消息 新版本底层采用 Netty 4.3.x 支持分布式事务 适合金融类业务,高可用性跟踪和审计功能。 角色 Producer:消息生产者 Producer Group:消息生产者组,发送同类消息的一个消息生产组 Consumer:消费者 Consumer Group:消费同类消息的多个实例 Tag:标签,子主题(二级分类)对 topic 的进一步细化,用于区分同一个主题下的不同业务的消息 Topic:主题, 如订单类消息,queue 是消息的物理管理单位,而 topic 是逻辑管理单位。一个 topic 下可以有多个 queue。(默认自动创建是 4 个....