说说大型网站架构的核心要素

架构,是最高层次的规划,难以改变的决定。这些规划与决定决定了事物发展的方向与最终蓝图。

而软件架构指的是:有关软件的整体结构与组件的抽象描述,可用于指导大型软件系统各个方面的设计。这些部分可以是具体的功能模块,也可以是非功能的设计与决策,它们共同组成了软件系统的架构。

下面我们会说说大型网站架构的五大核心要素:性能、可用性、伸缩性、扩展性以及安全性。

1 性能

性能是一个重要的指标。一个打开缓慢的网站会导致严重的用户流失,所以很多时候性能问题是架构需要优化升级的触发器。

优化手段很多,从浏览器一直到数据库都可以进行性能优化:

  • 浏览器 - 浏览器缓存、页面压缩、合理布局页面、减少 Cookie 传输、CDN以及反向代理
  • 应用服务器 - 本地缓存、分布式缓存、异步操作发送消息以及应用服务器集群
  • 代码 - 多线程、内存管理
  • 数据库服务器 - 索引、缓存以及SQL 优化

衡量性能还有一些指标(响应时间、系统吞吐量、性能计数器等),通过监控这些指标,可以分析系统的瓶颈,预期网站的容量,并对异常指标进行报警,保障系统可用性。

要考虑高并发访问的情况下,超出负载设计能力时会出现的性能问题;还要注意在访问压力不均衡的情况下保持稳定的性能。

2 可用性

虽然几乎所有的网站都宣称 7 * 24 可用,但实际上不可能做到。因为总会有一些故障时间。扣除这些故障时间后,就是网站的总可用时间。这个时间就可以换算为网站的可用性指标。一些知名的大型网站的可用性超过 99.99%。

大型网站通常会有上万台服务器,所以必然会出现某些服务器宕机。而当服务器宕机时,如果能够保证服务仍然可用,就实现了高可用的目标。

高可用的手段是冗余,应用被部署在多台服务器上,数据也存储在多台服务器上并相互备份,这样任何一台服务器宕机都不会影响应用的整体可用性,也不会导致数据丢失。

多台应用服务器通过负载均衡设备组成的集群,共同对外提供服务。这样任何一台服务器宕机,只要把请求切换到其他服务器即可实现高可用。但要注意这种方式无法保存请求的会话信息!

存储服务器上,对数据实时备份。这样服务器宕机时,就可以把数据访问转移到其他可用的服务器上并进行数据恢复。

高可用还需要软件开发过程的质量保证,通过预发布验证、自动化测试、自动化发布以及灰度发布,降低把故障引入线上环境发生的概率。

衡量一个系统架构设计是否满足高可用的目标,就是假设系统中任何一台或多台服务器宕机,或出现其他各种不可预期的问题时,系统整体是否依然可用。

3 伸缩性

伸缩性指的是:通过不断向集群加入服务器的手段来缓解不断上升的用户并发访问压力以及不断增长的数据存储请求。

衡量伸缩性的标准是:

  1. 是否可以用多台服务器构成集群?
  2. 是否容易加入新的服务器?
  3. 加入的新服务器是否可以提供无差别服务(与原来的服务器相比)?
  4. 可以容纳的总服务器数量是否有限制?

应用服务器集群,如果服务器上不保存数据,那么所有的服务器都是对等的,通过使用负载均衡设备就可以向集群不断加入新的服务器。

缓存服务器集群中,新加入的服务器会导致缓存路由失效,所以需要改进缓存路由算法来保证缓存数据的可访问性。

关系型数据库本身很难做到大规模的集群,所以必须在数据库之外来实现。

而 NoSQL 数据库就是为海量数据而生的,所以它们对伸缩性的支持非常好。

4 扩展性

网站的架构要能够快速响应需求的变化。

衡量扩展性好坏的标准是:

  1. 增加新的业务产品时,是否可以对现有产品无影响,不需要改动或者只需要很少的改动就可以上线新产品?
  2. 产品之间很少耦合。

提高扩展性的手段是:

  1. 事件驱动架构 - 利用消息队列来实现,把用户的请求以及其他业务事件构成消息,发布到消息队列,然后消息的处理者作为消费者从消息队列中获取消息进行处理。
  2. 分布式服务 - 把普通业务与可复用服务分离,使用分布式服务框架来调用。可复用服务升级时,通过提供多版本服务即可提供对应用的透明升级。
  3. 开发平台接口 - 吸引第三方开发者来调用网站的服务,来扩展业务。

5 安全性

衡量安全性的标准是:对于现存以及潜在的各种攻击与窃取手段,是否有可靠的应对策略。

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

推荐阅读更多精彩内容

  • 可伸缩性架构指的是:不改变网站的软硬件设计,只通过改变部署的服务器数量就可以扩大或缩小网站的服务处理能力。 大型网...
    deniro阅读 2,710评论 4 52
  • 网站的可用性强调的是对最终用户的使用价值。它牵动着人们的神经,直接影响着公司的形象和利益,许多互联网公司都将网站的...
    deniro阅读 3,651评论 0 18
  • 序 《大型网站技术架构》是自己接触的第一本架构知识的书籍,还是在14年时买的实体书,前后读了几遍,颇有所得,后来实...
    高广超阅读 8,356评论 2 43
  • 概述 1 架构演化大型网站的关注指标高可用 高性能 易扩展 可伸缩 安全 大型网站的特点高并发,大流量 高可用 海...
    西西老师阅读 2,819评论 0 12
  • 大型网站架构 网站架构包括:前端架构+应用层架构+服务层架构+存储层架构+后台架构+数据中心机房架构+安全架构+数...
    运维开发笔记阅读 1,111评论 0 7