【读书笔记】《大型网站技术架构:核心原理与案例分析》

读书笔记

粗略的看了下这本书,涉及太多网站架构上服务器、后端数据库等内容,作为一个前端小白,目前只能大概了解梳理下,作为一个学习参考,毕竟网站架构师不是这么简单的。

6.2应用服务器集群的伸缩性设计

HTTP重定向负载均衡

DNS域名解析负载均衡

反向代理负载均衡

IP负载均衡

在网络层通过修改请求目标地址进行负载均衡。
用户请求数据包到达负载均衡服务器后,负载均衡服务器在操作系统内核进程中获取网络数据包,根据负载均衡算法计算得到一台真实Web服务器,然后将数据目的IP地址修改成真实Web应用服务器的IP地址,不需要通过用户进程处理。真实Web应用服务器处理完成后,响应数据包回到负载均衡服务器,负载均衡服务器再将数据包源地址修改为自身的IP地址发送给用户浏览器。

数据链路层负载均衡

数据链路层负载均衡是指在通信协议的数据链路层修改mac地址进行负载均衡。这种数据传输方式又称作三角传输模式,是目前大型网站使用最广的一种负载均衡手段。
负载均衡数据分发的过程中不修改IP地址,只修改目的mac地址,通过配置真实物理服务器集群所有机器虚拟IP和负载均衡服务器IP地址一致,从而达到不修改源数据包的源地址和目的地址就可以进行数据分发的目的,由于实际处理请求的真实物理服务器IP合数据请求目的IP一致,不需要通过负载均衡服务器进行地址转换,可将响应数据包直接返回给用户浏览器。

负载均衡算法

负载均衡服务器实现可以分为两个部分:
1、根据负载均衡算法和Web服务器列表计算得到集群中的一台Web服务器。
2、将请求数据发送到该地址对应的Web服务器上。

6.3 分布式缓存集群的伸缩性设计

Memcached分布式缓存集群的访问模型

应用 程序 通过 Memcached 客户 端 访问 Memcached 服务器 集群, Memcached 客户 端 主要 由 一组 API、 Memcached 服务器 集群 路 由 算法、 Memcached 服务器 集群 列表 及 通信 模块 构成。其 中路 由 算法 负责 根据 应用 程序 输入 的 缓存 数据 KEY 计算 得到 应该 将 数据 写入 到 Memcached 的 哪 台 服务器( 写 缓存) 或者 应该 从 哪 台 服务器 读 数据( 读 缓存)。

Memcached分布式缓存集群的伸缩性挑战

在 Memcached 分布式 缓存 系统 中, 对于 服务器 集群 的 管理, 路 由 算法 至关重要, 和 负载 均衡 算法 一样, 决定 着 究竟 该 访问 集群 中的 哪 台 服务器。
简单 的 路 由 算法 可以 使用 余数 Hash: 用 服务器 数目 除以 缓存 数据 KEY 的 Hash 值, 余数 为 服务器 列表 下标 编号。由于HashCode 具有 随机性, 因此 使用 余数 Hash 路 由 算法 可保证 缓存 数据 在 整个 Memcached 服务器 集群 中 比较 均衡 地 分布。
但是当 分布式 缓存 集群 需要 扩容 的 时候, 事情 就 变得 棘手 了。当3 台 服务器 扩容 至 4 台 服务器, 大约 有 75%( 3/ 4) 被 缓存 了的 数据 不能 正确 命中, 随着 服务器 集群 规模 的 增大, 这个 比例 线性 上升。 当 100 台 服务器 的 集群 中 加入 一台 新 服务器, 不能 命中 的 概率 是 99%( N/( N + 1))。一种 解决 办法 是在 网 站 访问 量 最少 的 时候 扩容 缓存 服务器 集群, 这时候 对 数据库 的 负载 冲击 最小。 然后 通过 模拟 请求 的 方法 逐渐 预热 缓存, 使 缓存 服务器 中的 数据 重新 分布。 但是 这种 方案 对 业务 场景 有 要求, 还需 要 技术 团队 通宵 加班( 网 站 访问 低谷 通常 是在 半夜)。 能不能 通过 改进 路 由 算法, 使得 新 加入 的 服务器 不 影响 大部分 缓存 数据 的 正确 命中 呢? 目前 比较 流行 的 算法 是 一致性 Hash 算法。

分布式缓存的一致性Hash算法

二叉树查找实现及一致性Hash算法原理

6.4 数据存储服务器集群的伸缩性设计

关系数据库集群的伸缩性设计

NoSQL数据库的伸缩性设计

NoSQL, 主要 指 非 关系 的、 分布式 的 数据库 设计 模式。 也有 许多 专家 将 NoSQL 解读 为 Not Only SQL, 表示 NoSQL 只是 关系 数据库 的 补充, 而 不是 替代 方案。 一般而言, NoSQL 数据库 产品 都 放弃 了 关系 数据库 的 两大 重要 基础: 以 关系 代数 为基础 的 结构 化 查询 语言( SQL) 和 事务 一致性 保证( ACID)。 而 强化 其他 一些 大型 网 站 更 关注 的 特性: 高 可 用性 和 可 伸缩性。

7.1 构建可扩展的网站架构

8.2 信息加密技术及密钥安全管理

单向散列加密

常用单向散列算法有MD5、SHA等。还有一个特点就是输入任何微小变化都会导致输出的完全不同,这个特性有时也会用来生成信息摘要、计算具有高离散程度的随机数等用途。

对称加密

优点是算法简单,加密效率高,系统开销小,适合对大量数据加密。
缺点是加密使用同一个密钥,远程通信的情况下如何安全的交换密钥是个难题。
常用对称加密算法有DES、RC算法。

非对称加密

发送者通过公开渠道获取到公钥对明文进行加密,接收者通过私钥对信息进行解密
数字签名则相反,签名者用私钥对信息进行加密,接受者通过公钥对信息进行解密,由于私钥只有签名者拥有,因此信息是不可抵赖的,具有签名的性质。常用非对称加密算法有RSA算法。HTTPS传输中浏览器使用的数字证书实质上是经过权威机构认证的非对称加密的公钥。

密钥安全管理

改善安全性的手段有两种

  • 密钥和算法独立部署到独立服务器
  • 加解密算法放在应用系统,密钥放在独立服务器,密钥分片保存不同的存储介质中

8.3 信息过滤和反垃圾

13 大型网站典型故障案例分析

END 2018/01/05

posted @ 2017-12-11 22:03  Aarongo  阅读(309)  评论(0编辑  收藏  举报