构建高可用系统:策略之匙,解锁数字世界无障碍之门

本文最后更新于:6 个月前

破冰

  • 这部分内容,以目前我的实力还远远不够写出技术文章
  • 只好是从优秀的大佬文章中学习,积累经验,以期在未来的工作生活中逐渐提高自己的水平
  • 🥇 推荐阅读:(2023/10/25晚)
🔥 限流:
👏 异步调用:
🍜 熔断降级:
🍖 缓存:
🍛 主从分离:[08 数据库优化方案(一):查询请求增加时,如何做主从分离? (lianglianglee.com)](https://learn.lianglianglee.com/专栏/高并发系统设计40问/08 数据库优化方案(一):查询请求增加时,如何做主从分离?.md)
🥣 分库分表:[09 数据库优化方案(二):写入数据量增加时,如何实现分库分表? (lianglianglee.com)](https://learn.lianglianglee.com/专栏/高并发系统设计40问/09 数据库优化方案(二):写入数据量增加时,如何实现分库分表?.md)
  • 推荐看公众号:分库分表带来了什么问题?(苏三说技术)(2023/11/11早)

精髓所在

思考

  • 今天是 2024 年元旦,记录一下我对高并发系统的理解吧

设计目标

  • 高性能、高可用、可扩展

设计方法

  • 缓存、异步、横向扩展

缓存

Redis

CDN 内容分发网络

异步

横向扩展

一体化服务架构

分布式服务架构

分库分表

分库分表带来什么问题?

单表数据量过大,查询性能变差 -> 水平分表 -> 分片键 -> 根据 id 范围(写热点问题)-> 根据 id 取模(数据迁移)

-> 两者结合:在 id 范围分表中,引入取模分表(数据量增大,查询普通索引列 / 非分片字段,读扩散问题

-> 建立新表,以该普通索引为分片键:查询该字段所在 ids,再拿 ids 查询原表(迅速定位,减少查询次数

->👆 倒排索引思想:接入 ES,使用 canal 监听 MySQL binlog 日志变更,实时同步数据到 ES

-> tidb:分布式数据库,根据 id 范围分片、普通索引分片(2023/11/11早)

限流

🔥 什么是限流? (2023/11/11午)

限流,又称流量控制。限制到达系统的并发请求数,是的系统能够正常地处理部分用户的请求,用来保证系统的稳定性。限流会不可避免的造成用户请求变慢或者被拒的情况,从而影响用户体验

所以说,限流是需要在用户体验系统稳定性之间做平衡的

限流的本质是:因为后端处理能力有限,需要截掉超过处理能力之外的请求,亦或是为了均衡客户端对服务器端资源的公平调用,防止一些客户端饿死

限流算法

计数限流

固定窗口限流

滑动窗口限流

漏桶算法

令牌桶算法

亮点集锦


构建高可用系统:策略之匙,解锁数字世界无障碍之门
http://example.com/2023/10/24/构建高可用系统:策略之匙,解锁数字世界无障碍之门/
作者
Memory
发布于
2023年10月24日
更新于
2023年11月11日
许可协议