关闭

黄阶中级-《大型网站技术架构》- 概述 - 修改0次

标签: 技术架构海量数据互联网网站技术架构黄阶中级
624人阅读 评论(0) 收藏 举报
分类:

1、大型网站架构演化

互联网站的发展仅仅经历了 20 多年的时间。

大型网站软件系统的特点:

  • 高并发、高流量。谷歌日均 PV 几十亿。 PV (访问量):即 Page View , 即页面浏览量或点击量,用户每次刷新即被计算一次
  • 高可用。百度被黑就会成为热点。
  • 海量数据 , Facebook 每周上传照片数目近 10 亿。
  • 用户分布广发、网络情况复杂。中美光缆,运营商互通。
  • 安全环境恶劣。斯诺登。
  • 需求快速变更,发布频繁。QQ
  • 渐进式发展。与传统软件不同,好的互联网产品都是慢慢运营出来的,不是一开始就开发好的,这也契合了网站架构的发展演化历程。

2、大型网站架构发展历程

1、初始阶段的网站架构

小型网站没有太多人访问,只需要一台服务器就绰绰有余。哈哈,应用程序、数据库、文件等所有资源放在一台服务器上,汇集各种开源软件及一台廉价服务器就可以开始创业了!!!

这里写图片描述

2、 应用服务和数据服务分离

随着越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足。这是需要将应用和数据分离,使用三台服务器:
- 应用服务器。需要处理大量的业务逻辑,需要强大的 CPU 。
- 数据库服务器。需要快速磁盘检索和数据缓存,需要更快的硬盘和更大的内存。
- 文件服务器。需要存储大量用户上传的文件,需要更大的硬盘。

这里写图片描述

应用和数据分离后,网站的并发处理能力和数据存储空间得到了很大改善。

3、使用缓存改善网站性能

随着用户增多,数据库亚历山大导致访问延时,今儿影响整个网站的性能。
这里运用一个二八定律: 80% 的业务访问集中在 20% 的数据上。那么,如果把这一小部分数据换存在内存中,是不是可以减少数据库的压力。
网站使用的缓存分为两种:
- 应用服务器的本地缓存。本地缓存访问速度更快,但会出现和应用程序争用内存的情况。
- 专门的分布式服务器的远程缓存。可以使用集群的方式,可以在理论上做到不受内存容量限制的缓存服务。

这里写图片描述

4、使用应用服务器集群改善并发处理能力

对网站架构而言,实现可伸缩性不是使用更大的服务器,而是使用更多的服务器。那么也有了负载均衡的概念。

这里写图片描述

通过负载均衡调度服务器,可将来自用户浏览器的访问请求分发到应用服务器集群中,如果由更多的用户,就加一堆服务器,使应用服务器的负载压力不再成为整个网站的瓶颈。

5、数据库读写分离

即使使用了缓存,仍有一部分读操作操作和全部的写操作需要访问数据库。当网站的用户达到一定规模后,数据库负载压力过高再次成为网站的瓶颈。

使用数据库的主从热备份功能,主数据库服务器实现写操作,从服务器实现读操作。

这里写图片描述

为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,是数据库读写分离对应用透明。

架构设计到这里博主觉得已经很好了。看一下后面有什么更好的优化。

6、使用反向代理和 CDN 加速网站响应

由于网站访问速度不尽相同,而网站访问延迟和用户流失正相关。为了提供更好的用户体验,留住用户,网站需要加速网站访问速度。

  • CDN 。CDN 部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己最近的网站提供商机房获取数据。
  • 反向代理。部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中缓存着用户请求的资源,就将其直接返回给用户。

这里写图片描述

使用 CDN 和反向代理都是使用缓存技术,目的都是今早返回数据给用户。

7、使用分布式文件系统和分布式数据库系统

好吧,数据库的问题又来了,伴随着更多的业务需求而来。这时需要使用分布式数据库和分布式文件系统。

这里写图片描述

8、使用 NoSQL 和搜索引擎

开始使用黑科技开挂了!随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系数据库技术如 NoSQL 和非数据库查询技术如搜索引擎。

这里写图片描述

9、业务拆分

至此,这套架构的能力已经很强了,但是也越来越难驾驭了,复杂的逻辑必须进行拆分,变成很多个迷你的。使用分而治之的思想,将整个网站业务分成不同的产品线,将一个网站拆分成不同的应用,每个应用独立部署维护。

关于不同应用之间的集成问题:可以通过一个超链接建立关系,也可以通过消息队列进行数据分发,最好的还是通过访问同一个数据存储系统来构成一个关联的完整系统。

这里写图片描述

10、分布式服务

这一块就有点看不懂了,多读了几遍。

