分布式系统架构落地与瓶颈突破,你值得拥有( 二 )


除此之外,我们在使用电脑进行办公、娱乐时,也会高频率地与配置信息打交道,比如,通过操作系统的控制面板来设置显示器的分辨率、鼠标的双击速度 ,以及区域和语言设置等,这些都属于配置信息,所以如果你告诉我你从未接触过配置信息,那么我一定会摇摇头对你说这不可能 。
大促场景下热点数据的读/写优化案例在秒杀、限时抢购这种大促场景下,由于峰值流量较大,大量的并发读/写操作一定会导致后端的存储系统产生性能瓶颈 。
前面已经讲解过,提升单机处理能力最有效的办法就是采用集群技术对服务器进行扩容,只要系统能够具备良好的伸缩性,那么从理论上来说,其容量便可以是无限的 。
在此需要注意 ,大促场景下因热点数据导致的单点瓶颈已经不再是简单地通过横向扩容就能够顺利解决的,尽管对于读操作我们可以将热点数据缓存在分布式缓存中以达到提升系统 QPS 的目的,但是缓存系统的单点容量还是存在上限的 ,因此应对大促场景下的峰值流量仍显得杯水车薪 。
除此之外,由于热点数据的写操作无法直接在缓存中完成,那么这必然会引起大量的线程相互竞争 nnoDB 的行锁 。并发越大时,等待的线程就越多,这会严重影响数据库的 TPS ,导致 RT 线性上升,最终可能引发系统出现雪崩 。
数据库分库分表案例大型网站几乎时时刻刻都在接受着高并发和海量数据的洗礼,随着用户规模的线性上升,单库的性能瓶颈会逐渐暴露出来,由于数据库的检索效率越来越慢,导致生产环境中产生较多的慢速 SQL 。
对于非结构化的数据,可以将其存储在 NoSQL数据库中来提升性能,但是重要的业务数据,仍然要落盘在关系型数据库(如 MySQL数据库)中 。
那么如何提升关系型数据库的并行处理能力和检索效率就成为了架构师需要思考和解决的棘手问题,并且单库如果岩机,业务系统也就随之瘫痪了 。
因此,在互联网场景下,架构师务必要确保后端存储系统具备高可用性和高性能,为了解决这些问题,目前互联网场景下常见的做法便是对数据库实施分库分表,即Sharding 改造 。




推荐阅读