• 《大型网站技术架构:核心原理与案分析》阅读笔记01


      本书从性能、可用性、伸缩性、扩展性、安全性几个网站核心架构要素切入,全面地介绍了这些核心要素面临的问题域、理论基础及应对方案;对这几个方面进行系统地分析,结合目前成熟的解决方案,以及作者自己的工作经验,理论联系实际,踏实细致地提出合理的解决方案,非常值得我们学习和借鉴。

    1.大型网站架构演化

      大型网站软件系统的特点

        高并发,大流量;海量数据;高可用;用户分布广泛,网络情况复杂;安全环境恶劣;需求快速变更,发布频繁;渐进式发展。

      发展历程

        1.初始阶段的网站架构,只需要一台服务器;

        2.应用服务和数据服务分离,使用应用服务器,数据库服务器和文件服务器;

        3.使用缓存改善网站性能;

        4.使用应用服务器集群改善网站的并发处理能力;

        5.数据库读写分离;

        6.使用反向代里和CDN加速网站响应;

        7.使用分布式文件系统和分布式数据系统;

        8.使用NoSQL和搜索引擎;

        9.业务拆分,将网站业务分发成不同的产品线,根据产品线将一个网站拆分成不同的应用;

        10.分布式服务。

        大型网站最终的分布式服务架构如下图所示:

            

    大型网站架构演化的价值观

      核心价值是随网站所需灵活应对;驱动力是网站的业务发展。

    网站架构设计误区

      一味追随大公司的解决方案,注重学习借鉴而不是盲从;

      企图用技术解决所有问题,比如业务的问题可以用业务的手段区解决;

      为了技术而技术,技术要和业务很好的结合,技术选型和架构设计很重要。

    2.大型网站架构模式

      网站架构模式

      为了解决大型网站面临的高并发访问、海量数据处理、高可靠运行等一系列问题与挑战,大型互联网公司在实践中提出了许多解决方案,以实现网站高性能、高可用、
    易伸缩、可扩展、安全等各种技术架构目标。这些解决方案又被更多网站重复使用,从而逐渐形成大型网站架构模式

      1.分层:将系统在横向维度上切分成几个部分,每个部分负责单一的职责。必须合理规划层次边界和接口,禁止跨层次的调用和逆向调用。

      2.分割:纵向对软件进行切分,包装成高内聚低耦合的模块。

      3.分布式:对于大型网站,分层和分割的一个主要目的是为了切分后的模块便于分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。分布式意味着可以使用更多的计算机完成同样的功能,计算机越多,CPU、内存、存储资源也就越多,能够处理的并发访问和数据量就越大,进而能够为更多的用户提供服务。但分布式在解决网站高并发问题的同时也带来了其他问题。首先,分布式意味着服务调用必须通过网络,这可能会对性能造成比较严重的影响;其次,服务器越多,服务器宕机的概率也就越大,一台服务器宕机造成的服务不可用可能会导致很多应用不可访问,使网站可用性降低;另外,数据在分布式的环境中保持数据-致性也非常困难,分布式事务也难以保证,这对网站业务正确性和业务流程有可能造成很大影响;分布式还导致网站依赖错综复杂,开发管理维护困难。因此分布式设计要根据具体情况量力而行,切莫为了分布式而分布式。常见的分布式方案:分布式应用和服务;分布式静态资源;分布式数据和存储;分布式计算;分布式配置;分布式锁;分布式文件系统。

      4.集群:多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。

      5.缓存:

        CDN:即内容分发网络,部署在距离终端用户最近的网络服务商,用户的网络请求总是先到达他的网络服务商那里,在这里缓存网站的一-些静态资源(较少变化的数据),可以就近以最快速度返回给用户,如视频网站和广]户网站会将用户访问量大的热点内容缓存在CDN。
        反向代理:反向代理属于网站前端架构的一部分,部署在网站的前端,当用户请求到达网站的数据中心时,最先访问到的就是反向代理服务器,这里缓存网站的静态资源,无需将请求继续转发给应用服务器就能返回给用户。
        本地缓存:在应用服务器本地缓存着热点数据,应用程序可以在本机内存中直接访问数据,而无需访问数据库。
    分布式缓存:大型网站的数据量非常庞大,即使只缓存一-小部分,需要的内存空间也不是单机能承受的,所以除了本地缓存,还需要分布式缓存,将数据缓存在一个专门的分布式缓存集群中,应用程序通过网络通信访问缓存数据。
      使用缓存有两个前提条件,一是数据访问热点不均衡,某些数据会被更频繁的访问,这些数据应该放在缓存中;二是数据在某个时间段内有效,不会很快过期,否则缓存的数据就会因已经失效而产生脏读,影响结果的正确性。网站应用中,缓存除了可以加快数据访问速度,还可以减轻后端应用和数据存储的负载压力,这一点对网站数据库架构至关重要,网站数据库几乎都是按照有缓存的前提进行负载能力设计的。

      6.异步:用于系统的解耦。将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方式异步执行进行协作。能够提高系统可用性,消除并发访问高峰以及加快网站响应速度。

      7.冗余:通过冗余实现服务高可用。

      8.自动化

      9.安全

  • 相关阅读:
    巨人的崛起 Android操作系统发展历程
    iPhone 4S定位功能加强 支持GLONASS系统
    android子线程更新UI,与主Thread一起工作
    什么在阻碍移动互联网的普及?
    WEB.CONFIG 配置详解
    解决在aspx页面上进行传中文参数时会出现乱码问题
    VS2005水晶报表注册码
    windows2003应用程序池假死的问题
    浅谈ASP.NET内部机制
    合理建立数据库索引
  • 原文地址:https://www.cnblogs.com/ywqtro/p/14254393.html
Copyright © 2020-2023  润新知