由于最近经常用简书,于是开始把之前在其他平台写的文章搬到这里。并总结形成专辑,希望对大家有用。
成熟的大型网站架构往往具有如下特点:
1. 分层:将网站根据逻辑特点横向切分分成几层,最常见的是表示层、逻辑层、数据层。上层依赖调用下层。
2. 分割:将不同的功能和服务进行分割,高内聚低耦合。例如将购物、论坛、搜索、广告分割成不同的应用,部署在不同的服务器上。
3. 分布式:将不同的模块部署在 不同的服务器上,通过远程调用协同工作。分为应用的分布式部署和数据的分布式部署。这种架构由于依赖网络,因此也存在性能问题,另外由于数据有多个副本,因此存在数据一致性问题,而且模块众多,调用复杂,维护困难。
4. 集群:多台服务器部署相同的应用构成集群,通过负载均衡设备对外提供服务,提高了系统的并发性和可用性。
5. 缓存:缓存是改善软件性能的第一手段。它可以加快数据访问速度,减轻应用和数据存储的负载压力。其本质是将数据放在距离计算最近的位置。缓存可以放置在CDN、反向代理、本地和分布式远程节点上。使用缓存的前提是 1. 数据访问热点不均衡;2. 数据不会很快过期。
6. 异步:在单机系统中,异步表现为单机的多线程共享内存限制。在分布式系统中,异步表现为分布式消息队列。异步的主要作用是:1. 提高系统的可用性;2. 加快网站访问速度;3. 削峰。
7. 冗余:系统通过使用多个数据库或多个服务器,以便在故障时通过快速切换确保系统的可用性。对于服务而言,可以使用多个服务程序构成集群;对于数据库而言,数据库使用主从分离和热备份。
8. 自动化:1. 自动化代码管理;2. 代码版本控制;3. 代码分支创建合并;4. 自动化测试;5. 自动化监控;6. 自动化资源分配。
网友评论