既然每一个应用系统都需要执行许多相同的业务操作,比如用户管理、商品管理等,那么可以将这些共用的业务提取出来,独立部署。由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共同业务服务完成具体业务操作。

这里写图片描述

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

网站的价值在于它能为用户提供什么价值,在于网站能做什么,而不在于它是怎么做的,所以在网站还很小的时候就去追求网站的架构是舍本逐末,得不偿失的。

4、网站架构设计误区

  • 一味追求大公司的架构。
  • 为了技术而技术。网站技术是为业务存在的,初次毫无意义。
  • 认为技术可以解决一切问题。例如 12306 真正的问题不是它的技术架构,而是它的业务架构,不该设计成秒杀型的。

5、小结

正因为网站架构技术演化过程难以重现,所以网站架构师更应该对这个过程深刻了解,理解已成熟的网站架构技术方案的来龙去脉和历史渊源,在技术选型和架构决策时才能有的放矢,直击要害。

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

大型互联网技术架构1-架构概述

上图坐标指向硅谷,最近开始研究互联网分布式架构,风口浪尖,高大上;特与极客朋友们分享,共勉。 互联网架构 近些年来,互联网的高速发展,大数据时代,Booming Years,我们作为技术极客,需要跟得...
  • ErixHao
  • ErixHao
  • 2016-06-19 08:48
  • 4102

大型网站技术架构(四)--网站的高性能架构

网站性能是客观的指标,可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。
  • MINEZHANGHAO
  • MINEZHANGHAO
  • 2014-05-29 08:01
  • 8884

基于Java技术的大型网站架构设计方案

基于Java技术的大型网站架构设计方案 笑游江湖 发表于 2014-03-16 16:56:00 | 分类标签: 网站架构 JAVA 高并发 1、Web层 主体架构可以基于 Struts 1...
  • JackieLiuLixi
  • JackieLiuLixi
  • 2014-05-23 17:24
  • 15322

黄阶中级 - 操作系统 - 操作系统历史 - 修改0次

1、操作系统历史也许给我介绍其他事物的黑历史我是不想听的,但是了解一下操作系统的历史我很有兴趣。操作系统的发展主要由两个因素驱动: 硬件成本的不断下降。 计算机的功能和复杂性的不断变化。 2、操作系统...
  • u013103846
  • u013103846
  • 2016-08-28 13:02
  • 169

黄阶低级 - 《 Java 核心》- 3.6 字符串 - 修改0次

1、字符串 Java 字符串就是 Unicode 字符序列Java 没有内置的字符串类型,所以在标准 Java 类库中提供了一个预定义类,叫做String。 每个用双引号括起来的字符串都是 Str...
  • u013103846
  • u013103846
  • 2016-08-13 15:58
  • 150

黄阶低级 - 《 Java 核心》- 3.5 运算符 - 修改0次

1、自增自减运算符 有两种形式,前缀和后缀,前缀先进行加1运算,后缀使用变量原来的值。 int m = 7; int n = 7; int a = 2 * ++m;// now a is 16...
  • u013103846
  • u013103846
  • 2016-08-12 16:37
  • 150

黄阶低级 - 《 Java 核心》- 4.5 方法参数 - 修改0次

方法参数 打个比方,值调用时克隆人,和本人无关;引用调用是本人的地址,可以找到本人,改变本人 1、调用基本类型一个方法不能修改一个基本数据类型的参数,例如我们定义一个方法如下:public sta...
  • u013103846
  • u013103846
  • 2016-08-17 22:41
  • 158

黄阶低级 - 《 Java 核心》- 3.5 运算符(二)- 修改0次

1、数学函数与常量 2、数据类型转换 3、强制类型转换 4、括号与运算符级别 5、枚举类型
  • u013103846
  • u013103846
  • 2016-08-13 13:38
  • 182

黄阶低级 - 《 Java 核心》- 4.6 对象构造 - 修改0次

1、重载 Java 允许任何重载任何方法,而不只是构造器方法 方法的签名只有方法名和参数,没有返回值,也就是说,不能有两个名字相同、参数也相同而返回值不同的方法。如果多个方法有相同的方法名和不同的...
  • u013103846
  • u013103846
  • 2016-08-20 20:34
  • 142

黄阶低级 - 《 Java 核心》- 4.9 文档注释 - 修改0次

1、文档注释1、Java 包含一个很有用的工具,叫做 javadoc , 可以由源代码生成一个 Html 文档。联机 API 文档也是通过对标准 Java 类库源代码运行 javadoc生成的。 2...
  • u013103846
  • u013103846
  • 2016-08-21 14:28
  • 119
    个人资料
    • 访问:10464次
    • 积分:515
    • 等级:
    • 排名:千里之外
    • 原创:41篇
    • 转载:1篇
    • 译文:2篇
    • 评论:0条