摘要:
接口性能指标中的95分位(95th percentile)和99分位(99th percentile)是用来衡量系统响应时间分布的重要统计值。 这些百分位数可以帮助我们了解大多数请求完成所需的时间,特别是在分析长尾延迟时非常有用。 95分位:表示有95%的请求响应时间是在这个数值以下的。换句话说,只 阅读全文
摘要:
发线程数限流和直接 QPS 限流是 Sentinel 中两种不同的限流策略,它们分别从不同的角度来控制系统的流量和负载。下面详细解释这两种限流的区别: 并发线程数限流 (Concurrency Level Threshold) 定义: 并发线程数限流关注的是某一时刻正在执行的请求的数量。 当一个请求 阅读全文
摘要:
限流阈值类型是指在进行限流时所依据的不同维度或条件。Sentinel 支持多种阈值类型,每种类型适用于不同的场景。以下是一些主要的阈值类型: 直接 QPS 限流 (QPS Threshold) 这是最简单的限流方式,直接根据每秒请求数(Queries Per Second, QPS)来设置阈值。 例 阅读全文
摘要:
Redis 提供了多种数据类型,每种数据类型都有其独特的实现结构和使用场景。以下是 Redis 中常见的数据类型及其底层实现结构: 字符串(String) 字符串是最基本的数据类型,可以存储二进制安全的字符串、整数或浮点数。 实现结构:Redis 使用 SDS(Simple Dynamic Stri 阅读全文
摘要:
MySQL的InnoDB存储引擎使用多版本并发控制(MVCC,Multi-Version Concurrency Control)机制来支持高并发的读写操作,同时保证事务的隔离性和一致性。MVCC允许不同的事务看到不同的数据版本,从而减少了锁的竞争,提高了数据库的并发性能。 隐式字段 InnoDB在 阅读全文
摘要:
使用三个缓存(singletonObjects,earlySingletonObjects,singletonFactories)来解决循环依赖问题,主要是为了确保Bean的正确创建和初始化流程,同时避免死锁和无限递归的情况。下面是使用三个缓存的好处和必要性: 确保Bean的正确创建: single 阅读全文
摘要:
在Spring框架中,Bean的实例化和管理是通过其核心的IoC容器完成的。在处理Bean的依赖注入时,可能会遇到循环依赖的问题,即两个或多个Bean相互引用对方。为了解决这一问题,Spring采用了三级缓存机制。 一级缓存:singletonObjects 这是Spring IoC容器中的主要缓存 阅读全文
摘要:
SAAS业务模式下,使用单个mysql实例,多个租户在该mysql实例下创建自己的数据库。 1、每个租户tenantCode有对应的数据库名 对应配置关系可以在代码中写死,或者提取到apollo或者nacos中。 tenant1->department_store_1 tenant2->depart 阅读全文
摘要:
在多租户环境中,根据tenantCode字段动态切换数据库是常见的需求。这里将展示如何在Spring Boot和MyBatis项目中实现这一功能,具体步骤包括配置数据源、定义数据源路由逻辑以及在业务代码中使用。 1. 配置数据源 首先,你需要为你的应用配置一个主数据源,这个数据源将被用于连接到包含所 阅读全文
摘要:
Spring事务可能在以下几种情况下失效: 非托管代码:如果在事务管理的边界之外调用业务方法,那么事务将不会生效。例如,在同一个类中调用一个被@Transactional注解的方法,由于方法调用是在同一栈帧内,因此不会触发AOP代理,也就无法实现事务。 异常被捕获并处理:如果在业务逻辑中出现异常,但 阅读全文