漫谈《大型网站技术架构》

news/2024/5/20 23:01:23/文章来源:https://forezp.blog.csdn.net/article/details/69196483

转载请标明出处:
http://blog.csdn.net/forezp/article/details/69196483
本文出自方志朋的博客

本文的内容来自阿里巴巴员工李智慧的著作《大型网站技术架构 核心原理与案例分析》,这本书很值得一看,故整理之。

一、大型网站的架构演化

1.1 大型网站软件的特点

  • 高并发、大流量
  • 高可用:系统7*24小时不间断提供服务
  • 海量数据
  • 用户分布广泛
  • 安全环境恶劣
  • 需求变更快,发布频繁
  • 渐进式发展

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

  • **初始阶段的网站架构:**例如 LAMP 架构
  • **应用和数据服务分离:**三台服务器:应用服务器,文件服务器和数据库服务器
  • **使用缓存改善网站性能:**分为两种,缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器的远程缓存
  • **使用应用服务器集群改善网站并发处理能力:**通过负载均衡调度服务器来分发请求到应用服务器集群中的任何一台机器
  • 数据库读写分离: 主写从读。
  • **使用反向代理和 CDN 加速网站响应:**这两者基本原理都是缓存。反向代理部署在网站的中心机房,CDN 部署在网络提供商的机房。
  • 使用分布式文件系统和分布式数据库系统: 将不同的业务分布,将不同的业务的数据库部署在不同的机器上。
  • 使用 NoSQL 和搜索引擎: 源自互联网技术,对可伸缩的分布式有更好的支持。
  • **业务拆分:**将整个网站通过分而治之的手段将网站业务分成不同的产品线。
  • 分布式服务: 比如最近流行的微服务,横行、纵向切片,将服务集群化,相互关联化。

在这里插入图片描述

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

  • 大型网站架构的核心价值是随网站所需灵活应对
  • 驱动大型网站技术发展的主要力量是网站的业务发展

1.4 网站架构设计误区

  • 一味追随大公司的解决方案
  • 为了技术而技术
  • 企图用技术解决所有问题

二、大型网站架构模式

2.1 网站架构模式

  • 分层
  • 分割
  • 分布式
    • 分布式应用和服务
    • 分布式静态资源
    • 分布式数据和存储
    • 分布式计算
  • 集群
  • 缓存
    • Cdn
    • 反向代理
    • 本地缓存
    • 分布式缓存
  • 异步
    • 提供系统可用性
    • 加快网站响应速度
    • 消除高并发访问高峰
  • 冗余 服务器冗余运行,数据库冗余备份
  • 自动化
  • 安全 : 防止XSS攻击、sql注入

三、大型网站核心架构要素

  • 性能
  • 可用性
  • 伸缩性 不断地向服务器集群加服务器
  • 扩张性

四、瞬时响应:网站的高性能架构

4.1 网站性能测试

  • 不同视角下网站的性能
    • 用户视角网站性能 响应时间
    • 开发人员视角的网站性能 响应时间、并发亮
    • 运维人员视角的网站性能 资源
  • 性能测试指标
    • 响应时间
    • 并发数
    • 吞吐量 qps tps hps
    • 性能计数器
  • 性能测试方法
    • 性能测试
    • 负载测试
    • 压力测试
    • 稳定性测试
  • 性能测试报告
  • 性能优化策略
    • 性能分析
    • 性能优化

4.2 web前端性能优化

  • 浏览器访问优化
    • 减少http请求
    • 使用浏览器缓存
    • 启用压缩
    • css放在网页最上面 js最下面
    • 减少cookie传输
  • CDN加速。(content distribute network)
  • 反向代理

4.3 应用服务器性能优化

  • 分布式缓存
    • 缓存的基本原理
    • 合理的使用缓存
      • 频繁修改数据
      • 没有热点的访问
      • 数据不一致与脏读
      • 缓存可用性
      • 缓存预热
      • 缓存穿透 缓存不存在,直接访问数据库
    • 分布式缓存架构
    • Memcached
  • 异步操作
  • 使用集群
  • 代码优化
    • 多线程
    • 资源复用
    • 数据结构
    • 垃圾回收

4.4 存储性能优化

  • 机械硬盘 vs. 固态硬盘
  • B+ 树 vs. LSM 树
  • RAID vs. HDFS

五、万无一失:网站的高可用架构

5.1 网站可用性的度量和考核

  • 网站可行性度量
  • 网站可用性考核

5.2 高可用的网站架构

5.3 高可用的应用

  • 通过负载均衡进行无状态服务的失效转移
  • 应用服务器集群的session管理
    • session复制
    • session绑定
    • 利用cookie记录 session
    • session服务器

5.4 高可用的应用

  • 分级管理
  • 超时设置
  • 异步调用
  • 服务降级 随机拒绝访问(twitter)
  • 幂等性设计

