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

转载请标明出处:
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 电子商务风险控制
  • 风险
    • 账号风险
    • 买家风险
    • 卖家风险
    • 交易风险
  • 风控
    • 规则引擎
    • 统计模型


扫码关注公众号有惊喜

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

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java安全漫谈是一本关于Java安全的书籍,深入探讨了Java应用程序在网络环境中的安全性和相关的安全漏洞。该书内容涵盖了Java安全基础、Java虚拟机的安全机制、Java安全管理、Java安全开发等方面的知识。 首先,Java安全基础部分介绍了Java安全模型的原理和特点,包括Java类库的安全特性、权限管理和访问控制、安全策略配置等。这部分内容可帮助开发人员了解Java应用程序的安全需求,并提供相应的解决方案。 其次,Java虚拟机的安全机制是Java应用程序的基石。该书介绍了Java虚拟机的安全沙箱和类加载机制,并讨论了如何利用这些安全机制避免恶意代码的执行和隐患的防范。 此外,Java安全管理部分从用户角度出发,介绍了Java应用程序的安全管理工具和技术,如Java安全策略文件、权限管理和安全认证等。开发人员可以通过合理配置和使用这些工具来提高Java应用程序的安全性。 最后,该书还涉及了Java安全开发过程中的一些最佳实践和常见安全漏洞,如输入验证、跨站脚本攻击(XSS)、SQL注入、跨站请求伪造(CSRF)等。通过学习和掌握这些知识,开发人员可以编写出更加安全的Java应用程序。 总而言之,Java安全漫谈是一本全面讨论Java安全的书籍,内容涵盖了Java安全基础、Java虚拟机的安全机制、Java安全管理和Java安全开发等方面的知识。它对于开发人员和安全从业人员来说,都是一本重要的参考书,有助于提高Java应用程序的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值