RabbitMQ消息堆积的主要原因包括生产者发送速度远超消费者处理速度、消费者处理能力不足或故障、消费者未正确发送确认信号(ack)、不合理的QoS/Prefetch设置以及网络或系统资源瓶颈。 当生产者发送的消息堆积在队列中,如果堆积超过队列容量或设置了过期时间(TTL),可能会导致消息被丢弃。 ...
分类:攻城湿
47 篇文章Kafka和RabbitMQ在架构设计、数据处理方式和适用场景上存在显著差异。 Kafka 是一个分布式流处理平台,使用基于主题和分区的日志存储,采用拉取(pull)模式,适合高吞吐量、大数据流和实时数据处理的场景,并允许消息重放。 而RabbitMQ 是一种传统的、更灵活的消息代理,基于**推送(...
先说结论 判断一个数n是否为质数(素数)时,只需要判断小于或等于sqrt(n)的数能否整除n即可。这是因为如果n是一个合数,那么n可以分解为a和b两个数,即n = a ✖️ b,那么这两个因数中必然有一个小于或等于sqrt(n),另一个大于或等于sqrt(n)。因此只需要找出小于或等于sqrt(n)...
在分布式系统设计领域,六边形架构(Hexagonal Architecture,又称端口与适配器模式)作为一种以领域为中心的架构模式,通过明确分离核心业务逻辑与外部交互,有效提升系统的可测试性、可扩展性与可维护性。本文从核心概念、实现原理、应用场景及面试高频问题四个维度,结合Spring生态实践,系...
工欲善其事,必先利其器;士欲宣其义,必先读其书。后台开发作为互联网技术领域的掌上明珠,一直都是开发者们的追逐的高峰。本文将从后台开发所涉及到的技术术语出发,基于系统开发、架构设计、网络通信等几个方面让大家对后台开发有一个清晰的了解,讲解全面易懂。 系统开发 1. 高内聚/低耦合 高内聚指一个软件模块...
参考网址:https://mermaid-js.github.io/mermaid/#/classDiagram 类图 “在软件工程中,统一建模语言(Unified Modeling Language:UML)中的类图是一种静态结构图,通过显示系统的类,其属性,操作(或方法)以及对象之间的关系来描述...
关于maxmemory-policy Redis还提供了一个配置参数 —— maxmemory,该参数是用来配置内存大小的。一旦Redis所使用的内存超过了该参数,就会启动 maxmemory-policy 中所配置的策略。 这里需要说明的是,对于64位的操作系统,maxmemory 参数的默认值...
1. NoSQL 1.1 NoSQL 介绍 NoSQL(Not Only SQL ),意即不仅仅是 SQL,泛指非关系型的数据库。NoSQL 这个技术门类,早期就有人提出,发展至2009年趋势越发高涨。 随着互联网网站的兴起,传统的关系数据库在应付动态网站,特别是超大规模和高并发的纯动态网站已经显得...
现如今,微服务已经成了很多中大型互联网公司的标配,不同的公司采用的设计模式可能不一样,因此,这篇文章,我们来分析下微服务中常见的 9种设计模式: API Gateway Pattern(网关模式) Service Registry Pattern(服务注册表模式) Circuit Breaker P...
1. 为什么需要分布式锁? 首先我们需要明白为什么需要加锁,再并发环境下为保证数据一致性,则需要加锁;比如库存管理,当多个线程操作同一条库存记录的时候,需要加锁来保证互斥;我们可以通过ReentrantLock、synchronized来是实现; 加分布式锁是因为再分布式集群部署的情况下,并发指的不...