5.5 高可用的数据

  • CAP原理
    • 数据持久性
    • 数据可访问性
    • 数据一致性
      • 数据强一致性
      • 数据用户一致性
      • 数据最终一致性
  • 数据备份
  • 失效转移
    • 失效确认
    • 访问转移
    • 数据恢复

5.6 高可用软件质量保障

  • 网站发布
  • 自动化测试
  • 预发布验证
  • 代码控制
    • 主干开发,分支发布
    • 分支开发,主干发布
  • 自动化发布
  • 灰度发布

5.7 网站运行监控

  • 监控数据采集
    • 用户行为日志收集
    • 服务器性能检测
    • 运行数据报告
  • 监控管理
    • 系统报警
    • 失效转移
    • 自动优雅降级

六、永无止尽:网站的伸缩性架构

6.1 网站伸缩性设计

  • 不同功能进行物理分离实现伸缩
  • 单一功能通过集群实现伸缩

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

  • http重定向负载均衡
  • Dns域名解析负载均衡
  • 反向代理负载均衡
  • ip负载均衡
  • 数据链路层负载均衡
  • 负载均衡算法
    • 轮询
    • 加权轮询
    • 随机
    • 最少链接
    • 原地址散列

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

  • Memcached分布式缓存集群的访问模型
  • Memcached分布式缓存集群的伸缩性挑战
  • 分布式缓存的一致性hash算法

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

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

七、随机应变:网站的可扩展性架构

7.1 构建可扩展性的网站架构

7.2 利用分布式消息队列降低系统耦合性

  • 事件驱动架构
  • 分布式消息队列

7.3 利用分布式服务打造可复用的业务平台

  • web service与企业级分布式服务
  • 大型网站分布式服务的需求与特点
    • 负载均衡
    • 失效转移
    • 高效的远程通信
    • 整合异构系统
    • 对应用最少侵入
    • 版本控制
    • 实时监控
  • 分布式服务框架设计

7.4 可扩展的数据结构

7.5 利用开放平台建设网站生态圈

  • api接口
  • 协议转移
  • 安全
  • 审计
  • 路由
  • 流程

8、固若金汤:网站的安全架构

8.1 道高一尺魔高一丈的网站应用攻击与防御

  • xss攻击
    • 消毒
    • httponly
  • 注入攻击
    • 开源
    • 错误回显
    • 盲注
    • 消毒
    • 参数绑定
  • csrf攻击
    • 表单token
    • 验证码
    • referer check
  • 其他攻击和漏洞
    • error code
    • html注释
    • 文件上传
    • 路径遍历
  • web应用防火墙
  • 网站安全漏洞扫描

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

  • 单向散列加密
  • 对称加密
  • 非对称加密
  • 密钥安全管理

8.3 信息过滤与反垃圾

  • 文本匹配
  • 分类算法
  • 黑名单

8.4 电子商务风险控制

  • 风险
    • 账号风险
    • 买家风险
    • 卖家风险
    • 交易风险
  • 风控
    • 规则引擎
    • 统计模型


扫码关注公众号有惊喜

(转载本站文章请注明作者和出处 方志朋的博客)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_722222.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php源码网站安装教程,php源码安装教程(php源码网站搭建方法和过程)

web网站是我们上网的窗口,而网站是如何搭建的呢?今天我们来做一个介绍,以php代码为例来进行介绍(后续会介绍一下java代码搭建,如果想要我这里涉及的工具或源码请私信我)。1、首先你需要去网上下载你想搭建的源码。2、安装phpstudy…

网站f12怎么查询服务器,网页f12查看服务器

网页f12查看服务器 内容精选换一换主机管理的云服务器列表中仅显示以下主机的防护状态:在所选区域购买的华为云主机已接入所选区域的非华为云主机在所选区域购买的华为云主机已接入所选区域的非华为云主机若未找到您的主机,请切换到正确的区域后再进行查…

帝国cms网站迁移到新的服务器,帝国cms网站迁移教程

帝国cms网站迁移教程步骤如下:网站迁移步骤:1、在旧服务器备份数据库、“d”附件目录与表单目录;2、到新服务器安装新的帝国网站管理系统;3、登陆后台恢复备份的数据库、“d”附件目录与表单目录;4、重新生成前台页面&…

我要自学网视频教程ajax,这么逆天的自学网站,还是第一次见,难怪考不上清华北大...

原标题:这么逆天的自学网站,还是第一次见,难怪考不上清华北大有很多朋友,工作了N年之后,工资一直不涨,其实就是没有找到正确的方法,这个时候呢,我们就需要用到一些非常好用的自学网站…

1h2g云服务器做网站,云服务器1H2G和1H1G的区别

云服务器1H2G和1H1G的区别 内容精选换一换简要介绍一组Java命令行工具,用于处理高通量排序(HTS)数据和格式。开发语言:Java一句话描述:Java命令行工具开源协议:MIT建议的版本根据实际需要选择版本,本文档以picard-2.23…

