构建高可用系统:策略之匙,解锁数字世界无障碍之门
本文最后更新于: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/构建高可用系统:策略之匙,解锁数字世界无障碍之门/