Redisson 延时队列实现分布式定时任务
在现代分布式系统中,定时任务的实现往往需要考虑高可用、可扩展性和一致性等问题。本文将介绍如何使用 Redisson 的延时队列来实现一个分布式定时任务系统,以解决传统定时任务在分布式环境下面临的挑战。 背景 在我们的物流系统中,需要定期分析线路延迟情况并划分延迟原因。这个过程涉及到实时交通数据的获取
RedisTemplate 工具类
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.*; import org.springframework.data.redis.cor
UberH3 原理和实践
1. 引言 在地理空间数据处理领域,高效的空间索引系统对于大规模地理数据的分析和可视化至关重要。Uber H3是Uber开源的一种六边形分层空间索引系统,它提供了一种独特的方式来划分地球表面,并为地理空间分析提供了强大的工具。本文将深入探讨H3的基本原理、核心特性以及在实际应用中的实践案例。 2.
Caffeine 原理及实践
前言 Caffeine 是一个高性能的 Java 缓存库,它提供了近乎最佳的命中率,同时具有非常出色的读写性能。Caffeine 的设计借鉴了 Guava Cache 的 API,但在内部实现上进行了重大改进,使其成为目前 Java 生态系统中最先进的缓存解决方案之一。 缓存 缓存是一种用于存储频繁
Disruptor + Rtree 实现数据变更动态构建空间索引
前言 在物流配送、路线规划等场景中,经常需要根据地理坐标快速查找最近的标准线路。这就需要一个高效的空间索引机制,同时由于业务数据会不断变化,我们还需要动态更新这个索引。本文将介绍如何结合 Disruptor 和 R-tree 技术,实现一个高性能的动态空间索引系统。 R-tree 原理 什么是 R-
Mybatis-Plus 优雅处理字段填充
前言 在数据库操作中,有些字段的值在插入或更新时需要自动填充,比如创建时间、更新时间、操作用户信息等 @TableField#fill 注解的作用 字段自动填充策略。该属性用于指定在执行数据库操作(如插入、更新)时,如何自动填充字段的值。通过使用 FieldFill 枚举,可以灵活地控制字段的填充行
逻辑删除和唯一索引冲突的解决方案
背景 在“阿里巴巴java开发手册”中强制建议:业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引 说明:不要以为唯一索引影响了insert性能,这个速度损耗可以忽略,但提高查找速度是明显的;名外,即使在应用层做了非常完善的校验控制,只要没有唯一索引,根据墨菲定律,必然会有脏数据产生。 但
SpringBoot 读取自定义 yaml 配置
前言 @ConfigurationProperties 方式 实现 PropertySourceFactory package cn.phixlin.config; import org.springframework.beans.factory.config.YamlPropertiesFact
Kafka-Producer 重要配置参数
前言 Kafka在弹性、容错性以及高吞吐量方面有着很大的优势。想要达到生产环境最优,发挥这些特性,需要进行一些特殊配置。Kafka提供了非常多的配置属性,对于初学者而言,基础的配置已经能满足大部分使用场景,本文记录几个重要但不常见的针对 Producer 的配置参数。 acks min.insync
SpringBoot 集成 Kafka
前言 Kafka是一个高吞吐、分布式、基于发布订阅的消息系统。常用于日志收集、消息系统、用户活动追踪、运营指标监控,大数据实时计算等场景。 主要概念: Broker:Kafka集群中的服务器,可以有多台服务器,用来存储消息。 Topic:消息的集合,可以有多个Topic,每个Topic可以有多个分区