java jsp静态_Java jsp网站首页静态化解决方案

缓存静态化处理流程:关键代码:本代码以jsp为例,其实还可以用freemarker等模板语言,但本人认为页面静态化属于后期优化工作,目前jsp应用要比freemarker要广泛,所以jsp更具有意义。protected void doPost(Htt…

python怎么爬取图片地址_Python爬虫爬取一个网站上的图片地址实例代码

本文实例主要是实现爬取一个网站上的图片地址,详细如下。读取一个网站的源码:import urllib.requestdef getHtml(url):htmlurllib.request.urlopen(url).read()return htmlprint(getHtml(http://image.baidu.com/search/flip?tnbaiduimage&ieutf-8&…

服务器怎么部署静态网站,纯静态网站部署服务器

纯静态网站部署服务器 内容精选换一换PHPWind(简称:PW)是一个基于PHP和MySQL的开源社区程序,是国内较受欢迎的论坛之一。轻架构,高效易开发,使用户可快速搭建并轻松管理。本文档指导用户使用华为云市场镜像“PHPWind 论坛社区系统…

使用 Nginx 提升网站访问速度

本文主要介绍如何在 Linux 系统上安装高性能的 HTTP 服务器 —— Nginx、并在不改变原有网站结构的条件下用 Nginx 来提升网站的访问速度。Nginx 简介Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 N…

建立标准CA部署安全的SSL网站

概述: 随着网络安全的概念日益深入人心,公钥架构(PKI)在网络得到越来越广泛的应用。PKI使用证书进行身份验证,数据加密和数据签名,是目前信息安全保障的一种重要方法。 证书是PKI的基础,是实现网络安全&…

IIS7中发布网站到公网技巧与排错

为了最大化发挥硬件的优势,把客户的服务器升级到了Windows Server 2008,面临把SharePoint 应用和ASP.NET网站迁移到IIS7中,从新发布到公网。这里就谈谈如何在IIS7发布ASP.NET网站到公网。为了顺利迁移,首先搭建了一个VMware虚拟机…

谏言工信部:网站备案系统miibeian.gov.cn实在难用!

最近,因为工作需要,上了几次国家工业和信息化部的ICP/IP地址/域名信息备案管理系统http://www.miibeian.gov.cn/,实在是被它弄得很烦,忍不住要提几句批评意见,如果“不幸”被工信部有关官员看见,那就算是本…

“拯救网站运维经理赵明”有奖方案征集启事

赵明面临着被解雇的境地 “赵明!网站怎么又被***了?!”“赵明!你到底怎么搞的?!怎么又断线了?!”“赵明!你知道我们又损失多少吗?!”面临被解雇的…

美国创业公司所用到的Java开源建站工具

为什么80%的码农都做不了架构师?>>> 美国程序员Jon Scott Stevens,公布了他的创业公司所使用的开发工具清单。 他的语言平台是Java,开发项目是一个网站(还未上线)。所用到的工具都是开源的,可以免费得到。 在目前的创…

浅谈大型网站动态应用系统架构,互联网营销

动态应用,是相对于网站静态内容而言,是指以c/c、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。 大型动态应用系统…

seo专题之二:网站pr值

什么是Pr值?pr是英文PageRank的缩写,中文翻译过来中网页级别.网页排名.wiki的解释:是一种由搜索引擎根据网页之间相互的超链接计算的网页排名技术,以Google公司创办人拉里佩奇(Larry Page)之姓来命名。此技术通常和搜索引擎优化有关&#xf…

地址总线是单向还是双向_扬州双向闸机网站

扬州双向闸机网站 vuvypox扬州双向闸机网站 三辊闸门禁机芯原理:智能三辊闸门禁设备,机芯是闸机门禁设备的主要部件,机械式和电动式都可以,都有采用。一方面,产品具有品牌知名度时已经明确了市场定位和核心&#xff0c…

PHP 伪静态seo,利用Nginx伪静态进行SEO优化

摘要:好久之前就想做访问自动匹配匹配页面来进行SEO优化了,好多SEO优化都是教你思路,感...好久之前就想做访问自动匹配匹配页面来进行SEO优化了,好多SEO优化都是教你思路,感觉一点都不实用,今天我们就利用N…

有些网站打开一半空白_扎心!scihub所有镜像都已“无法打开”......

有粉丝在后台反应,之前介绍过的科研者之家的SCIHUB永久链接打开是空白。一种不祥的预兆来临,因为这个永久链接就是自动检索全网可用的scihub链接,并选择速度最快的一个,打开空白页,意味着全网目前没有可用的镜像.....赶…

网页模板快速建站工具_个人可以免费建站?自助网站建站方法科普

现在个人成立工作室、工作团队,或者做个人自媒体的越来越多,这就需要有一个能展示自己的平台。而建设个人网站,则是很好的选择。网站既可以展示个人信息,又能吸引粉丝,甚至还能让你做一个个人商城。如何建站呢&#xf…