baihongyu.com
博客
关于我
SELECT COUNT(*) 底层究竟干了啥么?
InnoDBvsMyISAM:MySQLCOUNT(*)性能对比在数据库应用中,COUNT(*)是一个极为常见的SQL操作。作为MySQL的默认事务引擎,InnoDB在大多数业务场景下被广泛使用。然而,关于COUNT(*)的执行机制和性能表现,许多开发者对其内部实现细节还存在诸多疑惑。本文将深入剖析InnoDB和MyISAM存储引擎中COUNT(*)操作的实现方式及其性能差异。一、InnoDB全表......
阅读量:
796 次
2023-03-22
SaaS模式下,多租户系统数据隔离实现方案
多租户数据隔离方案与MyBatis-Plus插件实现在SaaS系统架构设计中,数据隔离是保障多租户环境下数据安全的关键环节。本文将深入探讨多租户数据隔离的实现方案,并结合MyBatis-Plus的多租户插件,展示其优雅的代码实现方式。多租户数据隔离有三种主要方案,分别是为每个租户分配独立数据库、使用独立的表空间,以及按租户ID字段进行数据隔离。虽然每种方案都有其适用场景,但按租户ID字段隔离的方案......
阅读量:
796 次
2023-03-22
RPC 实现以及相关学习
RPC框架开发实践与技术探索在一个拥有成千上万大大小小服务的公司里,开发一个新服务往往需要考虑两个核心问题:如何与其他服务通信,以及如何让自己的服务被其他服务调用。这些问题的答案,往往决定了系统的灵活性和可维护性。RPC(RemoteProcedureCall)作为一种常用的解决方案,通过网络通信实现服务间的调用,但其背后有着深刻的技术考量。RPC调用的变与不变RPC调用的本质是面向服务的封装,其......
阅读量:
796 次
2023-03-22
RocketMQ源码中,7种导致重复消费的坑!
RocketMQ消息重复消费问题深度解析在RocketMQ的消息队列系统中,消息重复消费是一个复杂但重要的课题。尽管RocketMQ设计初衷是高效可靠的消息中继系统,但在某些特定场景下,消息可能会被重复消费。这种现象不仅影响消息系统的稳定性,还可能对业务逻辑造成不可预见的后果。本文将从多个维度分析RocketMQ中消息重复消费的原因,并探讨如何应对这一问题。一、消息重复消费的根本原因RocketM......
阅读量:
796 次
2023-03-22
RocketMQ与Kafka对比,谈谈两者的差异
RocketMQvsKafka:一文详细对比在分布式系统中,消息中间件是构建高效可靠架构的重要基础。阿里巴巴的RocketMQ和ApacheKafka作为两大主流消息中间件,各有其独特的特点和应用场景。本文从性能、可靠性、扩展性等多个维度,对这两者进行深入对比,帮助你更好地选择适合业务需求的消息中间件。1.消息可靠性RocketMQ在单机可靠性方面更具优势。其支持同步刷盘和同步复制机制,能够确保在......
阅读量:
796 次
2023-03-22
RocketMQ 源码解析 —— 调试环境搭建
RocketMQ本地开发环境搭建与调试指南搭建RocketMQ本地开发环境并进行调试,是理解RocketMQ内部工作机制的基础步骤。本文将详细介绍如何在本地环境中配置并启动RocketMQ的各个组件。1.依赖工具在开始操作之前,确保你的开发环境已经准备好。以下是所需工具的版本要求:JDK:版本1.8或更高Maven:最新版本IntelliJIDEA:推荐使用2.源码拉取首先,我们需要从Rocket......
阅读量:
796 次
2023-03-22
RocketMQ 源码分析 —— 高可用
RocketMQ高可用性分析:Namesrv、Broker的高可用实现RocketMQ作为ApacheRocketMQ的开源版本,是一个高性能、可靠的消息中间件。其高可用性设计主要体现在Namesrv和Broker的实现上。本文将深入分析RocketMQ的高可用性架构,探讨其核心原理和实现细节。Namesrv高可用性Namesrv是RocketMQ中的一个轻量级注册中心,主要负责节点注册和发现。实......
阅读量:
796 次
2023-03-22
RocketMQ 源码分析 —— 集成 Spring Boot
RocketMQ与SpringBoot集成项目源码解析在开始阅读ApacheRocketMQ与SpringBoot集成项目源码之前,我们需要先搭建一个完整的调试环境。通过这一过程,我们可以深入了解项目的结构和运行机制。一、调试环境搭建首先,确保你已经安装了以下工具:JDK:版本要求为1.8及以上Maven:用于项目依赖管理和构建IntelliJIDEA:推荐使用2.源码拉取从官方仓库https:/......
阅读量:
798 次
2023-03-22
RocketMQ 源码分析 —— 定时消息与消息重试
RocketMQ定时消息与消息重试深度分析概述在RocketMQ中,定时消息和消息重试是两大重要的功能模块,分别用于支持消息的定时投递和处理,以及在消费失败时提供重试机制。理解这两部分的实现原理,对于优化消息系统的性能和可靠性非常有帮助。本文将从以下几个方面展开分析:定时消息的处理逻辑消息重试机制的实现核心代码解析性能优化与调优建议定时消息的处理逻辑定时消息的定义定时消息是指在Broker收到消息......
阅读量:
798 次
2023-03-22
Github全站热榜第二!阿里2022最新JDK源码深度解析小册,阅读源码也太舒服了
我们为什么要看源码?我们该怎么样去看源码?在编程的旅程中,源码的阅读确实是一个不可忽视的重要环节。很多开发者可能对这件事感到困惑,不知道从何下手。其实,学会如何阅读源码并非难事,只要掌握了正确的方法,效率就会大大提升。学习源码的方法论不要忽略源码中的注释源码中的注释是开发者留给我们的宝贵信息,它们不仅可以帮助我们理解代码的功能,还能提供实现细节和开发心得。不要仅仅关注代码本身,而忽略了这些重要的注......
阅读量:
808 次
2023-03-22
RocketMQ 源码分析 —— Message 顺序发送与消费
RocketMQ严格顺序消息的实现机制1.概述RocketMQ是Apache移动式数据流(ApacheApacheRocketMQ)项目的产物,主要用于高效的消息中继和分布式计算。它提供了两种顺序级别的消息:普通顺序消息和完全严格顺序消息。普通顺序消息适用于大部分场景,而完全严格顺序消息则用于高强一致性的场景,如数据库binlog同步。2.生产者(Producer)的严格顺序消息发送2.1消息队列......
阅读量:
799 次
2023-03-22
RocketMQ 源码分析 —— Message 拉取与消费(下)
RocketMQPushConsumer消息队列源码分析RocketMQ的PushConsumer是处理消息的一种核心组件,主要负责拉取消息并进行消费。其工作流程涉及多个关键模块,包括订阅、消息队列分配、拉取消息以及消息消费等。以下将从源码层面对PushConsumer的实现机制进行详细分析。1.消息队列订阅PushConsumer的订阅过程主要集中在DefaultMQPushConsumerIm......
阅读量:
799 次
2023-03-22
RocketMQ 源码分析 —— Message 拉取与消费(上)
RocketMQ消费逻辑深度解析消费逻辑概述RocketMQ的消费逻辑主要负责将Broker提供的消息从CommitLog中读取,并通过ConsumeQueue存储到消费者可读的位置。整个过程分为几个关键环节:拉取消息、消费消息、持久化消费进度等。以下将从ConsumeQueue的结构和存储开始,逐步展开对消费逻辑的深入理解。ConsumeQueue结构ConsumeQueue是RocketMQ消......
阅读量:
796 次
2023-03-22
AI凶猛,一个都不放过?
AI绘画:从技术奇迹到艺术革命的无声入侵AI绘画的发展,像一场无声的革命,正在悄然改变着人类对艺术的认知。过去人们认为AI难以创作高质量艺术作品,但《太空歌剧院》这幅由AI创作的画作,却以其细腻的笔触和深邃的构图,打破了这一认知。它不仅展现了AI在艺术领域的潜力,更引发了人们对AI与人类艺术关系的深度思考。AI绘画的灵魂之问AI绘画是否具备灵魂?这一问题曾经有着明确的答案:AI绘画缺乏灵魂。但《太......
阅读量:
797 次
2023-03-22
RabbitMQ入门
RabbitMQ原理与SpringBoot整合案例一、RabbitMQ原理RabbitMQ是一款开源的消息中间件,基于AMQP协议,用于实现消息的高效传输与处理。其核心特点在于支持多种消息模式,适用于分布式系统中的消息队列需求。1.AMQP协议AMQP(AdvancedMessageQueuingProtocol)是一个开放标准协议,旨在为消息中间件提供统一的消息传输接口。RabbitMQ等工具基......
阅读量:
797 次
2023-03-22
RocketMQ 源码分析 —— Filtersrv
RocketMQFiltersrv过滤机制深度解析Filtersrv是RocketMQ系列中一个重要的组件,主要负责自定义规则过滤Consumer从Broker拉取的消息。它通过在Broker端减少不必要的消息传输,同时避免了Consumer端接收无用消息的负担,在RocketMQ的架构中扮演着关键角色。本文将详细介绍Filtersrv的工作原理、实现机制以及实际应用场景。1.Filtersrv概......
阅读量:
796 次
2023-03-22
RocketMQ 最佳实践之坑
RocketMQ消息丢失问题:基于一个实际案例分析在使用RocketMQ的过程中,我们曾遇到过一个棘手的问题:当同一个服务部署多台机器时,消息消费出现不一致,导致部分消息被丢失。本文将从实践中总结经验,分析问题根源,并探讨解决方案。问题背景我们在开发过程中,遵循了RocketMQ官方推荐的最佳实践:尽可能使用一个主题(Topic),通过标签(Tag)来区分消息类型。例如,在订单服务中,我们使用To......
阅读量:
796 次
2023-03-22
REST API 的安全认证,从 OAuth 2.0 到 JWT 令牌
RESTfulWeb服务安全机制比较:Basic认证、OAuth2.0、OAuth2+JWT与亚马逊签名方式RESTfulWeb服务的安全性是保障其成功部署的关键环节。本文将深入分析几种主流的身份验证与授权机制,包括Basic认证、OAuth2.0、OAuth2+JWT以及亚马逊独有的签名方式,探讨它们的工作原理、优缺点以及适用场景。Basic认证:最古老的身份验证方法Basic认证是最早应用于H......
阅读量:
796 次
2023-03-22
Redis缓存使用技巧和设计方案
缓存在现代应用中的应用越来越广泛,但它的使用需要谨慎考虑。以下是关于缓存的一些实践经验和优化建议。一、缓存的收益与成本缓存的使用可以带来显著的性能提升,但也伴随着一些挑战。以下是缓存的主要收益和成本分析:收益:加速读写:缓存通常采用全内存,能够快速响应请求,提升用户体验。降低后端负载:通过缓存减少对存储层的访问次数,降低后端服务器的压力。成本:数据不一致性:缓存与存储层之间可能存在一定时间窗口的数......
阅读量:
796 次
2023-03-22
Redis最佳实践:7个维度+43条使用规范,带你彻底玩转Redis | 附实践清单
Redis最佳实践优化指南Redis内存优化1.控制Key长度简短是最优的。合理设计键名,避免过长的键名占用过多内存。例如,将user:book:123优化为u:bk:123。2.避免存储Bigkey数据类型选择:String数据库存储大小控制在10KB以下,List/Hash/Set/ZSet元素数量控制在1万以下。避免聚合命令:减少对复杂数据类型和聚合命令的依赖。3.选择合适的数据类型Stri......
阅读量:
796 次
2023-03-22
上一页
下一页