标签:
大型网站系统架构的演化
前言:
一个成熟的大型网站系统架构,比如淘宝,京东等的系统架构不是开始设计就具备完整的高性能、高可用、安全等特性。
它是随着客户量的增加,业务功能的扩展而逐渐完善起来的,在这个模式中,开发模式,技术架构,团队规模,设计思想都在
逐渐的完善。
所以系统架构是随着业务扩展而逐渐完善起来的,并不是一蹴而就。
最开始的网站架构:
应用、文件、数据分离:
随着业务的扩展,一台服务器已经无法满足用户的需求,所以要把应用、数据库、文件各自部署到不通的服务器上
并根据服务器的不同配置不同的硬件、已达到最佳的性能效果
利用缓存改变网站性能:
在硬件优化的同时,也要考虑到软件的优化 ,大部分的网站系统中,都会使用到缓存技术来改善应用的性能,使用缓存
主要源于热点数据的存在,大部分网站的访问都会遵循28规则(即80%的访问量是访问的20%的数据),所以我们对热点
数据进行缓存,减少访问热点数据的路径,以此来改善应用的性能,提高用户体验。
缓存实现的方式,常见的是本地缓存、分布式缓存、DNS、反向代理。
本地缓存: 是讲数据缓存在本地机器上,本地缓存的特点就是速度快,
但是因为本地空间有限,所以缓存的数据也是很有限的。
分布式缓存: 是缓存在分布式系统上,对比本地缓存,分布式的有点
就是能缓存海量的数据,而且易扩展。速度没有本地缓存快。
常见的分布式缓存软件有,memcached、redis。
使用集群来改善应用服务器的性能:
应用服务器作为网站的入口,会承担大量的请求,我们要通过增加应用服务器集群,
来分担请求数。应用服务器前面部署负载均衡服务器来调度用户请求。根据分发策略,
讲请求分发到应用服务器节点。
常用的负载均衡的技术硬件有F5,软件有LVS,eginx,HAProxy,
LVS: 是四层负载均衡,根据目标地址和端口选择内部服务器。
nginx:是7层负载均衡,可以根据报文内容选择内部服务器,
因此LVS 分发路径优于nginx和HAproxy,而nginx和HAproxy更
具有配置性,如:(可以用来做动静分离,根据请求报文,选择是访问
静态资源服务器还是应用服务器。)
数据库读写分离与分库分表:
随着用户量的增加,数据库成为了最大的颈瓶,改善数据库常用的手段就是数据库读写分离与分库分表
读写分离:就是讲数据库分为读库与写库,
分库分表:分为垂直分割与水平分割。
水平切分,就是对数据库最大的表进行拆分。
垂直切分,是根据业务的不同来切换
使用CDN与反向代理来提高网站的性能:
比较专业的CDN运营商有蓝汛、网宿。
反向代理:
反向代理是部署在网站的机房里,当用户请求达到时首先访问反向代理服务器,
反向代理服务器讲数据缓存的数据返回的用户。如果没有缓存数据,反向代理服务器
才需要向服务器请求数据,然后返回给用户
使用分布式文件系统:
用户一天天的增加,业务量越来越大,产生的文件越来越多,就要使用到分布式文件系统,
单台服务器已经不能满足需求,就要使用分布式文件系统,常用的分布式文件系统就是NFS
使用nosql与搜索引擎
对于海量的数据查询,我们使用nosql加上搜索引擎可以达到更好的性能,并不是所有的
数据都要放在关系型数据库中,常用的nosql数据库有mongodb与redis
将应用服务器进行业务拆分:
随着业务的扩展,应用程序变的非常的臃肿,这时我们需要对应用程序进行业务拆分,
每个业务应用负责相对独立的业务运作。
业务之间通过消息进行通信或共享数据库来实现。
搭建分布式服务:
我们发现,各个业务模块都会使用一些基本的业务服务,
例如用户服务,订单服务,支付服务,安全服务,这些服务
支持了各个业务应用的基本要求,我们将这些服务抽取出来,
使用分布式框架搭建分布式服务,比如淘宝的dubbo是一个好的选择。
标签:
原文地址:http://www.cnblogs.com/Super-Man/p/4586186.html