《大型网站技术架构》读书笔记:概述篇

大型网站系统特点

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


大型网站架构演化发展历程
大型网站架构演化发展历程.png

网站架构模式
  • 分层(横向切分)
    ①将大型的软件系统切分成不同的部分,便于分工合作,各层之间具有一定的独立性,如MVC就是一种典型的分层思想的应用。
    ②开发中应严格遵循分层架构的约束,禁止跨层调用以及逆向调用。
    ③大的分层结构还可以继续分层,如服务层可以细分为数据结构层(适配各种输入和输出的数据格式)和逻辑处理层。

  • 分割(纵向切分)
    是指不同业务的分割:将不同的功能和服务分割,包装成高内聚低耦合的模块单元。

  • 分布式
    概念:即将分层和分割后的不同模块部署在不同的服务器上,通过远程调用协同工作。分布式意味着可以使用更多的计算机完成同样的功能。
    问题:由于服务调用通过网络,因此网络通信可能会影响系统性能;服务器宕机的概率提高,使系统可用性降低;在分布式环境中保持数据一致性非常困难,分布式事物也难以保证;导致网站依赖更加复杂,开发维护困难。
    分类:分布式应用和服务,分布式静态资源,分布式数据和存储,分布式计算等

  • 集群
    概念:是指多台服务器部署相同的应用构成一个集群,通过负载均衡设备共同对外提供服务,提供更好的并发特性。
    在网站应用中,即使访问量很小的分布式应用和服务,也至少要部署两台服务器构成一个小的集群,目的就是提高系统的可用性。

  • 缓存
    缓存除了可以加快数据访问速度,还可以减轻后端应用和数据存储的负载压力。主要的缓存技术有:
    CDN:英文全称为content delivery network,即内容分发网络,部署在距离终端用户最近的网络服务商,用户的请求总是最先达到他的网络服务商那里,将网站的一些静态资源缓存在这里,可以就近以最快的速度返回给用户。
    反向代理:属于网站前端架构的一部分,部署在网站的前端,当用户请求到达网站的数据中心时,最先访问到的就是反向代理服务器,这里缓存网站的静态资源,无需将请求继续转发给应用服务器就能返回给用户。
    本地缓存:在应用服务器本地缓存热点数据,应用可以直接在本机内存中访问数据,无需访问数据库。
    分布式缓存:将数据缓存在分布式缓存集群中,应用程序通过网络通信访问缓存数据。

  • 异步
    异步也是一种系统间解耦合的一种手段。在单一服务器内部:使用多线程共享内存队列实现异步;在分布式系统中:使用分布式消息队列实现异步------异步架构。
    好处:①提高系统可用性:消费者服务器故障,生产者服务器可以继续处理业务请求,系统整体表现无故障,消费者服务器修复后,继续处理消息队列中的数据。②加快网站响速度:生产者服务器在处理完业务请求后,不需要等待消费者服务器处理就可以直接返回,响应延迟减少。③消除并发访问高峰:将突增的访问请求数据放入消息队列,等待消费者服务器依次处理,就不会对整个网站负载造成太大压力。
    问题:使用异步方式处理业务可能会对用户体验、业务流程造成影响。

  • 冗余
    为保证在服务器宕机的情况下网站依然可用,就需要一定程度的服务器冗余运行,数据冗余备份。
    对数据库而言,除了进行冷备份(定期备份,存档保存),还要热备份(对数据库进行主从分离,实时同步)

  • 自动化
    人为干预越少,出现问题的可能就越小。
    开发中的自动化:自动化发布过程、自动化代码管理、自动化测试、自动化安全监测、自动化部署;
    运维中的自动化:自动化监控、自动化报警、自动化失效转移、自动化失效恢复、自动化降低、自动化分配资源

  • 安全


核心架构要素
  • 性能
    主要指标:响应时间、TPS、系统性能计数器等
    主要手段:
    ①前端:通过浏览器缓存、使用页面压缩、合理布局页面、减少Cookie传输;使用CDN和反向代理服务器
    ②应用服务器端:使用服务器本地缓存和分布式缓存;使用异步操作,如消息队列等;应用服务器集群部署;
    ③代码层面:使用多线程、改善内存管理等
    ④数据库服务器端:索引、缓存、SQL优化等;引入NoSQL;

  • 可用性
    理解可用性:假设系统中任何一台或者多台服务器宕机时,以及出现各种不可预期的问题时,系统整体是否依然可用。高可用设计的目标就是当服务器宕机时,服务或者应用依然可用。
    实现高可用的主要手段是冗余:应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份。

  • 伸缩性
    所谓伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。
    衡量标准:是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器
    ①对应用服务器集群:只要服务器上不保存上下文数据,所有服务器都是对等的,通过合适的负载均衡设备就可以像集群中不断加入服务器。
    ②对缓存服务器集群:加入新的服务器可能会导致缓存路由失败,进而导致大部分缓存数据都无法访问。需要改进缓存路由算法来保证缓存数据的可访问性。
    ③对关系型数据库集群:通过路由分区等手段。
    ④NoSQL:一般先天支持集群,伸缩性高。

  • 扩展性
    扩展性理解:功能和需求扩展时,是否可以实现对现有系统透明无影响,不需要任何改动或者很少改动。不同功能与产品之间是否很少耦合。
    实现高扩展性的主要手段:事件驱动架构和分布式服务。
    事件驱动架构:主要通过消息队列来实现;
    分布式服务:将业务和可复用服务分离开来,通过分布式服务框架调用。

  • 安全性

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容