10、发号器:如何保证分库分表后ID的全局唯一性?

你好,我是唐扬。 在前面两节课程中,我带你了解了分布式存储两个核心问题:数据冗余和数据分片,以及在传统关系型数据库中是如何解决的。当我们面临高并发的查询数据请求时,可以使用主从读写分离的方式,部署多个从库分摊读压力;当存储的数据量达到瓶颈时,我们可以...

高并发系统设计40问

11、NoSQL:在高并发场景下,数据库和NoSQL如何做到互补?

你好,我是唐扬。 前几节课,我带你了解了在你的垂直电商项目中,如何将传统的关系型数据库改造成分布式存储服务,以抵抗高并发和大流量的冲击。 对于存储服务来说,我们一般会从两个方面对它做改造: 1.提升它的读写性能,尤其是读性能,因为我们面对的多是一些读...

高并发系统设计40问

12、缓存:数据库成为瓶颈后,动态数据的查询要如何加速?

你好,我是唐扬。 通过前面数据库篇的学习,你已经了解了在高并发大流量下,数据库层的演进过程以及库表设计上的考虑点。你的垂直电商系统在完成了对数据库的主从分离和分库分表之后,已经可以支撑十几万DAU了,整体系统的架构也变成了下面这样: 从整体上看,数...

高并发系统设计40问

13、缓存的使用姿势(一):如何选择缓存的读写策略?

上节课,我带你了解了缓存的定义、分类以及不足,你现在应该对缓存有了初步的认知。从今天开始,我将带你了解一下使用缓存的正确姿势,比如缓存的读写策略是什么样的,如何做到缓存的高可用以及如何应对缓存穿透。通过了解这些内容,你会对缓存的使用有深刻的认识,这样...

高并发系统设计40问

14、缓存的使用姿势(二):缓存如何做到高可用?

你好,我是唐扬。 前面几节课,我带你了解了缓存的原理、分类以及常用缓存的使用技巧。我们开始用缓存承担大部分的读压力,从而缓解数据库的查询压力,在提升性能的同时保证系统的稳定性。这时,你的电商系统整体的架构演变成下图的样子: 我们在Web层和数据库层...

高并发系统设计40问

15、缓存的使用姿势(三):缓存穿透了怎么办?

你好,我是唐扬。 我用三节课的时间带你深入了解了缓存,你应该知道对于缓存来说命中率是它的生命线。 在低缓存命中率的系统中,大量查询商品信息的请求会穿透缓存到数据库,因为数据库对于并发的承受能力是比较脆弱的。一旦数据库承受不了用户大量刷新商品页面、定向...

高并发系统设计40问

16、CDN:静态资源如何加速?

你好,我是唐扬。 前面几节课,我带你了解了缓存的定义以及常用缓存的使用姿势,你应该对包括本地缓存、分布式缓存等缓存组件的适用场景和使用技巧有了一定了解了。结合在14讲中我提到的客户端高可用方案,你会将单个缓存节点扩展为高可用的缓存集群,现在,你的电商...

高并发系统设计40问

17、消息队列:秒杀时如何处理每秒上万次的下单请求?

你好,我是唐扬。 在课程一开始,我就带你了解了高并发系统设计的三个目标:性能、可用性和可扩展性,而在提升系统性能方面我们一直关注的是系统的查询性能,也用了很多的篇幅去讲解数据库的分布式改造,各类缓存的原理和使用技巧。究其原因在于我们遇到的大部分场景都...

高并发系统设计40问

18、消息投递:如何保证消息仅仅被消费一次?

你好,我是唐扬。 通过上一节课,我们在电商系统中增加了消息队列对峰值写流量做削峰填谷,对次要的业务逻辑做异步处理,对不同的系统模块做解耦合。因为业务逻辑从同步代码中移除了,所以我们也要有相应的队列处理程序来处理消息、执行业务逻辑,这时你的系统架构变成...

高并发系统设计40问

19、消息队列:如何降低消息队列系统中消息的延迟?

你好,我是唐扬。 学完前面两节课之后,相信你对在垂直电商项目中如何使用消息队列应对秒杀时的峰值流量已经有所了解。当然了,你也应该知道要如何做才能保证消息不会丢失,尽量避免消息重复带来的影响。**那么我想让你思考一下:**除了这些内容,你在使用消息队列...

高并发系统设计40问