• ∑ 分布式算法
  • 缓存
  • 分布式缓存(redis)
    • 高效原因?执行命令单线程,IO多线程。即单reactor多线程模式改进,将read/send使用IO多线程来处理。redis高性能
    • 高可用 redis-持久化
      • RDB(全量数据)
      • AOF(增量数据,类似顺序写的方式,会进行AOF指令重写,即类似合并指令等操作)
    • 数据复制(副本/分片)redis-数据复制
      • 主从同步 (主从复制),无法自动恢复,难在线扩容。需人工介入
      • Sentinel(哨兵模式)自动版主从复制。副本存储。
      • 集群模式,哈希槽进行数据分片。支持在线扩容。
    • 数据结构 redis-数据结构
      • string: 常用的缓存结构,incr等
      • list: 主要用来消息队列
      • hset: hash
      • geo: 经纬度位置
      • json:
  • 分布式锁
    • redis实现
      • SET lock_key unique_value NX PX 10000
        • lua实现原子性
        • 随机值,requestId,避免被其它锁释放
        • 需要过期时间,避免客户端发送异常,无释放。
        • 主从同步问题,需要考虑未同步之前挂了。采用官方redission方案。
        • 业务逻辑执行过长?需续签有效期。
      • redisson readlock(官方推荐)
        • 守护线程,延迟线程。 大部分redis加解锁成功,才算成功
    • zooKeeper
      • 临时顺序节点,监听watch。将最小的节点进行加锁。
      • 释放锁后,通过watch通知下一个锁。
  • 分布式id
    • leaf: 双Buffer+DB号段获取。
    • twitter的雪花算法
      • 时间回拨问题?
      • 机器id无分配回收问题
    • 美团的lefa 雪花算法
      • 时间回拨问题: 采用等待。如果差距过大,启动不了
      • workerId分配问题,采用zookeeper的顺序节点。
  • 分布式服务框架 § dubbo
  • 多副本拷贝?
    • 类似mysql的主从模式,通过binlog进行复制。
    • 类似redis,每个节点,存储部分solt的。 通过rdb和aof增量数据进行备份。
    • kafka类似redis,每个topic存储部分分区数据。 solt数据分片 + 副本
  • 限流组件/降级