
中间件
文章平均质量分 83
傲雪凌霜,松柏长青
勤以修身,俭以养德
展开
-
Spring Boot 集成 Kafka
Spring Boot 与 Kafka 的集成使得消息队列的使用变得更加简单和高效。通过上述步骤,你可以轻松地配置 Kafka、实现生产者和消费者,并利用 Spring Boot 提供的强大功能来处理消息流。了解 Kafka 的高级特性(如事务和异步处理)能够帮助你更好地满足业务需求,确保系统的高可用性和数据一致性。原创 2024-07-25 22:44:17 · 2087 阅读 · 0 评论 -
Kafka
Kafka 是一个强大的分布式消息系统,具备高吞吐量、低延迟、高可靠性和扩展性。了解 Kafka 的底层架构和工作原理,有助于在实际应用中优化性能、实现数据流处理和解决复杂的消息传递需求。希望这篇博客能够帮助你更深入地理解 Kafka 的核心概念和实现细节。如果你有任何问题或想法,欢迎在评论区讨论!原创 2024-07-25 22:41:30 · 2033 阅读 · 1 评论 -
MongoDB多数据源配置与切换
在MongoDB中配置和使用多数据源主要涉及以下几个步骤:定义多个数据源的配置:创建多个MongoTemplate Bean:使用动态切换数据源的方式:以下是一个Spring Boot应用中配置和切换多数据源的示例:2. Java配置类3. 动态切换数据源方法一:使用AOP动态切换数据源你可以定义一个自定义注解,然后使用AOP在运行时切换MongoTemplate。定义注解和上下文持有者类:在使用时,通过注解指定数据源:方法二:直接在代码中切换数据源你也可以直接在代码中注入多个MongoT原创 2024-07-23 09:58:38 · 1055 阅读 · 0 评论 -
Redis 基数树
Redis 使用基数树来优化其 HyperLogLog 和 Stream 数据类型的存储和查询操作。基数树通过压缩节点和高效的前缀匹配,提供了优异的存储效率和查找性能。然而,其实现复杂性和潜在的内存消耗需要在具体应用中权衡考虑。理解 Redis 基数树的原理和应用,有助于更好地利用 Redis 的高级数据结构和优化存储性能。原创 2024-07-20 09:12:13 · 734 阅读 · 0 评论 -
Redis 跳跃列表与紧凑列表
跳跃列表是 Redis 中实现有序集合的一种高效数据结构。通过多层链表的设计,跳跃列表能够在保证高效查询的同时,提供较高的插入和删除性能。Redis 的跳跃列表实现结合了简单性和高效性,适用于各种需要有序存储和快速访问的数据场景。紧凑列表是一种高效的内存优化数据结构,适用于存储小规模列表和哈希表。通过紧密排列的内存结构,紧凑列表能够显著减少内存消耗,并提高缓存命中率。然而,由于操作复杂度较高,当数据规模增大时,紧凑列表的性能会受到一定影响。原创 2024-07-20 09:06:00 · 1267 阅读 · 1 评论 -
Redis 压缩列表与快速列表
压缩列表是一种紧凑的数据结构,用于存储一系列小数据项(例如,列表、哈希表、集合中的元素)。压缩列表通过将多个元素打包在一个单一的内存块中来减少内存使用。原创 2024-07-19 12:33:51 · 924 阅读 · 0 评论 -
Redis 内部的字符串和字典
字典在 Redis 中主要用于实现 Redis 的哈希(Hash)数据类型,同时也是 Redis 的许多其他数据结构(如集合、排序集合等)的基础。Redis 字典的实现细节非常重要,直接影响到 Redis 的性能和内存使用。这些内部结构和优化措施使 Redis 能够高效地处理字符串类型的数据,同时保持较高的性能和较低的内存开销。Redis 字典的这些设计和优化使其能够高效地处理大量的键值对操作,同时保持较高的性能和较低的内存开销。Redis 字典支持动态扩展和收缩哈希表的大小,以便更好地适应数据的变化。原创 2024-07-19 12:29:06 · 895 阅读 · 0 评论 -
如何保证对Redis操作的原子性
在Redis中,保证操作的原子性非常重要,特别是在高并发的场景下。Redis提供了多种机制来确保操作的原子性,包括单个命令的原子性、多命令事务(事务脚本)、乐观锁机制(WATCH)等。原创 2024-07-19 09:08:14 · 1837 阅读 · 0 评论 -
Redis SCAN 命令
SCAN命令用于遍历 Redis 数据库中的键,它是无阻塞的,支持增量迭代。该命令返回一个游标和一组元素,每次调用都会返回下一批元素,直到游标值为 0 表示遍历完成。cursor:游标的起始值,一般从 0 开始。:可选参数,用于模式匹配,只有匹配的键才会被返回。:可选参数,表示每次迭代返回的键的个数,默认值为 10。SCAN命令及其家族命令(SSCANHSCANZSCAN)是 Redis 中用于遍历大数据集的利器。它们通过游标实现增量遍历,避免了传统遍历命令(如KEYS。原创 2024-07-18 10:23:48 · 2515 阅读 · 0 评论 -
Redis 地理位置 GEO 模块
GeoHash 将二维的地理坐标(经纬度)编码为一维的字符串,利用这种编码,可以将地理空间划分成不同的网格,每个网格由一个唯一的字符串表示。空间分割:GeoHash 将地理空间划分为不同的网格,并将每个网格用唯一的字符串表示。字符越长,精度越高:GeoHash 字符串越长,表示的地理位置越精确。相邻网格相邻字符:地理位置相近的点,其 GeoHash 字符串前缀相同。Redis 通过引入 GeoHash 和 GEO 命令,使得地理位置数据的存储和查询变得简单高效。原创 2024-07-18 10:18:40 · 500 阅读 · 0 评论 -
Redis 延迟队列
延迟队列是一种特殊的队列,允许元素在特定的延迟时间之后才被消费。在一些场景中,如任务调度、订单超时处理、消息重试等,延迟队列是非常有用的。通过使用 Redis 的有序集合,可以高效地实现延迟队列。关键在于利用任务的执行时间作为排序依据,并通过定期扫描来处理到期的任务。使用 Lua 脚本可以确保获取和删除任务的原子性,从而避免并发问题。原创 2024-07-18 09:53:02 · 1101 阅读 · 0 评论 -
rabbitmq消息投递失败
使用Confirm模式和确保消息从生产者正确发送到交换机和队列。使用手动消息确认机制处理消费者无法处理的消息。配置死信队列处理无法处理或过期的消息。确保消息处理逻辑具有幂等性,以防止重复处理导致的数据不一致。通过这些方法,可以提高消息系统的可靠性和健壮性,确保消息不会丢失或重复处理。原创 2024-07-15 09:37:23 · 1035 阅读 · 1 评论 -
Zookeeper
Zookeeper是一个分布式协调服务,用于管理和协调分布式应用程序的组件。它提供了集中式的服务,用于维护配置信息、命名、分布式同步和组服务。Zookeeper可以帮助开发人员简化分布式应用的设计和实现。原创 2024-07-13 09:44:31 · 1145 阅读 · 0 评论 -
Curator分布式锁
Curator 是一个用于 Apache ZooKeeper 的客户端库,提供了更高级的抽象和工具,以简化 ZooKeeper 的使用。Curator 是由 Netflix 开发的,并已成为分布式应用程序中使用 ZooKeeper 的事实标准。它解决了原生 ZooKeeper API 使用复杂、易出错的问题,通过提供易于使用的高级 API 和实用工具,显著提高了开发效率和代码质量。原创 2024-07-12 17:36:57 · 1396 阅读 · 0 评论 -
RabbitMQ 高级功能
RabbitMQ 是一个广泛使用的开源消息代理,它支持多种消息传递协议,可以在分布式系统中用于可靠的消息传递。除了基本的消息队列功能外,RabbitMQ 还提供了一些高级功能,增强了其在高可用性、扩展性和灵活性方面的能力。原创 2024-07-11 09:12:16 · 1713 阅读 · 0 评论 -
Quartz 介绍
Quartz 是一个功能强大的开源作业调度框架,适用于 Java 应用。它被广泛用于执行调度任务,如批处理作业、定时任务、复杂的工作流等。Quartz 提供了丰富的 API 和配置选项,能够满足各种调度需求。Quartz 是一个强大的作业调度框架,适用于各种类型的 Java 应用。通过合理使用 Quartz 的核心组件和 API,可以实现灵活、高效的作业调度,为应用程序的定时任务和批处理需求提供可靠的解决方案。原创 2024-07-10 09:10:32 · 1147 阅读 · 0 评论 -
Quartz 核心
【代码】Quartz 核心。原创 2024-07-10 09:09:54 · 806 阅读 · 0 评论 -
Redis哨兵模式与集群模式的快速部署
上述Docker Compose文件分别展示了如何搭建Redis哨兵模式和集群模式的环境。通过这种方式,可以快速创建高可用、可扩展的Redis服务。原创 2024-07-09 09:10:43 · 380 阅读 · 0 评论 -
Netty 入门教程:高性能网络编程框架
Netty 是一个用于构建高性能、可扩展的网络应用的框架。它抽象了 Java 原生的复杂 NIO API,提供了简单易用的 API,使得开发网络应用变得更加简便。Netty 可以用于各种场景,包括 TCP/IP 服务器、HTTP 服务器、WebSocket 服务器等。原创 2024-07-08 14:17:49 · 2698 阅读 · 0 评论 -
Redis哨兵模式和集群模式的区别
哨兵模式主要解决高可用性问题,适用于中小型系统,通过哨兵节点监控和故障转移来保证服务的连续性。集群模式主要解决数据分片和分布式存储问题,适用于大型系统,通过数据分片和多节点部署来实现水平扩展和高可用性。根据业务需求选择合适的 Redis 模式,可以更好地利用 Redis 的特性,提高系统的性能和可靠性。原创 2024-07-08 09:47:33 · 1024 阅读 · 0 评论 -
Redis高级特性
发布/订阅模式是一种消息通信模式,允许一个或多个发布者将消息发送到一个或多个订阅者。Redis提供简单的事务功能,可以确保一组命令按顺序执行,具有原子性。Redis支持Lua脚本,可以将多个命令封装在一个脚本中执行,确保原子性和高效性。Redis提供两种持久化方式:RDB快照和AOF日志。RDB (Redis Database)快照:在指定时间间隔保存数据快照。AOF (Append Only File)日志:记录每次写操作,重启时重放日志。原创 2024-07-06 09:12:19 · 999 阅读 · 0 评论 -
Hibernate
它将Java类映射到数据库表,将Java对象映射到数据库记录,从而使开发人员可以使用面向对象的方式操作数据库数据,而不需要编写大量的SQL语句。在Spring Boot中使用Hibernate非常简单,因为Spring Boot提供了对Hibernate的自动配置。以下是一个基本的示例,展示了如何在Spring Boot中集成和使用Hibernate。Hibernate通过其强大的ORM功能和丰富的特性,为Java开发者提供了一个高效、灵活的持久化解决方案,使得复杂的数据操作变得更加简洁和直观。原创 2024-07-05 09:05:53 · 1388 阅读 · 0 评论 -
ShardingSphere分布式事务
ShardingSphere 提供了丰富的分布式事务支持,包括基于 XA 协议的强一致性事务和基于 TCC 模型的柔性事务,以及事务消息机制。这些分布式事务解决方案通过不同的方式确保分布式系统中的数据一致性,适应了不同的业务场景和需求。开发者可以根据具体需求选择合适的分布式事务模型,结合 ShardingSphere 强大的数据分片和读写分离功能,构建高性能、高可靠的分布式数据库系统。原创 2024-07-04 09:29:41 · 609 阅读 · 0 评论 -
ShardingSphere
ShardingSphere 通过提供数据分片、分布式事务、数据加密和读写分离等功能,帮助开发者轻松构建高性能、高可用的分布式数据库系统。其灵活的架构设计和丰富的功能模块,使其成为现代分布式数据库中间件的优秀选择。原创 2024-07-04 09:24:51 · 957 阅读 · 0 评论 -
MyCAT 2 底层原理
MyCAT 2 是一款开源的数据库中间件,它通过分库分表、读写分离、动态路由等机制提升数据库系统的性能和扩展性。MyCAT 2 的架构设计灵活,适用于多种数据库类型,包括 MySQL、PostgreSQL 和 SQL Server 等。原创 2024-06-25 23:11:41 · 1076 阅读 · 0 评论 -
MyCAT 2 简单入门
MyCAT 2 作为一款功能强大的数据库中间件,可以有效解决大数据量、高并发的数据库应用场景中的瓶颈问题。如果你正在寻找一种解决数据库扩展性和性能问题的方案,不妨试试 MyCAT 2。希望这篇入门指南对你有所帮助!如果有任何问题或建议,欢迎在评论区留言交流。原创 2024-06-25 23:01:01 · 1232 阅读 · 0 评论 -
SpringBoot整合RocketMQ
实现:RocketMQListener 接口消费消息,通过@RocketMQMessageListener指定consumerGroup,topic,和tags。) 注解标记,监听器需要实现RocketMQLocalTransactionListener 接口 , txProducerGroup 是事务组的名字。通过 @RocketMQTransactionListener(txProducerGroup =生产者增加事务消息发送方法。原创 2024-06-22 21:25:34 · 650 阅读 · 0 评论 -
RocketMQ的使用
下面对三种发送方式做一个对比可靠性最高: 同步发送 > 异步发送 > 单向发送性能最高:单向发送 > 异步发送 > 同步发送使用场景建议如下如果是比较重要的不可丢失的消息,且对时效性要求不高建议使用同步发送,如转账消息如果是不重要的可失败的消息,比如日志消息,建议使用单向发送如果对时效性要求比较高,且消息不能丢失,可以尝试使用异步发送 我们通常使用定时任务比如Quartz来解决超时业务,比如:订单支付超时关单(N多定时任务),VIP会员超时提醒(只有一个定时任务)。原创 2024-06-22 21:21:51 · 906 阅读 · 0 评论 -
RocketMQ的安装和原理
RocketMQ的安装。原创 2024-06-21 21:26:12 · 3173 阅读 · 0 评论 -
分布式锁实现方案
就是在分布式环境下,保证某个公共资源只能在同一时间被多进程应用的某个进程的某一个线程访问时使用锁。原创 2024-06-20 12:47:50 · 814 阅读 · 0 评论 -
mongodb-java api&&springboot整合mongodb
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。 MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。原创 2024-06-15 22:08:56 · 934 阅读 · 0 评论 -
Redis
NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,它泛指非关系型的数据库。关系型数据库:以关系(由行和列组成的二维表)模型建模的数据库。简单理解:有表的就是关系型数据库。Redis 是一个高性能的 开源的、C语言写的Nosql(非关系型数据库),redis的数据可以存储在内存中或者磁盘中。Redis 是以key-value形式存储,和传统的关系型数据库不一样。原创 2024-06-14 21:13:49 · 987 阅读 · 0 评论 -
SpringBoot集成Elasticsearch实例
使用spring-boot-starter-data-elasticsearch对es进行操作时也要按照es请求的格式进行操作。准备query接收查询条件。原创 2024-06-14 17:25:56 · 771 阅读 · 0 评论