《大型网站技术架构: 核心原理与案例分析》阅读摘录

Tags: 系统设计 

本篇目录

说明

《大型网站技术架构:核心原理与案例分析》清晰地讲述了网站架构是如何一步步演进到现在的样子的。

负载均衡

Nginx 一般用于七层负载,吞吐量有一定限制。DNS 和 Nginx 之间,接入 LVS、F5 等四层负载均衡。

DR 模式:

负载均衡

Session 管理方案演化

session 复制方案,复制成本高,无法大规模应用:

session复制方式

session 绑定方案,无法对宕机容错:

session绑定

session 的 cookie 方案,无法应对客户端关闭 token 的情况:

session 的 cookie 方案

session 服务器,:

session 服务器

数据备份

异步热备:

数据服务器的异步热备

同步热备:

数据服务器的同步热备

失效转移:

数据备份的失效转移

预发布

网站预发布

缓存:

浏览器端缓存,Expire、Cache-control。

APP客户端缓存:大促之前把 APP 需要的访问素材提前下发到客户端。

CDN 缓存:推送机制和拉取机制。

memcache 缓存:

memcache缓存架构

NoSQL

一般而言 NoSQL 数据库都放弃了关系数据库的两大重要基础:

  1. 以关系代数为基础的结构化查询语句 SQL
  2. 事务一致性保证 ACID

强化了:

  1. 高可用
  2. 可伸缩性

可扩展性

事件驱动架构:

事件驱动架构

消息队列原理

分布式服务框架:

dubbo

开放API

开放平台

密钥安全管理

密钥管理的目的是 防止密钥被广泛泄露

密钥管理

风控系统

基于规则引擎的风控系统:

基于规则引擎的风控系统

基于统计模型的风控系统:

基于统计模型的风控系统

秒杀系统

秒杀系统整体架构

秒杀页面中加载 js 文件的 url 时添加随机编号,穿透缓存,例如:

<script type="text/javascript">
    //为了兼容高版本chrome浏览器,此处不能读取缓存,故采用加随机数方式引入脚本
    document.write("<s" + "cript type='text/javascript' src='//cdn.bootcss.com/jquery/3.3.1/jquery.min.js?" + Math.random() + "'></s" + "cript>");
</script>

<script type="text/javascript">
        document.write("<link href='css/style.css?" + Math.random()+"' rel='stylesheet'>");
</script>

降级

这部分来自《亿级流量网站架构核心技术》

开关集中管理,通过推送机制把开关推送到应用。

服务功能降级,关闭一些不太重要的调用。

将读请求降级为只读缓存。

将写请求降级为只写缓存,异步更新 DB。

爬虫降级、风控降级。

京东单品页架构

这部分来自《亿级流量网站架构核心技术》

架构1.0:直接调用商品库获取相关的数据

架构2.0:worker 通过 MQ 接收异步通知,异步生成详情页 html,通过 rsync 同步到其它机器

架构3.0:worker 通过 MQ 接收异步通知,商品原数据异步更新到 jimdb,nginx+lua 获取数据渲染模版

参考

  1. 李佶澳的博客

系统设计

  1. Netflix 的异地多活设计: Active-Active for Multi-Regional Resiliency
  2. Facebook 的缓存系统实践经验《Scaling Memcache at Facebook》
  3. 多机数据系统的正确性与一致性
  4. 《大型网站技术架构: 核心原理与案例分析》阅读摘录
  5. 《分布式金融架构课》阅读笔记2: 线性一致的分布式数据系统的实现过程
  6. 《分布式金融架构课》阅读笔记1: 单机&多机并发/多副本读写正确性和一致性
  7. 《消息队列高手课》阅读笔记: Rabbit/Rocket/Kafka/模型/消息事务/保序等
  8. 《消息队列高手课》阅读笔记: Rabbit/Rocket/Kafka/模型/消息事务/保序等
  9. 《Redis核心技术与实践》阅读笔记: 数据类型/存储开销/Rehash/案例等
  10. 《Redis核心技术与实践》阅读笔记: 数据类型/存储开销/Rehash/案例等
  11. 《高并发系统设计40问》阅读笔记: 数据库/缓存/消息队列/分布式服务
  12. 《高并发系统设计40问》阅读笔记: 数据库/缓存/消息队列/分布式服务
  13. 《MySQL实战45讲》阅读笔记: 索引类型/数据可靠性/事务/间隙锁/临时表等
  14. 系统性能分析方法论: 统计图谱工具
  15. 张磊《深入剖析Kubernetes》专栏的阅读笔记
  16. 代理服务软件haproxy、nginx、envoy对比,以及开源的API网关项目对比
  17. 蓝绿部署、金丝雀发布(灰度发布)、A/B测试的准确定义
  18. 阿里巴巴的应用限流和服务降级是怎样实现的?|如何打造平台稳定能力
  19. 陈皓《左耳听风》专栏的阅读笔记(持续更新)
  20. 好雨云帮,一款不错的国产开源PaaS
  21. 怎样为软件的不同版本命名?
  22. 怎样选择开源项目的license?
  23. Glusterfs的架构
  24. 怎样设计一个企业级的PaaS平台?
  25. 几种常见的LDAP系统
  26. DNS SRV介绍(一种用DNS做服务发现的方法)
  27. DNS,DNS-Domain Name System
  28. 思科的网络设备
  29. 虚拟化技术汇总
  30. 认证与授权系统的汇总
  31. 高可用实现方法汇总
  32. 编译器汇总
  33. Linux系统的优化方法
  34. CentOS7的一些变化
  35. 分布式系统的一些知识
  36. 计算机编程语言的特性汇总
  37. 网络通信的一些基础知识
  38. PCIE总线的一些知识
  39. 操作系统的API
  40. 网卡的一些知识
  41. Linux系统的构建过程
  42. 数据结构与算法
  43. CPU的相关知识

推荐阅读

Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: [email protected],备注网站合作

友情链接:  系统软件  程序语言  运营经验  水库文集  网络课程  微信网文  发现知识星球