Open ThomsonTang opened 7 years ago
使用应用服务器集群改善网站的并发处理能力:通过负载均衡调度服务器,将用户的请求分发给集群中不同的应用服务器处理,从而改善系统性能,实现系统的可伸缩性。
数据库读写分离:缓存可以使大部分读请求不必通过数据库,但仍有部分读请求和全部的写请求会访问数据库,达到一定的规模后,这同样会成为网站的瓶颈。于是利用数据库提供的主从热备功能,对写操作和读操作做不同的处理。应用程序在写数据的时候,访问主数据库,主数据库根据主从复制机制将数据同步到从数据库,这样应用程序读数据的时候,就可以直接访问从数据库。
使用反向代理和CDN加速网站响应:这两种方式的基本原理都是基于缓存机制实现的,其目标是尽早的将数据返回给用户。区别在于,CDN是部署在网络提供商的机房,用户可以从距离自己最近的提供商那里获取数据;而反向代理则是部署在网站的中心机房,用户请求到达后,会先查看反向代理服务器是否缓存该数据。这两种方式,一方面加快了用户访问速度,另一方面减轻了后端应用服务器的压力。
使用分布式文件系统和分布式数据库系统:即使对数据库做了读写分离以后,随着业务和用户的继续增加,把一台服务器分成两台的做法依旧无法满足需求,此时就应该考虑使用分布式系统。但需要注意的是,使用分布式数据库是网站数据库拆分的最后手段,只有当单表的数据规模非常庞大的时候才使用。否则更常用的做法是根据业务的不用,将不同业务的数据库部署在不同的物理机上。
使用NoSQL和搜索引擎:随着网站业务越来越复杂,网站需要采用一些非关系数据库技术如NoSQL和非数据库查询如搜索引擎。NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩性的分布式特性具有更好的支持。应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。
业务拆分:根据业务或产品线,将一个网站拆分成许多不同的应用,每个应用独立部署维护。应用之间可以通过一个超链接建立关系,也可以通过消息队列进行数据分发,当然最多的还是通过访问同一个数据存储系统来构成一个关联的完整系统。
分布式服务:将共用的业务提取出来,独立部署,比如用户管理、商品管理等。由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。
术语卡: 大型网站系统的特点
任意卡:大型网站架构演化历程
使用应用服务器集群改善网站的并发处理能力:通过负载均衡调度服务器,将用户的请求分发给集群中不同的应用服务器处理,从而改善系统性能,实现系统的可伸缩性。
数据库读写分离:缓存可以使大部分读请求不必通过数据库,但仍有部分读请求和全部的写请求会访问数据库,达到一定的规模后,这同样会成为网站的瓶颈。于是利用数据库提供的主从热备功能,对写操作和读操作做不同的处理。应用程序在写数据的时候,访问主数据库,主数据库根据主从复制机制将数据同步到从数据库,这样应用程序读数据的时候,就可以直接访问从数据库。
使用反向代理和CDN加速网站响应:这两种方式的基本原理都是基于缓存机制实现的,其目标是尽早的将数据返回给用户。区别在于,CDN是部署在网络提供商的机房,用户可以从距离自己最近的提供商那里获取数据;而反向代理则是部署在网站的中心机房,用户请求到达后,会先查看反向代理服务器是否缓存该数据。这两种方式,一方面加快了用户访问速度,另一方面减轻了后端应用服务器的压力。
使用分布式文件系统和分布式数据库系统:即使对数据库做了读写分离以后,随着业务和用户的继续增加,把一台服务器分成两台的做法依旧无法满足需求,此时就应该考虑使用分布式系统。但需要注意的是,使用分布式数据库是网站数据库拆分的最后手段,只有当单表的数据规模非常庞大的时候才使用。否则更常用的做法是根据业务的不用,将不同业务的数据库部署在不同的物理机上。
使用NoSQL和搜索引擎:随着网站业务越来越复杂,网站需要采用一些非关系数据库技术如NoSQL和非数据库查询如搜索引擎。NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩性的分布式特性具有更好的支持。应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。
业务拆分:根据业务或产品线,将一个网站拆分成许多不同的应用,每个应用独立部署维护。应用之间可以通过一个超链接建立关系,也可以通过消息队列进行数据分发,当然最多的还是通过访问同一个数据存储系统来构成一个关联的完整系统。
分布式服务:将共用的业务提取出来,独立部署,比如用户管理、商品管理等。由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。