网站平台架构演变史(二)

简介: 上篇文章大致降了网站架构的一个大致发展趋势,这篇咱们讲讲数据库。数据库在大并发的情况下是最容易出现问题的,往往都是由于写操作引发的网站访问缓慢或者崩溃,之前说过12306就是这个问题。大并发的时候,打个比方,上下班高峰期经常会堵车,我们把并发访问量当做车流量,某个路段路口比作数据库,某路口就这么大,3车道直行,而车流量巨大的时候就会引发大量车缓慢前行甚至不动,这个就是并发,交通瘫痪了嘛,数据库不也是一样瘫痪吗。

上篇文章大致降了网站架构的一个大致发展趋势,这篇咱们讲讲数据库。数据库在大并发的情况下是最容易出现问题的,往往都是由于写操作引发的网站访问缓慢或者崩溃,之前说过12306就是这个问题。

大并发的时候,打个比方,上下班高峰期经常会堵车,我们把并发访问量当做车流量,某个路段路口比作数据库,某路口就这么大,3车道直行,而车流量巨大的时候就会引发大量车缓慢前行甚至不动,这个就是并发,交通瘫痪了嘛,数据库不也是一样瘫痪吗。

 

之前我们讲的读写分离,就是一种解决方案,很多网站都是读操作大于写操作的,分开即可,就像车流量一样,转弯的提前在别的路口转弯,直行的不变。

那么当网站再进一步发展的时候,读写分离已经满足不了数据库的性能需求了,这个时候该怎么做呢?

1、分库,根据不同的业务把数据库切分,比如用户相关表和订单相关表分别放在user_db和order_db中,这样的做法可以很有效的减少数据库压力,但是这么做会增加业务的复杂度,比如分布式事务的最终一致性。在微服务架构中这是必须要解决的问题,再次不多说

 

2、表的水平拆分,很多企业都是这么做的,比如淘宝,人家水平拆分根据主键id取模后分别放在不同的表(或者库)中,举个栗子,我们自家的表示这样的

 

 

日期6位+随机10位字幕数字组合(分布式的根据算法产生的绝对唯一不重复主键),提取前六位数字取模,根据取模的数字来作为保存到不同表(库)中的依据

还有一种水平拆分是定时把一些不用的数据放进别的表中,冷热数据分离,这也是一种做法

3、表的垂直拆分,垂直拆分是指把数据库列,根据某些列被访问的频率高低,来决定,频率高的放在主表,频率低的放在从表,大家都有一个相同的主键,这是主从表的交集,便于管理和操作

好吧,到此,解决数据库瓶颈的手段大致如此,不论分库还是分表,最终的目的都是优化网站的性能。

 

相关文章
|
1月前
|
Java 开发者 微服务
Java企业应用软件系统架构演变史
Java企业应用软件系统架构演变史
28 0
|
缓存 运维 负载均衡
架构概论及架构演变史
架构概论及架构演变史
136 0
架构概论及架构演变史
|
存储 缓存 负载均衡
高性能、高可用平台架构演变史
原文:高性能、高可用平台架构演变史 开篇概述 在如今移动互联网、互联网+、大数据的时代,各类的互联网网站、平台异常突起,如同雨后春笋,有种“忽如一夜春风来,千树万树梨花开”感觉。 对于移动互联网时代的平台来说,用户的体验感是否良好?平台的稳定性是否良好?估计是对所有互联网平台来说两大头等要素吧,的确,移动互联网时代,流量就是市场价值,说白了就是收益,就是RMB,失去了流量,那么你也就失去了赚取收益的机会与机遇。
1486 0
|
NoSQL 关系型数据库 MySQL
网站平台架构演变史(五) - 总结
在大环境下的数据库主要有两种情况会出现负重过载: 1. 海量数据的实时统计,比如报表统计 2. 数据库连接数不够用,网站瞬时访问数过大 在这次分享会上有人提出了mysql集群的概念,其实mysql集群用的并不多,因为mysql用来做集群维护成本实在太高了,而且据我了解没有几个大项目才用了mysql集群,正式投入生产环境的几乎没有。
844 0
|
搜索推荐 大数据 数据库
网站平台架构演变史(四) - 水平拆分的查询
之前在讲表拆分的时候氛围垂直拆分和水平拆分 垂直拆分的查询其实不难,就是从单表变为了多表,而大部分情况下只是对主表的查询多,从表的查询会很少用到,这样的情况下关联查询不需要太多的考虑 水平拆分之前讲了大数据量的情况下根据历史时间来查询,那么今天来说另外一种,还有一只是根据主键id取模后根据这样的规则...
894 0
|
新零售 存储 大数据
网站平台架构演变史(三) - 数据库表的查询优化
上篇说道了数据库读写分离,对于大型网站来说这么说是十分有必要的。数据库在整个互联网架构中担当的角色无法有两个,存储和运算,很多时候这两个是并存的,但是在后期,对于上亿条数据来说,让数据库既要存储,又要运算,那么是这是不可行的,为了保证性能,我们仅仅只需要最大化利用DB的存数就行了,连数据库之间的外键管理都不需要,只要有对应的id即可。
907 0
|
存储 NoSQL 关系型数据库
[转载]大型网站应用中 MySQL 的架构演变史
没有什么东西是一成不变的,包含我们的理想和生活!MySQL作为一个免费的开源的关系型数据库,深受大家喜爱,从最初的无人问津到当下的去IOE,都体现出了MySQL举足轻重的作用。今天我们就从淘宝的发展来阐述MySQL在大型网站下的架构演变史! MySQL的可扩展性 架构的可扩展性往往和并发是息息相关,...
1637 0
|
XML 存储 数据库
窥探QQ基础数据库架构演变史
作为腾讯最核心最基础的后台服务之一,QQ基础数据库是存储QQ用户帐户信息和关系链信息的海量集群,它承载了百万级每秒的访问量、十亿级的账户数、百亿级关系链。如此大规模的集群,它是如何从300万的数量级一步一步演变而来?在它数据量不断增长的过程中,它经历了哪些困难,又是如何解决的?如今,它的架构是怎么样的?4月10日晚,腾讯大讲堂《QQ基础数据库架构演变之路》活动在武汉人文馆主厅举办。
1252 0
|
10天前
|
API 数据库 开发者
构建高效可靠的微服务架构:后端开发的新范式
【4月更文挑战第8天】 随着现代软件开发的复杂性日益增加,传统的单体应用架构面临着可扩展性、维护性和敏捷性的挑战。为了解决这些问题,微服务架构应运而生,并迅速成为后端开发领域的一股清流。本文将深入探讨微服务架构的设计原则、实施策略及其带来的优势与挑战,为后端开发者提供一种全新视角,以实现更加灵活、高效和稳定的系统构建。
18 0