架构师训练营 Week 04 作业

用户头像
Wancho
关注
发布于: 2020 年 07 月 01 日

一个典型的大型互联网应用系统使用的技术方案和手段,主要解决的问题



数据分离

缓存

集群

数据库读写分离,主从复制

反向代理,CDN

分布式数据库(分表、切片)分布式文件系统

NoSQL,搜索引擎

业务拆分(将一个应用拆分成多个服务)

微服务,中台化



我认为有三个主要手段:拆分、集群、缓存

1 拆分

1.1 应用数据分离

为了解决“越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足”的问题。

1.2 数据库读写分离(主从复制)

在大多数的网络应用中,读的频率往往高于写。读写分离可以消除读写锁的冲突,从而提升数据库性能。

1.3 分布式数据库(分表、切片)、分布式文件系统

单台服务器,存放或者处理数据的能力,是有限的。分布式数据库、分布式文件系统,将数据分散储存在不同的物理机上,使系统可以通过增加服务器的方式增加存储空间。

分布式数据库,要先分离数据库表到各自服务器之后,再将数据库表分片,同一个数据库表分别部署在不的服务器中。

1.4 业务拆分

将一个应用拆分成多个服务、组件,组件之间通过网络连接,彼此组成一个整体。如将淘宝拆分成首页、卖家、买家,每个业务由不同的部门开发维护,部署到不同的服务器集群,以达到各团队有序开发。

1.5 微服务、中台化

提取系统的公共服务,单独维护,避免各组件各自依赖公共服务代码。如将淘宝的用户功能独立出来,部署在专有的服务器上,脱离具体业务,从而使系统的复用性提高,也更容易将其使用到新的系统中去。

1.6 数据冷热分离

即使把不常用的数据存放在大容量服务其中,而常用数据存放在高速高性能的服务器(带有SSD固态硬盘)。比如,在电商系统中,可以将近一个月的用户订单存放在高速服务中,供用户随时查询,而一个月以前的订单,在用户查询时,则需要往备份服务器。通过以上措施,可以提高硬件的使用效率,降低成本。

2 集群

集群的思路是,使用多个服务器,部署同样功能的服务,从而提高该服务的吞吐能力。常用的集群有,应用服务器、数据库服务器、缓存服务器等。配置集群的作用,主要是提高可用性和可缩放性。可用性,是在一台或者多台服务器宕机时,依然有冗余的服务器可以继续提供服务,同时使不停机升级系统成为可能。可缩放性,是指在系统遇到性能瓶颈时,可以通过增加服务器来无限扩大系统的处理能力。

3 缓存

3.1 本地缓存,远程分布式缓存

由于硬盘与内存之间的差距不是一点半点,所有当好不容易从数据库或者文件系统中读得的数据,可以存放在内存中,供下次访问使用。

3.2 反向代理,CDN

在访问应用服务之前,增加特殊的缓存服务器,可以提高用户加载速度,降低应用服务器的流量负载。如,把照片等资源,存放在反向代理服务器、或者网络运营商的CDN。



用户头像

Wancho

关注

还未添加个人签名 2020.02.28 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 Week 04 作业