互联网架构基本思路

该文介绍了《大型网站技术架构》中的核心概念,包括分层、分割、分布式、集群、缓存等架构模式,强调了异步处理、冗余备份、自动化和安全措施的重要性。同时,讨论了性能优化、高可用性、伸缩性和安全性等方面的关键策略,如CDN、反向代理、数据库优化和安全防护机制。
摘要由CSDN通过智能技术生成

前言:很久之前看的一本书,《大型网站技术架构》的书,李智慧著。当时写的一些内容,舍不得丢掉,就记录下来。这本书,讲的不深,有些旧。但是整体作为入门,还是值得快看的。

1、模式

1.1 分层

规划软件的逻辑结构,禁止跨层次、逆向调用

1.2 分割

独立,首页、搜索页面、商品详情

1.3 分布式 (更多计算机远程调用协同工作、分布式配置、分布式锁、分布式文件)
  • 分布式应用和服务(分层或者分割后的服务分开部署)
  • 分布式静态资源
  • 分布式数据和存储(传统数据库分布式部署、NoSQL产品)
  • 分布式计算(搜索引擎、数据仓库、数据分析、Hadoop、MapReduce,讲程序分发到数据所在位置以加速计算)
1.4 集群

负载均衡、提高系统的可用性

1.5 缓存
  • CDN:热点内容分发网络,部署在距离终端用户最近的网络服务商。
  • 反向代理:前端架构的一部分,缓存静态资源。
  • 本地缓存:本机内存中访问,无需访问数据库(redis)
  • 分布式缓存:数据量庞大导致内存空间不是单机能承受的。
1.6 异步(典型生产者消费者模式)
  • 提高系统可用性
  • 加快网站响应速度
  • 消除并发访问高峰
1.7 冗余

冷备份(定期存储)、主从分离(热备份)。需要全球范围部署灾备数据中心。

1.8 自动化

自动化监控、自动化预警、自动化时效转移、自动化失效回顾、自动化降级、自动化分配资源。

1.9 安全

密码+手机校验码。XSS攻击、SQL注入。

2、 核心架构要素

1、性能

性能指标:响应时间、并发数、吞吐量、性能计数器(线程数、CPU、内存)

1、WEB前端优化
  • 减少Http请求
  • 使用浏览器缓存
  • 启用压缩
  • CSS放在页面最上面,JS放在页面最下面
  • 减少Cokkie的传输(静态资源独立域名访问)
2、CDN加速

内容分发网络,Content distribute Network。部署在运营商的机房。

3、反向代理

多台机器做负载均衡,改善网络高并发情况下的性能。

4、应用服务器优化
  • 分布式缓存、二八定律(80%的访问、落在20%的数据上)
  • 合理使用缓存
    • 频繁修改的数据
    • 没有热点的访问
    • 数据不一致和脏读
    • 缓存可用性(缓存服务不可用,缓存雪崩,是否需要备份缓存)
    • 缓存预热(LRU-最近最久未用算法)
    • 缓存穿透(恶意攻击,缓存中没有的key)
    • 分布式缓存(memcached)
  • 异步操作(消息队列,先返回结果)
  • 使用集群(负载均衡)
  • 代码优化
    • 多线程(无状态对象、局部对象、并发资源使用锁)
    • 资源复用(连接池)
  • 数据结构
    • 解决hash冲突
  • 垃圾回收
  • 存储性能的优化
    • B+树(排序后存储)数据库,采用两极索引的B+树,三层树结构。
    • LSM树 N阶 合并树,可减少磁盘的访问次数。

2、可用性

1、高可用的应用
  • 通过负载均衡实现失效转移。
  • 无状态的请求很少,因此需要进行使用Session服务器。
2、高可用的服务
  • 分级管理(订单会比评价服务优先级高,不会有连锁反应)
  • 超时设置(不会卡死,抛出异常)
  • 异步调用
  • 服务降级(拒绝服务、关闭服务)
  • 幂等性设计(请求重发,结果相同)
3、高可用的数据
  • CAP原理 一致性、可用性、分区耐受性
  • 数据备份
  • 失效转移
    • 失效确认
    • 访问转移
    • 数据恢复
4、高可用网站软件质量保证
  • 网站发布
  • 自动化测试
  • 预发布测试
  • 代码控制
  • 自动化发布
  • 灰度发布(回滚、切流)
5、网站运行监控
  • 监控数据采集
  • 监控管理

3、伸缩性

1、应用服务器的伸缩性设计
  • Http重定向负载均衡
  • DNS域名解析负载均衡
  • 反向代理负载均衡
  • IP负载均衡
  • 数据链路层负载均衡
2、负载均衡算法
  • 轮询
  • 加权轮询
  • 随机
  • 最少链接
  • 源地址散列(Hash计算访问者的IP)
3、分布式缓存集群伸缩性设计

缓存通过计算hash取余数,落到具体哪台机器。扩容就会很麻烦,100台线性增长不命中率是99%(解决方案可以使用hash环,选最近的服务器、但是压力不均衡,需要增加一层来进行,多个虚拟节点对应一台服务器,hash环的优化)

4、关系型数据库的伸缩性设计

主从(利用数据库支持数据复制的功能)。
分库(业务层面,局限性就是垮数据库不能Join操作)
A数据库和B数据库SQL解析模块以及SQL路由模块协同,通过结果合并模块进行返回结果。根据id的奇偶。

5、NoSQL的伸缩性设计

放弃了结构化查询语言和事务的一致性。更关注高可用和可伸缩性。HBase,分布式文件系统。

4、扩展性

降低耦合,较少的依赖,提高软件的复用性。对扩展开放,对修改关闭。
分布式消息队列进行降低耦合。事件驱动框架。消息队列利用发布-订阅的模式进行工作的。
利用磁盘可以实现消息队列的高可用性。
利用开放平台建设网站生态圈。

5、安全性

1、XSS攻击

攻击垮站点脚本攻击,篡改网页HTML脚本。

2、注入攻击

请求中注入恶意的SQL命令。

3、CSRF攻击

跨站点请求伪造,伪造身份,窃取请求者身份。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值