《大型网站技术架构-核心原理与案例分析》阅读记录(第一章)

本文概述了大型网站架构的演化过程,从最初的性能提升(应用、数据库分离),到使用缓存、负载均衡和数据库读写分离,再到CDN和分布式服务的引入,以及业务拆分和使用非关系数据库技术。强调了随业务发展和适应性的价值观,同时指出了设计误区。
摘要由CSDN通过智能技术生成

第一篇 概述

第一章 大型网站架构演化

1.1 大型网站软件系统的特点

高并发,大流量

高可用

海量数据

用户分布广泛,网络情况复杂

安全环境恶劣

需要快速变更,频繁发布

渐进式发展

1.2 大型网站架构演化发展历程

1.2.1 初始阶段

越来越多用户访问,导致应用系统性能越来越差,服务器存储空间不足。这时就需要将应用和数据分离。

1.2.2 应用服务和数据服务分离

随着用户逐渐增多,数据库访问压力太大,导致访问延迟,进一步影响网站性能,用户体验受到影响。这是需要增加缓存来缓解数据库压力。

1.2.3 使用缓存改善网站性能

本地缓存:访问更快,受应用服务器内存限制,缓存数据量有限,还会出现跟应用程序抢内存的情况。

远程分布式缓存:不受内存限制,但限制于网络。

数据库压力得到缓解,但是单一的应用服务器能够处理的请求连接有限,在网站访问高峰期,应用服务器成为了整个网站的瓶颈。这时需要使用应用服务器集群来改善网站的并发处理能力。

1.2.4 使用应用服务器改善网站的并发处理能力

负载均衡调度服务器:负责将访问请求分发到应用服务器集群中的任何一台服务器上

网站达到一定规模后,数据库负载压力过大将再一次成为网站瓶颈。这时可以采用读写分离的方式来解决问题。

1.2.5 数据库读写分离

网站利用主从数据库的功能,实现数据库读写分离,从而改善数据库负载压力。

数据访问模块:通过该模块将数据库的使用对应用透明,不需要管数据库侧是如何实现的。

由于中国复杂的网络环境,不同地区访问网站时,速度差别也很大。为了提供更好的用户体验,留住客户,引入CDN和反向代理技术,加速网站的访问速度。

1.2.6 使用方向代理和CDN加速网站响应

CND服务器:部署在网络提供商的机房,是用户在请求网站时,可以从距离自己最近的网络提供商机房获取数据

反向代理服务器:部署在网站的中心机房,当用户请求到达机房后,首先访问反向代理服务器,如果反向代理服务器中缓存了用户请求的资源,则直接返回给用户

随着网站业务的发展仍然不满足需求时,分布式数据库是网站数据库拆分的最后手段,只有在单表数据规模非常庞大的时候才使用。一般网站更常用的是业务分库,将不同业务的数据库部署在不同服务器上。

12.7 使用分布式文件系统和分布式数据库系统

随着网站业务越来越复杂,对数据存储和检查的需求也越来约复杂,网站可以采用非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎。

12.8 使用NoSQL和搜索引擎

NoSQL:传统的关系型数据库在处理海量数据时性能会收到限制,NoSQL能更好的应对这种情况

搜索引擎:快速高效的检索出大量数据,提供网站的搜索功能和用户体验

大型网站发展到这里,业务场景日益复杂,可以采用分而治之的手段将网站业务分成不同的产品线。如大型购物网站就会将首页、商铺、订单、买家、卖家等拆成不同的产品线,分归不同的业务团队负责。具体到技术,则将一个网站拆分多个不同应用,每个应用独立部署。

12.9 业务拆分

消息队列:可以在应用之间进行异步通信,将消息从一个应用程序传递到另一个应用程序。它可以缓解高负载时的压力,提高应用程序的可伸缩性和可用性。当一个应用程序需要向另一个应用程序发送消息时,它将消息放入队列中,而不需要直接与另一个应用程序进行通信。另一个应用程序则可以从队列中获取消息并处理它。这种方式可以减少应用程序之间的直接依赖,提高系统的可靠性和灵活性。

随着业务越拆越小,存储系统越来越大,应用系统复杂度呈指数级增加,部署维护越来越困难。这个时候可以通过分布式服务调用公共业务服务完成具体业务操作,应用系统只需要管理用户界面即可。

1.2.10 分布式服务

1.2章节小结

1、(初步)将应用、数据库、文件系统等分离,减小服务器压力,提高性能

2、(成长)引入缓存机制(本地缓存、远程分布式缓存),减小数据库压力,提高性能

3、(成长)使用负载均衡+应用服务器集群的方式来应对高并发访问

4、(成长)采用数据库主/从复制的功能,实现读写分离,进一步减小数据库压力

5、(成长)为了更快的响应用户,留住用户,可以加入CDN和反向代理的技术,实现这一目标

6、(深入)当数据越来越庞大,单表数据非常庞大时,可以将数据库升级至分布式数据库,来再一次的减小数据库压力

7、(深入)业务日益复杂后,可以将业务拆分到不同的产品线,不同团队负责,独立部署

8、(深入)随着业务越拆越小,维护逐渐困难,不同业务存在相同业务功能。这时可以提取公共业务服务,前置应用系统只管用户界面,公共业务服务器负责完成具体业务操作

1.3 大型网站架构演化的价值观

1、逐渐演化

2、随业务发展而变化

在网站很小的时候去追求网站架构是舍本逐末,得不偿失。小网站最需要做的是为了提供更好的服务来创造价值,得到用户认可,活下去,野蛮生长。

1.4 网站架构的设计误区

1、追求大公司的解决方案

大公司的解决方案很成功,但不一定适合

2、为了技术而技术

脱离业务的技术,毫无意义

3、企图用技术解决所有问题

技术是用来解决业务问题的,而业务的问题,也可以通过业务的手段来解决。例子:12306从零点秒杀售票方式更换成了分时段售票,引入排队机制。这其实就是用业务手段控制了并发访问的量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值