Netty 的 RPC 的负载均衡器、路由器 [ZK] ZK 里面有负载、 [Client]
Slave 的节点 TCP 链接风暴,客户端的随机延迟 Master 统一管理任务节点、心跳、打标的节点 Worker 的标签的【Shell,Python、Java、Flink、Spark、SQL、等等】
金: 【X】ZK脑裂 【X】Dubbo3 【】RPC设计框架
- Producer
- Consumer
- Register
- Monitor
数据提供服务、
- 序列化方式
- 安全
- 负载均衡
负载均衡
- 轮询
- 权重
- 最小连接数
- 最小请求数
mybatis 的缓存
- 一级缓存
- 二级缓存
MySQL
- UK(A,B)
B+ 树的特点
最终一致性
- 监控平台
- 分库分表的 核销券的及时性【内部券需要、外部券】
线程池的
RtreenLock 的 SYnchorized 的区别
Synchorized 的 JDK 1.6 的优化
FactoryBean BeanFactory 区别 (X)
Mybatis 的一级缓存 和 二级缓存(X)
Mybatis $ 和 # 区别 V
Mybatis 延迟加载 (X)
Mybatis 二级缓存的应用场景(X)
Redis 缓存击穿、缓存雪崩、缓存穿透(X)
Redis 事务(X)
布隆过滤器 (X)
避免缓存击穿、缓存雪崩、缓存穿透如何避免 V
- 合理的过期时间
- 分布式锁
- 缓存预热(缓存预热是指在系统启动的时候,提前将一些热点数据加载到缓存中。这样可以避免在系统运行过程中,热点数据的缓存过期,从而导致缓存击穿和缓存雪崩。 )
- 缓存降级(缓存降级是指当缓存失效的时候,可以使用数据库来代替缓存。这样可以避免缓存穿透。)
倒排布隆过滤器(Inverted Bloom filter)(X)
自适应布隆过滤器(X)
HashTable 和 HashMap 区别(X)
红黑树的结构特别 (X)
JDK 乐观锁 和 悲观锁
- 乐观锁 Atomic (CAS 和 版本号机制)
- 悲观锁 ReetrantLock Synchronized 等独占锁(排他锁)都是悲观锁思想【数据库的 行锁、表锁、读锁、写锁等等】
JDK 1.6 Synchronized 的优化
- 锁消除:如果一个方法或者代码块只被一个线程访问,那么 Synchronized 会被优化为无锁,从而提高性能。
- 锁粗化:如果一个方法或者代码块中存在多个 Synchronized 块,那么 Synchronized 会被优化为一个大的 Synchronized 块,从而减少锁的竞争,提高性能。
- 锁分离:如果一个方法或者代码块中存在多个 Synchronized 块,并且这些 Synchronized 块之间没有互相依赖,那么 Synchronized 会被优化为多个小的 Synchronized 块,从而减少锁的竞争,提高性能。
- 偏向锁:偏向锁是一种锁的优化策略,它可以提高锁的获取效率。偏向锁会在第一次被一个线程访问时将锁标记为偏向锁,之后该线程可以直接获取锁,而不需要进行竞争。
- 自旋锁:自旋锁是一种锁的优化策略,它可以提高锁的获取效率。自旋锁会在线程尝试获取锁时进行自旋,直到锁被释放为止。
JDK 的乐观锁 与 悲观锁分别是哪些 线程池的机制 mybatis 一级缓存 与 二级缓存 缓存穿透 缓存击穿 缓存雪崩
负载均衡算法有哪些、在 RPC 下你会怎么实现 Redis Cluster、Redis 哨兵模式 红黑树的结构特点: 与平衡二叉树的区别
缓存击穿
缓存击穿是指当某个热点数据突然变得非常热点,并且缓存中没有该数据时,大量的请求都会直接落到数据库上,导致数据库压力过大。
缓存雪崩
缓存雪崩是指当多个缓存节点同时失效,导致大量的请求直接落到数据库上,导致数据库压力过大。
缓存穿透
缓存穿透是指当某个数据在缓存中不存在,并且查询数据库的成本比较高,那么大量的请求都会直接落到数据库上,导致数据库压力过大。
避免缓存击穿
可以通过以下方法避免缓存击穿:
- 在缓存中设置过期时间,当数据过期后,会从数据库中重新加载到缓存中。
- 使用加锁机制,当某个数据正在被更新时,其他请求会被阻塞,直到数据更新完成后才会被解锁。
- 使用缓存预热机制,在系统启动时,将热点数据预先加载到缓存中。
避免缓存雪崩
可以通过以下方法避免缓存雪崩:
- 使用冗余缓存,将热点数据缓存在多个不同的缓存节点上。
- 使用异步刷新机制,当某个缓存节点失效时,可以异步将数据刷新到其他缓存节点上。
- 使用分布式锁,当多个缓存节点同时失效时,可以使用分布式锁来保证只有一个缓存节点进行数据刷新。
避免缓存穿透
可以通过以下方法避免缓存穿透:
- 在缓存中设置一个默认值,当数据不存在时,可以返回默认值。
- 使用布隆过滤器,布隆过滤器可以判断某个数据是否存在于缓存中,如果不存在,则可以直接返回。
- 使用缓存预热机制,在系统启动时,将可能不存在的数据预先加载到缓存中。
终端系统分配 Ip+端口适配 Netty 服务端,
- Netty【】 动态扩容 X
- Netty 的核心组件 X
- BossGroup, WorkGroup
- Channel ChannelPipeline EventLoop
- Selector
- 如何解决粘包的问题【】X
- TCP 的粘包的问题【拼接】
- 20W 链接风爆 X
Docker Image 的知识
Spring Service @Transactional Spring AOP 的对 private ,保护, public
SQL 优化 explain 的执行计划
HashTable HashMap 的是每天 期望的 17~18 ,