一.对 扩展性 和 伸缩性 进行区分
一).扩展性指的是: 当系统增加新功能时,不需要对现有系统的结构和代码进行修改。
二).伸缩性指的是: 利用集群的方式增加服务器的数量、提高系统的整体事务吞吐能力。
二.可扩展的 网站架构
一)通过模块分布式部署 以降低耦合性
三.分布式消息队列(降低系统耦合性)
一)事件驱动架构
1.操作系统中的生产者消费者模式 就是 典型的事件驱动架构
2.而在大型网站架构中, 分布式消息队列 就是 事件驱动架构的 一种具体实现手段
3.而消息队列 有利用 发布-订阅模式工作
为什么叫 消息队列 ? 先进先出
发布者 发布消息 消息队列未满 消息进入队列
订阅者 消息队列不为空 消息从队列中弹出
先进先出
优点:具有更好的 响应延迟
更厉害的---分布式消息队列
通过一个消息队列服务器 (服务器本地内存队列)实现
1.伸缩性,直接在分布式集群中增加主机
2.可用性,
通过内存和磁盘的相互读写 解决了 内存队列大小限制 的问题
通过在 生产者服务器中 备份消息 解决了 消息队列服务器宕机 的问题
四. 分布式服务(降低系统耦合性)
可复用的业务平台
分布式消息队列通过 消息 解耦
而分布式服务通过 接口 解耦
一).问题: 随着网站架构的不断发展,一个web应用中往往聚合了大量的应用和服务组件,这个巨无霸带来了很多问题:
1.编译部署困难
2.代码分支管理困难
3.数据库连接耗尽
4.新增业务困难(可扩展性差)
二).解决
1.纵向: 一个webapp变多个webapp
2.横向: 相同功能 模块化、分布化
三).需求和特点
1.负载均衡
2.失效转移
3.高效的远程通信
4.整合异构系统
5.对应用最少入侵(渐进式发展)
五.可扩展的数据结构
一)Sql => NoSql
六.利用开放平台建设网站生态圈--网站的安全架构
一).网站应用攻击与防御
1.XSS(跨站脚本)攻击
类型: 反射性 持久性
解决方案: 消毒 HttpOnly
2.sql注入
3.CSRF(跨站请求伪造)
攻击的主要原理: 窃取用户身份
防御手段:
1.表单token: 通过每次提交时带上 服务器随机产生并放入response的token随机数,对用户的身份进行验证,而坏蛋是无法获取token的(同源策略)
2.验证码
3.referrer 字段
http 请求头首部的referer字段 表明了 请求的来源
同时也是 图片防盗链 的原理
不是自己网站的的请求获取不到图片
二). 信息加密技术
1.单项散列加密
特点:
1. 不同长度 => 相同长度
2. 散列程度非常大
常见算法: MD5 SHA
2. 对称加密
加密解密一个密钥 => DES
3. 非对称加密
特点:
1.公开密钥 + 私有密钥
2.一个加密 另外一个可以解密
应用场景:
1.信息安全传输
信息发送者(用户)通过 公开的(全世界都知道)的密钥 对明文进行加密 然后将密文传给 信息接收者(网站) 而只有接收者才有 私钥 所以只有接收者能看到明文的内容
2.数字签名
而数字签名与 安全传输 正好相反 发送者 用自己的 私钥 对明文的一小段进行加密然后随密文一起发送到服务器 因为私钥具有唯一性 所以能够标示用户的身份 具有签名的效用
4.密钥安全管理
密钥已明文的方式进行存储 不安全 下面是两种安全管理密钥的方式
独立部署(服务器,硬件设备),专人维护
应用服务器提供 加解密接口
密钥服务器提供 加解密服务
多个密钥存储服务器 单独专人维护
三). 信息过滤与反垃圾
1.文本匹配
正则表达式 => 多级Hash
2.分类算法
朴素贝叶斯算法
3.黑名单
Hash表 => 布隆过滤器
4. 电子商务风险控制
通过设定某些规则,对用户受骗的风险进行控制
(例如,qq异地登录)