- 博客(214)
- 收藏
- 关注
原创 【kafka系列】At Most Once语义
通过合理配置,At-Most-Once可为特定场景提供高效、简洁的数据传输能力。若Broker未成功接收消息(如宕机),生产者不会重试,消息直接丢失。执行前崩溃,由于Offset已自动提交,消息不会被重新处理。若消费者拉取消息后,在。
2025-02-15 15:21:01
531
原创 【kafka系列】At Least Once语义
通过合理配置和业务设计,At-Least-Once可平衡可靠性与性能,是大多数场景的推荐选择。若Broker写入成功但网络超时,生产者重试会导致消息重复发送到Topic。失败(如消费者崩溃),下次启动时会重新拉取并处理同一消息,导致积分重复增加。复杂(需生产者、Broker、消费者协同)允许重复的业务(如日志采集)高(事务与协调开销)
2025-02-15 15:11:02
838
原创 【kafka系列】Exactly Once语义
即使在生产者重试、Broker故障或消费者重启等场景下,也能避免数据重复或丢失。正确配置后,Kafka可支持金融支付、实时对账等对数据一致性要求极高的场景。
2025-02-15 14:58:31
608
原创 【kafka系列】Kafka事务的实现原理
正确配置后,Kafka事务可支持金融级场景的精确一次(Exactly-Once)语义。实现跨分区的原子性写入,确保消息要么全部提交,要么全部丢弃。Kafka事务机制通过。
2025-02-15 14:40:28
1315
原创 【kafka系列】Kafka如何实现高吞吐量?
目录1. 生产者端优化核心机制:关键参数:2. Broker端优化核心机制:关键源码逻辑:3. 消费者端优化核心机制:关键参数:全链路优化流程吞吐量瓶颈与调优总结Kafka的高吞吐能力源于其生产者批量压缩、Broker顺序I/O与零拷贝、消费者并行拉取等多层次优化。以下是具体实现机制:2. Broker端优化核心机制: 顺序磁盘I/O: 每个Partition的日志文件()仅追加写入(Append-Only),顺序写速度可达600MB/s(远高于随机写)。
2025-02-15 14:25:02
1017
原创 【kafka系列】Kafka如何保证消息不丢失?
目录1. 生产者端:确保消息成功发送到Broker核心机制:关键步骤:2. Broker端:持久化与副本同步核心机制:关键源码逻辑:3. 消费者端:可靠消费与Offset提交核心机制:关键步骤:4. 全链路保障流程消息丢失的典型场景与规避总结Kafka通过生产者端确认机制、Broker端持久化与副本同步、消费者端可靠消费三个核心环节保障消息不丢失。以下是具体实现机制与步骤:2. Broker端:持久化与副本同步核心机制: 副本机制(Replication): 每个Part
2025-02-15 14:11:26
1372
原创 【kafka系列】日志存储设计 & 消息写入、读取
Kafka的日志存储是其高吞吐、持久化能力的核心设计,其结构包含三部分。orders-0LogLogSegmentKafka消息以**批次(RecordBatch)**为单位存储,每个批次包含多条消息,减少I/O开销。EpochSequence(源码见。
2025-02-15 12:55:16
1155
原创 【kafka系列】消费者重平衡
消费者组重平衡是 Kafka 中动态调整分区分配的关键机制,确保消费者组内成员变动或 Topic 分区变化时,负载均衡和消费进度的一致性。组内其他消费者需接管其分区,重平衡期间消息处理暂停(通常几秒到几十秒)。分区重新分配,原有消费者释放部分分区,新消费者开始消费,期间短暂停顿。在 Kafka 消费者组重平衡(Rebalance)过程中,,直到新的分区分配完成。消费者需分配新分区,重平衡期间暂停消费。频繁停顿会导致消息积压,需优化参数(如。
2025-02-15 12:00:59
1136
原创 【kafka系列】消费者
单次拉取的最小数据量(Broker 等待足够数据后返回,提升吞吐量)。消费者与 Broker 的心跳超时时间,超时触发重平衡。空闲连接超时时间(Broker 主动关闭超时连接)。消费者组 ID(同一组内的消费者共享分区负载)。单次拉取的最大数据量(需小于 Broker 的。无初始 Offset 时的策略:<br>-消费者等待 Broker 响应的超时时间。调用的最大间隔时间,超时触发重平衡。自动提交 Offset 的时间间隔(Value 的反序列化类(同上)。返回的最大消息数(避免内存溢出)。
2025-02-15 11:58:44
961
原创 【kafka系列】生产者
以下是 Kafka 生产者(Producer)在日常开发中的。消息在缓冲区等待时间(毫秒),增大可提升吞吐量(但增加延迟)。生产者缓冲区满或元数据不可用时的阻塞时间(超时抛异常)。:等待所有 ISR 副本确认(最高可靠性)。生产者等待 Broker 响应的超时时间。单个批次的大小阈值,达到阈值后立即发送。SSL 证书路径(客户端认证时需配置)。:等待 Leader 确认(默认)。Value 的序列化类(同上)。:不等待确认(可能丢失数据)。发送失败后的重试次数(建议设为。接口),用于监控或修改消息。
2025-02-15 11:56:06
920
原创 【kafka系列】架构、核心概念
设计目标是高吞吐量、低延迟、可水平扩展,主要用于处理实时数据流。以下是 Kafka 的核心架构和关键概念,帮助你快速理解和使用它。通过动手部署集群、编写生产/消费代码,结合官方文档逐步深入,你可以在实际项目中熟练使用 Kafka!Kafka 的核心优势在于其。
2025-02-09 12:34:32
1232
原创 【kafka系列】Topic 与 Partition
是数据组织的核心概念,它们的映射关系及在 Broker 上的分布直接影响 Kafka 的性能、扩展性和容错能力。假设一个 Kafka 集群有 3 个 Broker(Broker 0、1、2),创建一个 Topic。
2025-02-09 12:19:38
1106
原创 Starrocks 对比 Clickhouse
StarRocks 的数据存储、内存中数据的组织方式,以及 SQL 算子的计算方式,都是列式实现的。4)自适应低基数优化:StarRocks 可以自适应地根据数据分布,对低基数的字符串类型的列构建一张全局字典,用 Int 类型做存储和查询,使得内存开销更小,有利于 SIMD 指令执行,加快了查询速度。为了加速查询速度,业内习惯于把多张表打成一张大宽表,大宽表虽速度快,但是带来的问题是极其不灵活,实时数据加工层是用 Flink 将多表 Join 成一张表写入大宽表。
2025-02-04 23:40:38
870
原创 RocketMq系列02 安装集群 双主双从 docker-compose
文章目录端口号描述服务部署情况环境准备虚拟机创建RocketMq配置文件目录创建broker配置文件broker-master-abroker-master-bbroker-slave-abroker-slave-bDocker-compose文件启动容器启动检查启动状态访问控制台查看集群情况手动创建主题代码发送测试示例代码发送消息SLAVE_NOT_AVAILABLE问题参考链接端口号描述以配置的 ListenPort 为 10911 为例端口号作用描述9876nameser
2022-03-19 18:46:05
2634
原创 RocketMq教程 系列目录
文章目录简介系列目录参考链接简介教程包含rocketmq概念、架构、通信流程、常见应用案例、、实战项目系列目录01 官方文档是最好的入门教程02 安装RocketMq集群 双主双从 docker-compose03 概念、架构模型、通信流程04 常见应用案例 结合Springboot05 事务消息流程分析、样例代码参考链接RocketMq 官方中文文档黑马程序员RocketMQ系统精讲...
2022-02-12 15:49:27
323
原创 RocketMq系列03 概念、架构模型、通信流程
文章目录概念架构模型ProducerConsumerNameServerBrokerServer通信流程参考链接概念消息模型RocketMQ主要由 Producer、Broker、Consumer 三部分组成,其中Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。Broker 在实际部署过程中对应一台服务器,每个 Broker 可以存储多个Topic的消息,每个Topic的消息也可以分片存储于不同的 Broker。Message Queue 用于存储
2022-02-12 15:28:25
1703
原创 RocketMq系列05 事务消息流程分析、样例代码
流程分析上图说明了事务消息的大致方案,其中分为两个流程:正常事务消息的发送及提交、事务消息的补偿流程。1.事务消息发送及提交:(1) 发送消息(half消息)。(2) 服务端响应消息写入结果。(3) 根据发送结果执行本地事务(如果写入失败,此时half消息对业务不可见,本地逻辑不执行)。(4) 根据本地事务状态执行Commit或者Rollback(Commit操作生成消息索引,消息对消费者可见)2.补偿流程:(1) 对没有Commit/Rollback的事务消息(pending状态的消息).
2022-01-27 15:12:14
805
原创 RocketMq系列01 官方文档是最好的入门教程
RocketMq 系列教程(一) 官方文档是最好的入门教程文章目录官方文档中文文档官方文档官方文档中文文档Apache RocketMQ开发者指南可能是因为rocketmq是国人开发的,所以中文文档讲的非常通俗易懂,非常全面,包括相关概念、架构设计、常用代码样例等,相关图解也做的好,能让初学者对rocketmq有个整体的认识。...
2022-01-26 17:48:56
618
原创 RocketMq系列04 常见应用案例代码 结合Springboot
文章目录Spring 结合 RocketMqSpringBoot 结合 RocketMq相关配置同步发送发送字符串发送实体类发送Spring Message对象异步发送集群模式、广播模式延迟消息过滤消息tag 过滤sql表达式过滤批量发送无顺序发送顺序发送指定消息返回类型同步发送异步发送事务消息样例代码参考链接Spring 结合 RocketMq官方使用样例SpringBoot 结合 RocketMqrocketmq-spring-boot-starter 依赖, 将 官方API | Def
2022-01-26 17:39:56
806
原创 IDEA 查找依赖,一键去除某个依赖
文章目录查找依赖去除某个依赖查找依赖idea界面右侧的maven管理,选择某一个项目模块下的dependencies,点击上面的show dependencies或者选择某一个pom.xml文件,右键选择 show dependencies来到界面比如查找logback 依赖,快捷键 Ctrl + F, 输入 logback4.选中某一个依赖,做相关操作去除某个依赖按如上操作进入 dependencies diagram选择某一个依赖,exclue
2021-12-20 10:57:59
11762
2
转载 SpringBoot线程池的创建、@Async配置步骤及注意事项
前言最近在做订单模块,用户购买服务类产品之后,需要进行预约,预约成功之后分别给商家和用户发送提醒短信。考虑发短信耗时的情况所以我想用异步的方法去执行,于是就在网上看见了Spring的@Async了。但是遇到了许多问题,使得@Async无效,也一直没有找到很好的文章去详细的说明@Async的正确及错误的使用方法及需要注意的地方,这里简单整理了一下遇见的问题,Sring是以配置文件的形式来开启@Async ,而SpringBoot则是以注解的方式开启。我们可以使用springBoot默认的线程池,不过一般
2021-12-08 21:03:35
278
转载 线程池使用与参数详细解析
文章目录为什么用线程池线程池ThreadPoolExecutorThreadPoolExecutor提供了四个构造函数向ThreadPoolExecutor添加任务ThreadPoolExecutor的策略常见四种线程池CachedThreadPool()FixedThreadPool()ScheduledThreadPool()SingleThreadExecutor()为什么用线程池创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率例如:记创建线程消耗时间T1
2021-12-05 21:59:51
397
转载 springboot - 多数据源配置
文章目录简介一、表结构二、多数据源整合1. springboot+mybatis使用分包方式整合1.1 主要依赖包1.2 application.yml 配置文件1.3 建立连接数据源的配置文件1.4 具体实现2. springboot+druid+mybatisplus使用注解整合2.1 主要依赖包2.2 application.yml 配置文件2.3 给使用非默认数据源添加注解[@DS](https://my.oschina.net/u/151188)3 增加数据库连接池,Druid配置简介主要介绍
2021-12-05 21:57:09
894
原创 aop编程 springboot 修改dao层所有方法的返回值
文章目录aop 切点表达式修改dao层所有方法的返回值实现要点判断函数返回类型为List 或者 MapconcurrentModifyException Map的并发修改异常aop 切点表达式Spring AOP切点表达式-SpringBoot从入门到熟悉(十五)修改dao层所有方法的返回值实现功能切点为将dao层返回类型为 List(Map) 的所有函数实现将 List(Map) 或者 Map 中的key 全部转为大写实现要点判断函数返回类型为List 或者 Map获取函数返回
2021-11-09 23:28:41
1899
转载 Mysql 普通索引 OR 唯一索引,谁更胜一筹?
文章目录场景例子分析查找过程更新过程目标页在内存中目标页不在内存中实例总结场景维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的 SQL 语句:select name from CUser where id_card = 'xxxxxxxyyyyyyzzzzz';那么怎么建立索引呢?由于身份证号字段比较大,不建议把身份证号当做主键例子如下,ID是主键,K是索引,从这两种索引对查询语
2021-07-06 13:39:36
192
转载 MYSQL数据保障 三大日志 binlog、redo log、undo log
文章目录参考连接参考连接必须了解的mysql三大日志-binlog、redo log和undo log
2021-07-03 19:31:16
266
原创 MySQL SQL更新语句执行过程
文章目录执行过程流程图两阶段提交 2PCundo log、redo log、binlog参考链接mysql> update T set c=c+1 where ID=2;执行过程客户端(通常是你的服务)发出更新语句” update t set b = 200 where id = 2 “ 并向MySQL服务端建立连接;MySQL连接器负责和客户端建立连接,获取权限,维持和管理连接;MySQL拿到一个查询请求后,会先到查询缓存看看(MySQL8.x已经废弃了查询缓存),看之前是否已经执行
2021-07-03 19:26:58
368
转载 Nginx 配置文件、常用命令详解
文章目录常用命令windowslinux配置文件通用的nginx.confnginx.conf 配置详解常用命令windowslinux配置文件Nginx 配置文件主要分成四部分:main(全局设置)main 部分设置的指令影响其他所有部分的设置server(主机设置)server 部分的指令主要用于制定虚拟主机域名、IP 和端口号upstream(上游服务器设置,主要为反向代理、负载均衡相关配置)upstream 的指令用于设置一系列的后端服务器,设置反向代理及后端服
2021-07-02 18:33:57
569
原创 IDEA 开发常用配置推荐
文章目录JDK设置Maven仓库设置类注释和方法注释辅助插件mybatis 插件Alibaba Java Coding Guidelines plugin 设计规范SonarLint 设计规范CheckStyle 编码规范JDK设置设置默认JDK自行百度Maven仓库设置设置全局默认maven仓库记得改成国内镜像仓库自行百度类注释和方法注释使用 javaDoc自行百度辅助插件mybatis 插件free mybatis plugin生成mapper xml文件快
2021-07-02 18:11:47
324
1
转载 Java的参数传递,都是值传递!
文章目录简介值传递引用传递区分基本类型引用类型基本类型的封装类型参考链接简介值传递方法调用时,实际参数把它的值传递给对应的形式参数,函数接收的是原始值的一个copy,此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值。引用传递也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址;在方法执行中,形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会
2021-06-30 12:35:53
1004
原创 Mysql5.7 性能优化
文章目录简介优化查询分析查询语句使用索引查询索引失效的情况优化子查询优化数据库结构将字段很多的表分解成多个表增加中间表增加冗余字段优化插入记录的速度MyISAM引擎的表InnoDB引擎的表分析表、检查表和优化表分析表检查表优化表优化MySQL服务器优化服务器硬件优化MySQL的参数Mysql 5.7的新特性临时表性能优化服务器语句超时处理支持创建全局通用表空间参考链接简介MySQL数据库优化是多方面的,原则是减少系统的瓶颈,减少资源的占用,增加系统的反应速度。例如:通过优化文件系统提高磁盘I/O的读
2021-06-25 17:08:14
2096
2
原创 Mysql5.7 日志
文章目录日志分类二进制日志错误日志查询日志慢查询日志参考链接日志分类错误日志记录MySQL服务的启动、运行或停止MySQL服务时出现的问题查询日志记录建立的客户端连接和执行的语句二进制日志记录所有更改数据的语句,可以用于数据复制不记录查询语句慢查询日志记录所有执行时间超过long_query_time的所有查询或不使用索引的查询默认情况下,所有日志创建于MySQL数据目录中。通过刷新日志可以强制MySQL关闭和重新打开日志文件。启动日志功能会降低MyS
2021-06-25 16:23:29
291
转载 SQL语法 自然连接 外连接 内连接
文章目录笛卡尔积连接内连接自连接自然连接外连接左外连接右外连接区分连接自然连接 内连接内连接、外连接on 和 where 条件过滤的区别参考链接笛卡尔积结果集数目为多个表的所有记录数的乘积多表关联,不加上过滤条件,得到结果集数目的就是笛卡尔积连接内连接使用 INNER JOIN 关键字,典型的多表关联语法用 ON 过滤条件自连接一个表与自身做连接,通过表别名来区分自然连接就是普通的多表关联查询,即内部连接,没有左外连接 右外连接外连接左外连接有
2021-06-23 17:56:12
4071
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人