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

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

高并发系统设计40问

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

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

高并发系统设计40问

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

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

高并发系统设计40问

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

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

高并发系统设计40问

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

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

高并发系统设计40问

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

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

高并发系统设计40问

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

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

高并发系统设计40问

9、数据库优化方案(二):写入数据量增加时,如何实现分库分表?

你好,我是唐扬。 前一节课,我们学习了在高并发下数据库的一种优化方案:读写分离,它就是依靠主从复制的技术使得数据库实现了数据复制为多份,增强了抵抗大量并发读请求的能力,提升了数据库的查询性能的同时,也提升了数据的安全性。当某一个数据库节点,无论是主库...

高并发系统设计40问

8、数据库优化方案(一):查询请求增加时,如何做主从分离?

你好,我是唐扬。 上节课,我们用池化技术解决了数据库连接复用的问题,这时,你的垂直电商系统虽然整体架构上没有变化,但是和数据库交互的过程有了变化,在你的Web工程和数据库之间增加了数据库连接池,减少了频繁创建连接的成本,从上节课的测试来看性能上可以提...

高并发系统设计40问

7、池化技术:如何减少频繁创建数据库连接的性能损耗?

在前面几节课程中,我从宏观的角度带你了解了高并发系统设计的基础知识,你已经知晓了,我们系统设计的目的是为了获得更好的性能、更高的可用性,以及更强的系统扩展能力。 那么从这一讲开始,我们正式进入演进篇,我会再从局部出发,带你逐一了解完成这些目标会使用到...

高并发系统设计40问