高并发架构 消息队列 为什么使用消息队列? 优点 解耦:通过一个 MQ,Pub/Sub 发布订阅消息这么一个模型,A 系统就跟其它系统彻底解耦了。 异步:任务发到消息队列,由消费者异步消费 削峰:任务发到消息队列,由消费者决定消费速度 缺点 系统可用性降低:MQ 挂了如何处理?即如何保证消息队列的高可用? 系统复杂度提高:怎么保证消息没有重复消费?怎么处理消息丢失的情况?怎么保证消息传递的顺序性? 一致性问题:A 系统处理完直接返回成功,发到消息队列后供 B、C、D 消费,如果 B、D 成功、C… »
分布式系统、单体系统区别 分布式系统是对单体系统的一种改进,但这种改进同样也带来了复杂度和实现难度。 背景 单体系统存在以下情况不能应对: 业务复杂度和产品迭代速度 处理高并发、大数据量的用户请求 代码维护和团队协作 但是分布式系统引入了新问题 网络传输的三态性 数据的一致性 可用性 // TODO https://juejin.cn/book/7106442254533066787/section/7106701956340514857 »
背景知识 系统设计 系统设计主题:从这里开始 认识以下一般性原则 可扩展性视频讲座 哈佛大学可扩展性讲座 垂直扩展(Vertical scaling) 水平扩展(Horizontal scaling) 缓存 负载均衡 数据库复制 数据库分区 可扩展性文章 Clones 数据库 缓存 异步 接下来的步骤 接下来,我们将看看高阶的权衡和取舍: 性能与可扩展性 延迟与吞吐量 可用性与一致性 记住每个方面都面临取舍和权衡。 然后,我们将深入更具体的主题,如 DNS、CDN… »