- 高并发系统设计
- 垂直扩展:增加硬件资源、数据库优化、应用优化
- 水平扩展:缓存(redis、memcached、cdn)、异步解耦(消息队列、线程池)、拆分策略(分库分表、微服务拆分)、负载均衡(Nginx等)
- 高可用设计
- 限流:令牌桶算法、漏桶、滑动窗口
- 熔断器:
- 降级:读服务降级(写回缓存数据/默认值)、写服务降级(延迟写入/本地队列)、非核心功能关闭
- 多活结构:数据容灾
- 缓存设计
- 缓存策略:cache-aside(先缓存,miss后读db并写缓存,适用于读多写少的场景)、write-through(同步写缓存和DB,适用于数据一致性要求高的场景)、write-behind(异步写DB,适用于写并发高的场景)、read-from-replic(读从库,适合主库压力大的分库分表场景)
- 缓存问题:缓存穿透、缓存击穿、缓存雪崩
- redis集群:主从复制(读写分离)、sentinel(故障自动切换)、cluster(数据分片)
- 消息队列
- 常用场景:异步解耦、削峰填谷、系统间通信(跨服务消息传递)
- 处理问题:消息可靠性、消息顺序性、消息丢失的问题、消息幂等性 5.数据库设计:
- 读写分离:主从复制
- 分库分表:垂直拆分、水平拆分(按ID范围、按时间、按Hash)、
- 分页问题:深度分页优化(游标分页)
- 索引设计:B+Tree(范围查询、等值查询)、Hash(精确匹配)、复合索引(多条件查询,遵循最左原则)、全文索引(文本搜索)
- 微服务架构
- 服务拆分:按业务拆分。。。
- 服务治理:注册中心、配置中心、服务网关(统一入口、路由、鉴权、网关层限流)、负载均衡、链路追踪
- 服务间通信:同步(基于Http协议:如OpenFeign、gRpc等;基于二进制协议,TCP直连:如Dubbo等。适合实时性要求高的场景)、异步MQ(解耦,削峰)
-
分布式ID生成:UUID、数据库自增、snowflake、雪花算法变种
-
幂等性接口设计: