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 ,

comments powered by Disqus