96SEO 2026-02-20 07:24 14
消息堆积#xff1a;生产者的生产速率远远大于消费者的消费速率#xff0c;使消息大批量的堆积在消息队列。

解决方案#xff1a;1#xff0c;提升消费者的消费速率#xff08;增加消费者集群#xff09;
消息堆积生产者的生产速率远远大于消费者的消费速率使消息大批量的堆积在消息队列。
消息重试消息重试一般发生于一个消费者发生了异常网络波动或者系统假死这个时候这个消费者就会通知生产者重新发送。
就会带来重复消费的问题。
可以采用常用的幂等解决方案分布式锁全局id业务场景保证唯一性。
所有的重复提交问题都可以用幂等性来解决。
1消息确认机制生产者必须确认消息成功刷盘到硬盘中才确认消息发送成功。
参数指定了必须要有多少个分区副本收到消息生产者才会认为消息写入是成功的。
这个参数对消息
生产者在成功写入消息之前不会等待任何来自服务器的响应。
也就是说如果当中出现了问题导致服务器没有收到消息那么生产者就无从得知消息也就丢失了。
不过因为生产者不需要等待服务器的响应所以它可以以网络能够支持的最大速度发送消息从而达到很高的吞吐量。
如果
只要集群的Leader节点收到消息生产者就会收到一个来自服务器的成功响应。
如果消息无法到达Leader节点比如Leader节点崩溃新的Leader还没有被选举出来生产者会收到一个错误响应为了避免数据丢失生产者会重发消息。
不过如果一个没有收到消息的节点成为新Leader消息还是会丢失。
这个时候的吞吐量取决于使用的是同步发送还是异步发送。
如果让发送客户端等待服务器的响应通过调用
方法显然会增加延迟在网络上传输一个来回的延迟。
如果客户端使用回调延迟问题就可以得到缓解不过吞吐量还是会受发送中消息数量的限制比如生产者在收到服务器响应之前可以发送多少个消息。
如果
acks-1(或all)只有当所有参与复制的节点全部收到消息时生产者才会收到一个来自服务器的成功响应。
这种模式是最安全的它可以保证不止一个服务器收到消息就算有服务器发生崩溃整个集群仍然可以运行。
不过它的延迟比
2消息持久化机制作为mq中间件会把消息持久化到硬盘因为内存里的数据断电就丢失了
3消费者必须确认消息消费成功否则进行重试重试达到一定次数后通知开发人员做好补偿措施。
关闭自动提交当消费者消费的完成后再手动提交防止mq的自动提交当消费者接收到消息后mq以为消费者已经消费了但这个时候消费者如果挂了这条消息就没有被消费。
大多数的项目不需要保证顺序一致性某些特殊场景必须保证顺序一致性比如说mq用于保证redis和mysql的数据一致性。
绑定同一个消费队列消费的时候进行要注意如果使用了多线程处理避免重新创建list要在原来的list进行修改。
当mq中有消息就会通知消费者来进行消费。
这种模型有一个致命伤就是慢消费。
消费者去轮询看看有没有自己要消费的消息。
这种模型也有弊端就是消息延迟与忙等。
如果消费者的速度比发送者的速度慢很多势必造成消息在mq的堆积。
假设这些消息都是有用的无法丢弃的消息就要一直在mq端保存。
当然这还不是最致命的最致命的是mq给消费者推送一堆无法处理的消息消费者不是拒绝就是报错然后来回踢皮球。
反观pull模式消费者可以按需消费不用担心自己处理不了的消息来骚扰自己而mq堆积消息也会相对简单无需记录每一个要发送消息的状态只需要维护所有消息的队列和偏移量就可以了。
所以消息量有限且到来的速度不均匀的情况pull模式比较合适。
由于主动权在消费方消费方无法准确地决定何时去拉取最新的消息。
如果一次pull取到消息了还可以继续去pull如果没有pull取到则需要等待一段时间重新pull。
但等待多久就很难判定了。
当然也不是说延迟就没有解决方案了业界较成熟的做法是从短时间开始不会对mq有太大负担然后指数级增长等待。
比如开始等5ms然后10ms然后20ms然后40ms……直到有消息到来然后再回到5ms。
即使这样依然存在延迟问题假设40ms到80ms之间的50ms消息到来消息就延迟了30ms而且对于半个小时来一次的消息这些开销就是白白浪费的。
在阿里的RocketMq里有一种优化的做法-长轮询来平衡推拉模型各自的缺点。
基本思路是:消费者如果尝试拉取失败不是直接返回,而是把连接挂在那里等待,服务端如果有新的消息到来把连接复用起来这也是不错的思路。
但海量的长连接mq对系统的开销还是不容小觑的还是要合理的评估时间间隔。
生产者在向mq投递消息的时候可以将要投递的消息记录下来可以在数据库中插入一条数据也可以输出相应的日志记录后期可以编写定时任务定期向mq发送之前发送不成功的消息。
集群消费同一个消费者集群只能消费一条消息但是一条消息可以被多个消费者集群消费。
广播消费通知集群中的所有节点都进行消费涉及到数据分片处理的场景对数据不敏感
的场景可以采用普通hash对数据敏感的场景可以采用hash环。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback