- 博客(1528)
- 资源 (4)
- 收藏
- 关注
原创 ElasticSearch技术栈总结
本文提供了ElasticSearch的学习路线、环境安装配置、技术知识、交互操作、性能优化等方面的详细指南。内容包括ElasticSearch的学习路线图、环境安装配置步骤、技术知识如RESTFUL API、文档映射、查询语句等,以及使用Python与ElasticSearch进行交互的操作方法。此外,还涉及性能优化技巧和其他相关学习笔记记录,为ElasticSearch的学习和应用提供了全面的参考。
2025-05-20 12:44:16
900
原创 windows下安装ES的IK分词器插件
IKAnalyzer是一款基于Java的开源中文分词工具包,采用“正向迭代最细粒度切分算法”,具备高速处理能力(80万字/秒),支持多种文本类型的分词,如英文字母、数字和中文词汇。其优化的词典存储减少了内存占用。IK分词器可作为Elasticsearch插件使用,安装时需确保插件与ES版本一致,安装后可通过API测试分词效果。测试结果显示,IK分词器对中文文本的分词效果良好。
2025-05-19 23:27:26
426
原创 elasticsearch-head工具安装
本文介绍了两种安装elasticsearch-head的方式:通过Docker安装和通过Chrome插件安装。Docker安装步骤包括拉取镜像、创建和启动容器,但需注意跨域问题,需在服务端配置CORS。Chrome插件安装则更为简便,但国内网络可能无法直接安装。两种方法各有优缺点,用户可根据需求选择适合的安装方式。
2025-05-19 21:10:39
332
原创 ElasticSearch下载及环境安装
本文介绍了Elasticsearch的下载和安装过程,包括在CentOS 7和Windows系统上的具体步骤。在CentOS 7上,首先需要创建特定用户并解压安装包,然后修改配置文件和系统参数以确保Elasticsearch能够成功运行。启动服务后,可以通过访问特定URL来测试是否安装成功。对于Windows系统,安装过程较为简单,只需下载对应的Windows版本并解压即可直接运行。文中还提供了一些在安装过程中可能遇到的问题及其解决方案,帮助用户顺利完成安装。
2025-05-19 20:03:43
323
原创 Kafka中事务的使用
Kafka事务机制通过幂等性和原子性确保消息的精准一次性处理。幂等性通过ProducerID和SequenceNumber防止消息重复,但仅限于单次会话内。事务的原子性通过TransactionCoordinator管理,确保多条消息要么全部成功要么全部失败,支持跨分区和Topic的原子写操作。Kafka还通过transaction-id属性解决僵尸实例问题,确保ExactlyOnce语义。生产者和消费者通过特定API支持事务操作,生产者需设置transactional.id,消费者需设置isolation
2025-05-19 12:01:15
831
原创 Kafka如何保障消息传递的可靠性与一致性
Apache Kafka 通过多种机制确保数据传递的可靠性与一致性。首先,Kafka 使用分区和副本机制,每个分区有多个副本,确保即使某个 Broker 故障,消息也不会丢失。其次,ISR(In-Sync Replicas)集合确保数据同步,只有 ISR 中的副本确认后,消息才被视为提交。Kafka 还通过持久化到磁盘(日志)来保障数据可靠性。在数据一致性方面,Kafka 提供生产者确认机制、幂等性与事务性,确保消息不重复且原子性提交。消费者端,Kafka 通过分区内部严格有序、位移提交和消费者组与分区再平
2025-05-19 10:53:57
938
原创 Kafka分区数最佳设置
在Kafka中,分区数的设置对系统性能、吞吐量和数据有序性有重要影响。选择合适的分区数需考虑业务需求、负载特性和资源状况。可以通过压测工具(如kafka-producer-perf-test.sh和kafka-consumer-perf-test.sh)评估硬件条件下的最佳分区数。增加分区数可提高吞吐量,但超过一定阈值后,吞吐量会下降。分区数还受操作系统文件描述符限制,过多分区会增加系统启动、关闭和日志清理的耗时。分区数应结合并发能力、吞吐量、有序性要求和硬件资源进行设置,一般建议分区数为Broker节点数
2025-05-19 09:57:12
747
原创 Kafka如何解决消息回溯消费问题
Kafka作为分布式系统中的高效消息队列,其回溯消费机制在处理数据丢失、错误处理、版本升级、数据分析及容灾恢复等场景中发挥着关键作用。Kafka支持基于消息偏移量和基于时间点的两种回溯方式。基于偏移量的回溯通过重置消费者组的偏移量实现,简单直接但需谨慎管理偏移量以避免重复或漏消费。基于时间点的回溯则通过时间戳和消息索引实现,虽更灵活但需额外资源。实践中,建议合理设置偏移量管理策略、定期备份偏移量信息、监控集群状态并熟练使用Kafka API,以确保高效可靠的消息回溯消费。
2025-05-18 19:50:05
962
原创 Kafka如何实现延时队列
在订单创建后超过30分钟未支付的情况下,可以通过Kafka实现延时队列来取消订单。具体方案包括:在Kafka中创建相关主题,消费者轮询消费该主题的消息。消费者在消费消息时,判断消息的创建时间与当前时间是否超过30分钟(前提是订单未支付)。如果超过,则在数据库中修改订单状态为已取消;如果未超过,则记录当前消息的offset,并暂停消费后续消息。等待1分钟后,再次从Kafka拉取该offset及之后的消息,继续判断。Kafka本身不支持延时队列,但通过这种方式可以实现类似功能。
2025-05-18 18:03:31
341
原创 Kafka如何解决消息积压、堆积问题
Kafka消息积压问题通常由生产速度过快和消费速度过慢导致,长期失衡可能引发资源紧张、服务延迟或崩溃。解决积压问题的核心在于提升消费者的消费能力和优化Kafka集群性能。常见原因包括消费端过载、生产异常、中间件故障、业务流程复杂、慢查询、第三方服务依赖以及消费者组频繁rebalance等。应对策略包括增加消费者并发处理能力、提升消费能力、优化Kafka集群性能、调整配置参数、处理积压历史数据、分离实时与历史数据、流量控制、动态扩展、数据分流、避免重复消费、建立监控与告警机制以及异常处理机制。通过这些方法,可
2025-05-18 17:18:08
863
原创 Kafka如何保证消息的顺序性
在现代分布式系统中,消息顺序消费对确保系统正确性和一致性至关重要,尤其是在金融交易和实时流处理等场景中。然而,分布式环境下的网络延迟、系统故障和并发处理等因素可能导致消息乱序。Apache Kafka通过分区机制和消息键的使用,有效解决了这一问题。Kafka确保单个分区内的消息严格有序,并通过自定义分区策略将具有相同键的消息路由到同一分区,从而在多分区环境下实现局部顺序消费。此外,Kafka支持消费者组配置,允许在保证顺序的前提下提升系统处理效率。在多分区场景下,通过定制分区策略和引入内存队列缓冲,Kafk
2025-05-18 15:35:39
1014
原创 Kafka数据重复及解决方案
在分布式系统中,数据重复是一个常见问题,主要由于网络波动和系统重试机制引起。消息重复可能发生在生产端和消费端,如网络异常、分区不可用或消费端未提交offset等情况。为了解决消息重复问题,可以采用三种消息投递语义:最多一次、至少一次和精确一次。具体解决方案包括使用Kafka幂等性Producer、Kafka事务和消费端幂等性。Kafka幂等性Producer通过确保单分区和单会话内的消息幂等性来避免重复,而Kafka事务则扩展了幂等性的应用范围,支持跨分区和会话。消费端幂等性通过如消息表等机制确保即使消息重
2025-05-15 19:19:50
969
原创 Kafka生产环境防止数据丢失
Kafka作为分布式流处理平台,虽然以高可靠性著称,但在生产者、Broker和消费者三个环节仍可能发生消息丢失。生产者端消息丢失可能由于发送失败或确认机制配置不当;Broker端消息丢失可能与副本因子设置过低或数据同步配置不当有关;消费者端消息丢失则可能由于自动提交偏移量或处理消息失败导致。为防止消息丢失,生产者端应确保消息被所有同步副本接收,并设置足够的重试次数;Broker端应配置足够的副本数和合理的刷盘策略;消费者端应关闭自动提交偏移量,并确保消息处理成功后再提交偏移量。此外,Kafka支持三种消息传
2025-05-14 19:31:58
938
原创 Kafka如何做到不丢失不重复消费
在需要确保消息不丢失、不重复的场景中,如无人机监控系统,Kafka的消息传递机制提供了三种语义:最多一次(at most once)、至少一次(at least once)和精确一次(exactly once)。Kafka默认配置为至少一次,可能造成消息重复。为实现精确一次,Kafka 0.11.0.0版本引入了幂等生产者和事务支持,确保消息在生产者端不重复。消费者端则需手动管理offset提交或使用Kafka Streams引擎,设置processing.guarantee=exactly_once,以实
2025-05-13 21:12:40
758
原创 Kafka如何保证百万级数据写入速度
Kafka通过页缓存技术和磁盘顺序写实现高吞吐量。数据首先写入操作系统的页缓存(内存),然后由操作系统决定何时刷入磁盘,这大大提升了写入性能。此外,Kafka采用磁盘顺序写的方式,将数据追加到文件末尾,避免了随机写带来的性能损耗,使得写入性能接近内存写入。在数据消费方面,Kafka引入零拷贝技术,直接从操作系统的缓存发送数据到网卡,跳过了不必要的拷贝步骤,显著提升了读取性能。通过这些优化,Kafka能够实现每秒几十万甚至上百万条数据的高效处理。
2025-05-13 17:56:10
558
原创 Kafka中间件技术栈总结
本文主要介绍了Kafka的安装配置、技术知识、交互操作及性能优化等方面的内容。首先,详细讲解了Kafka的安装启动及图形管理界面Kafka-eagle的配置。其次,涵盖了Kafka中Shell命令的使用、集群吞吐量测试等技术知识。接着,探讨了Kafka生产者和消费者的Python API编写、消息发送方式、偏移量提交、数据分发策略及消费者负载均衡机制等交互操作。最后,提供了Kafka学习笔记,帮助读者深入理解Kafka的核心概念与应用。
2025-05-13 10:06:50
383
原创 Redis Lua脚本
Redis自2.6版本起引入了Lua脚本功能,允许开发者在Redis服务器上执行Lua脚本,从而减少网络请求次数,降低网络延迟。脚本执行具有原子性,确保操作不会被其他命令打断,且能替代Redis的事务功能,支持错误回滚。通过EVAL命令,可以执行Lua脚本,其中脚本通过KEYS和ARGV数组访问键名和附加参数。在脚本中,可以使用redis.call()函数执行Redis命令,但需避免死循环和耗时操作,以防阻塞Redis服务器。Lua脚本在Redis中提供了一种高效、原子性的操作方式,是处理复杂逻辑的理想选择
2025-05-12 20:41:28
295
原创 Redis主从架构介绍及复制原理
Redis主从架构通过配置主节点和从节点实现数据复制,确保数据的高可用性和负载均衡。搭建从节点时,需复制并修改redis.conf文件,设置端口、日志文件、数据目录等,并配置replicaof指向主节点。启动从节点后,通过redis-cli连接并测试数据同步。Redis主从复制工作原理基于PSYNC命令,主节点在后台生成RDB快照并发送给从节点,从节点加载数据后,主节点再发送缓存命令。从Redis 2.8开始,支持部分数据复制(断点续传),减少全量复制的开销。为缓解主从复制风暴,可采用多级从节点架构,部分从
2025-05-12 19:44:51
489
原创 缓存数据一致性及解决方案
在项目开发中,缓存的使用至关重要,尤其是在保证数据一致性方面。常见的缓存更新策略有三种:先更新数据库再更新缓存、先删除缓存再更新数据库、先更新数据库再延时删除缓存。第一种策略因线程安全问题可能导致脏数据,通常不被采用。第二种策略在并发场景下可能导致缓存中始终存储旧数据,也不理想。第三种策略通过延时删除缓存,虽然存在极低概率的并发问题,但由于数据库读操作通常快于写操作,实际发生概率极低,因此被认为是最优方案。通过合理设置缓存过期时间,可以进一步确保数据的最终一致性。
2025-05-11 19:21:28
331
原创 Redis开发规范
本文介绍了Redis的key设计、value设计、命令使用和客户端使用的优化技巧。在key设计上,建议将表名作为前缀,主键列名和值作为中间段,存储列名作为后缀。value设计应避免bigkey,控制string类型大小在10KB以内,集合元素个数不超过5000。命令使用上,禁止线上使用keys、flushall等命令,合理使用select,推荐批量操作提高效率,不建议过多使用事务功能。客户端使用上,推荐Jedis、Spring Data Redis和Redisson,避免多个应用共享一个Redis实例,使用
2025-05-11 19:05:15
702
原创 缓存雪崩介绍及解决方案
缓存雪崩是指大量缓存同时失效,导致请求直接涌向数据库,造成数据库压力骤增的现象。为避免这种情况,可以采取以下措施:1. 过期时间打散:为缓存设置随机的过期时间,避免集中失效;2. 热点数据不过期:对热点数据设置永不过期,并定期更新;3. 加互斥锁:对同一key的请求加锁,确保只有一个线程访问数据库,其他线程等待并使用缓存结果。代码实现中,通过synchronized锁机制确保线程安全,但需注意加锁仅减轻数据库压力,未提升系统吞吐量。
2025-05-11 18:50:32
313
原创 缓存击穿介绍及解决方案
缓存击穿是指某个热点key在缓存过期瞬间,大量请求直接访问数据库,导致数据库压力骤增甚至崩溃。解决方案包括使用互斥锁和热点数据不过期。互斥锁确保只有第一个请求能访问数据库并更新缓存,其他请求等待缓存更新后直接读取。热点数据不过期则通过定时任务异步更新缓存,避免缓存失效。代码实现中,通过setnx方法设置互斥锁,确保只有一个线程能执行数据库查询并更新缓存,其他线程等待或重试。
2025-05-11 18:42:58
192
原创 缓存穿透介绍及解决方案
缓存穿透是指用户请求的数据在缓存和数据库中均不存在,导致每次请求都直接访问数据库,增加数据库压力。常见于恶意攻击,如请求无效ID。解决方案包括对空值进行缓存,即使查询结果为空也将其缓存,并设置较短的过期时间;以及使用布隆过滤器,通过判断元素是否在集合中来减少无效查询,从而有效缓解缓存穿透问题。
2025-05-11 18:24:55
263
原创 缓存预热介绍及解决方案
缓存预热是一种在系统上线前将热点数据预先加载到缓存中的技术,旨在避免缓存冷启动时数据库负载过高。缓存冷启动指的是新系统启动时缓存中无数据,若直接对外服务,高并发可能导致数据库崩溃。解决思路包括提前将部分数据加载到Redis中,但若数据量过大,无法全部写入Redis,需根据实时访问情况统计高频热数据并写入。此外,可通过多服务并行读取数据实现分布式缓存预热,以提升系统性能和数据库稳定性。
2025-05-11 18:15:09
224
原创 Redis脑裂介绍及解决方案
Redis集群脑裂是指由于网络分区,导致Redis主节点(Master)与从节点(Slave)及哨兵(Sentinel)集群断开连接,哨兵无法感知主节点存在,从而将某个从节点提升为新的主节点,导致集群中出现两个主节点。这种情况下,如果客户端继续向原主节点写入数据,新主节点无法同步这些数据,网络恢复后,原主节点降为从节点并同步新主节点数据,可能导致大量数据丢失。为解决此问题,可在redis.conf中配置min-replicas-to-write 1和min-replicas-max-lag 5,确保主节点在
2025-05-11 17:46:38
303
原创 Redis数据库技术栈总结
本文目录涵盖了Redis数据库的全面学习路径,包括环境安装配置、数据结构、技术知识、交互操作、性能优化及其他相关内容。环境安装配置部分详细介绍了Redis及其可视化工具在不同操作系统上的安装步骤和配置方法。数据结构部分深入探讨了Redis支持的各种数据类型及其操作命令。技术知识部分涵盖了Redis的特性、应用场景、持久化策略、事务处理、发布订阅模式、哨兵监控、主从同步及集群搭建等高级功能。交互操作部分提供了Python与Redis数据库及集群的交互方法,包括增删改查和模糊查询等操作。性能优化部分则关注Red
2025-05-11 17:28:38
1191
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人