码迷,mamicode.com
首页 > Web开发 > 详细

大型网站系统架构的演化

时间:2015-06-18 17:04:26      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

大型网站系统架构的演化

    前言:

        一个成熟的大型网站系统架构,比如淘宝,京东等的系统架构不是开始设计就具备完整的高性能、高可用、安全等特性。

       它是随着客户量的增加,业务功能的扩展而逐渐完善起来的,在这个模式中,开发模式,技术架构,团队规模,设计思想都在

      逐渐的完善。

      所以系统架构是随着业务扩展而逐渐完善起来的,并不是一蹴而就。

 

    最开始的网站架构:

 

      技术分享

      应用、文件、数据分离:

 

       随着业务的扩展,一台服务器已经无法满足用户的需求,所以要把应用、数据库、文件各自部署到不通的服务器上

       并根据服务器的不同配置不同的硬件、已达到最佳的性能效果

 

    利用缓存改变网站性能:

 

      在硬件优化的同时,也要考虑到软件的优化 ,大部分的网站系统中,都会使用到缓存技术来改善应用的性能,使用缓存

      主要源于热点数据的存在,大部分网站的访问都会遵循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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!