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

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

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

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

 

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

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

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

 

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

 

 

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

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

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

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

 

相关文章
|
6月前
|
Java 开发者 微服务
Java企业应用软件系统架构演变史
Java企业应用软件系统架构演变史
94 0
|
缓存 运维 负载均衡
架构概论及架构演变史
架构概论及架构演变史
155 0
架构概论及架构演变史
|
存储 缓存 负载均衡
高性能、高可用平台架构演变史
原文:高性能、高可用平台架构演变史 开篇概述 在如今移动互联网、互联网+、大数据的时代,各类的互联网网站、平台异常突起,如同雨后春笋,有种“忽如一夜春风来,千树万树梨花开”感觉。 对于移动互联网时代的平台来说,用户的体验感是否良好?平台的稳定性是否良好?估计是对所有互联网平台来说两大头等要素吧,的确,移动互联网时代,流量就是市场价值,说白了就是收益,就是RMB,失去了流量,那么你也就失去了赚取收益的机会与机遇。
1595 0
|
NoSQL 关系型数据库 MySQL
网站平台架构演变史(五) - 总结
在大环境下的数据库主要有两种情况会出现负重过载: 1. 海量数据的实时统计,比如报表统计 2. 数据库连接数不够用,网站瞬时访问数过大 在这次分享会上有人提出了mysql集群的概念,其实mysql集群用的并不多,因为mysql用来做集群维护成本实在太高了,而且据我了解没有几个大项目才用了mysql集群,正式投入生产环境的几乎没有。
866 0
|
搜索推荐 大数据 数据库
网站平台架构演变史(四) - 水平拆分的查询
之前在讲表拆分的时候氛围垂直拆分和水平拆分 垂直拆分的查询其实不难,就是从单表变为了多表,而大部分情况下只是对主表的查询多,从表的查询会很少用到,这样的情况下关联查询不需要太多的考虑 水平拆分之前讲了大数据量的情况下根据历史时间来查询,那么今天来说另外一种,还有一只是根据主键id取模后根据这样的规则...
917 0
|
新零售 存储 大数据
网站平台架构演变史(三) - 数据库表的查询优化
上篇说道了数据库读写分离,对于大型网站来说这么说是十分有必要的。数据库在整个互联网架构中担当的角色无法有两个,存储和运算,很多时候这两个是并存的,但是在后期,对于上亿条数据来说,让数据库既要存储,又要运算,那么是这是不可行的,为了保证性能,我们仅仅只需要最大化利用DB的存数就行了,连数据库之间的外键管理都不需要,只要有对应的id即可。
931 0
|
XML 存储 数据库
窥探QQ基础数据库架构演变史
作为腾讯最核心最基础的后台服务之一,QQ基础数据库是存储QQ用户帐户信息和关系链信息的海量集群,它承载了百万级每秒的访问量、十亿级的账户数、百亿级关系链。如此大规模的集群,它是如何从300万的数量级一步一步演变而来?在它数据量不断增长的过程中,它经历了哪些困难,又是如何解决的?如今,它的架构是怎么样的?4月10日晚,腾讯大讲堂《QQ基础数据库架构演变之路》活动在武汉人文馆主厅举办。
1340 0
|
6天前
|
弹性计算 Kubernetes Cloud Native
云原生架构下的微服务设计原则与实践####
本文深入探讨了在云原生环境中,微服务架构的设计原则、关键技术及实践案例。通过剖析传统单体架构面临的挑战,引出微服务作为解决方案的优势,并详细阐述了微服务设计的几大核心原则:单一职责、独立部署、弹性伸缩和服务自治。文章还介绍了容器化技术、Kubernetes等云原生工具如何助力微服务的高效实施,并通过一个实际项目案例,展示了从服务拆分到持续集成/持续部署(CI/CD)流程的完整实现路径,为读者提供了宝贵的实践经验和启发。 ####
|
3天前
|
监控 安全 应用服务中间件
微服务架构下的API网关设计策略与实践####
本文深入探讨了在微服务架构下,API网关作为系统统一入口点的设计策略、实现细节及其在实际应用中的最佳实践。不同于传统的摘要概述,本部分将直接以一段精简的代码示例作为引子,展示一个基于NGINX的简单API网关配置片段,随后引出文章的核心内容,旨在通过具体实例激发读者兴趣,快速理解API网关在微服务架构中的关键作用及实现方式。 ```nginx server { listen 80; server_name api.example.com; location / { proxy_pass http://backend_service:5000;

热门文章

最新文章