- 浏览: 1230375 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
lankk:
lankk 写道事实上,在运行String s1=new St ...
理解String 及 String.intern() 在实际中的应用 -
lankk:
事实上,在运行String s1=new String(&qu ...
理解String 及 String.intern() 在实际中的应用 -
lankk:
同意1楼的说法http://docs.oracle.com/j ...
理解String 及 String.intern() 在实际中的应用 -
raoyutao:
...
jdk 线程池 ThreadPoolExecutor -
hongdanning:
理解了。之前困惑的一些明白了。谢谢分享。
理解String 及 String.intern() 在实际中的应用
web 前端 优化
浏览器
减少http请求 合并css js 图片
浏览器缓存
缓存更新 — 更新文件名
逐量更新 防止服务器压力突然增大
启用压缩 gz
页面渲染 css最上面 js最下面
减少cookie css js带cookie没意义 启用不同域名 这样请求静态资源就不会带上cookie
CDN加速 网络链路层优化
反向代理服务器 缓存
应用服务器
分布式缓存 memcache
缓存穿透 对取不到的值也缓存 防止攻击
磁盘
机械磁盘 顺序读快 随机读慢
数据库系统 2层索引B+树 3层
Nosql LSM树 N阶合并数 先操作内存中的树 超过阈值才与磁盘树合并
RAID 廉价磁盘冗余列阵
N块磁盘
RAID0 写入磁盘时 分成N份并发写入 读取, 读写快 无备份
RAID1 同时写入2块磁盘 备份
RAID10 RAID0 RAID1 结合 所有磁盘分成2份 并发写 同时备份
RAID3 分成N-1份 写入N-1块磁盘 第N块记录效验数据 (第N块相当于备份所有数据) N磁盘容易坏
RAID5 和RAID3相似 但不是固定写入第N块 循环写入所有磁盘 备份数据平均分布到所有磁盘
RAID6 和RAID5类似 但数据只写入N-2块磁盘 2块磁盘做备份 循环写
HDFS 服务器集群规模的备份
无状态服务
session管理
session复制 机器数量上去后 开销大
session绑定stick 单点失败
cookie 记录session cookie大小限制 每次都要传输cookie 关闭cookie不正常
session服务器 分布式缓存 数据库
服务 高可用
分级管理 核心服务 非核心
设置请求超时 请求会占用太长时间 占用连接资源
异步调用 减少等待时间 有些业务没法异步 必须确认成功才能往下走
服务降级 拒绝服务 关闭功能
幂等设计 防止重复调用
高可用 数据
缓存高可用 缓存是不是必要 是提供缓存可用 还是 加强数据库
CAP
分区耐受性 P 数据不会丢失 分区
可访问性 A 数据可用
数据一致性 C 分区数据不一致
数据强一致
数据用户一致 分区不一致 但同一用户看的到一致
数据最终一致
数据备份
冷备 简单 廉价 不能保证数据最终一致 不能保证可用(恢复备份要花时间)
热备 异步写入(一个写入就算成功)master slave 同步写入(全部写入才算成功)无主从
失效转移
失效确认 心跳检测 访问失败报告
访问转移
数据恢复 恢复可用数据副本个数
软件质量保证
网站发布 切掉流量 再部署 恢复流量
自动化测试
预发布验证 smoke test 外部用户无法访问 处理错误 fast failed
vcs
主干开发 分支发布 主干反应整个应用状态 便于管理 控制 持续集成, 并行开发时, 发布周期不同,主干可能是半成品状态(一部分做完了,一部分没做完)
分支开发 主干发布 分支独立 互不干扰
自动化发布 train 模型
灰度发布 用户测试 AB测试
运行监控
用户行为日志收集
服务器端日志 浏览器端js日志收集
性能监控 CPU MEM IO
运行数据报告 缓存命中率 响应时间 业务数据
监控管理
系统报警
失效转移
自动优雅降级
伸缩性设计 scalability
物理分离
单一服务器-》数据库分离-》缓存分离-》静态资源分离
分层分离
业务分离
单一功能服务器集群
服务器负载均衡
http重定向负载均衡
dns域名解析负载均衡
Dns有缓存 生效要时间
实践中作为第一级负载均衡
反向代理负载均衡
缺点 所有请求 响应的中转站 性能瓶颈
IP负载均衡
修改网络包IP地址
数据链路层负载均衡
修改mac地址,响应数据回去时不改IP不经过负载均衡服务器(进来时会经过) 代表产品 LVS
负载均衡算法
轮询 round robin
加权轮询 weighted round robin
Random
Least connections
Source IP hashing
缓存服务器集群
memcache
客户端API hash 分布
缺点 扩容的时候缓存需要重新计算offset 大部分会miss 解决办法 访问量少的时候扩容 模仿访问来预热缓存
一致性hash算法
有2的32次方个节点的环,集群服务器分布在环上,根据key算出对应的hash,看环上离此hash值最近的节点,放置数据。 当新加入服务器节点时,影响的只是一部分(key hash上次最近节点的数据),原有节点在环上分布越多,影响越少。
缺点是新加入的节点只分散了离它最近服务器的压力,解决办法是把一个物理节点虚拟成N个节点,分布到环上。这样新加入的机器可以分担N个节点的压力
通常使用二叉树查找
数据缓存服务器集群
关系数据库
主从读写分离
业务数据分库(跨库不能join)
数据多分片
扩容时数据需要迁移,一致性,可访问性。 解决办法,每个mysql实例上有多个子表, 新加服务器时,对一部分子表做同步复制,复制完成后,修改路由
invalid notification
nosql
hbase 由若干HRegion组成,每个HRegion存储一段key range的数据,当数据多时,key range分裂,分布到不同服务器做数据迁移
扩展性 extensibility
开闭原则
低耦合系统
降低耦合的方式 分布式队列 分布式服务
分布式队列
事件驱动
分布式服务
巨无霸系统
编译部署困难
代码分支管理困难
新增业务困难
纵向拆分
新业务为一个独立的web app
横向拆分
复用的业务拆分出来 部署为分布式服务
分布式服务特点
负载均衡
失效转移
高效远程通信
对应用最少侵入
版本管理
实时监控
网站安全
xss攻击 cross site script
危险字符转义
sql注入
参数消毒, sql预编译和参数绑定
csrf攻击 cross site request forgery
token 页面请求参数中嵌入随机数, 服务器端验证随机数
验证码
referer check
error code
html注释
文件上传执行
路径遍历
web 应用防火墙
网站安全漏洞扫描
信息加密技术 密钥安全管理
单向散列加密 md5 sha 加盐
对称加密算法 DES RC
非对称加密 RSA 信息安全传输(公钥加密,私钥解密) 数字签名(私钥加密,公钥解密)
密钥安全管理
密钥 算法 放在独立服务器
解密算法在应用系统, 密钥在独立服务器
信息过滤 反垃圾
文本匹配 trie算法 多级hash表 降噪处理
分类算法 Bayes算法
黑名单
电子商务风险控制
账户风险 黑客盗用 恶意注册账号
买家风险 恶意下单 抢购低价商品 欺诈退款
卖家风险 虚假发货 炒作信用 侵权品
交易风险 信用卡盗刷 支付欺诈
风控
分布式存储系统故障
瞬时故障 - 网络不好,GC,线程忙, 可自行恢复
自行重试
临时故障 - 网卡松动,系统升级,停机维护,内存坏,cpu过热, 人工干预恢复
读 - 路由到正常服务器, 写 - 临时存储服务器
永久故障 - 硬盘损坏,数据丢失
备份服务器做替换
秒杀系统架构
设计部署专门的秒杀系统
技术挑战
现有业务的冲击,高并发下数据库负载,网络带宽增加,直接访问下单的url
独立部署, 秒杀页面静态化, 临时租借带宽,CDN, 页面url加入随机数
页面购买按钮变亮,静态化页面里加入js控制, 静态页面刷新会动态请求js(文件小)
秒杀商品只有一个,保证只有一个用户买到。
放少量用户进入系统,其余直接显示秒杀结束页面
前端架构
CDN 动静分离 图片服务 反向代理 DNS
应用层架构
开发框架 页面渲染 负载均衡 session管理 动态页面静态化 业务拆分 虚拟化服务器
服务层架构
分布式消息 分布式服务 分布式缓存 分布式配置
存储层架构
分布式文件 关系数据库 nosql 数据同步
后台架构
搜索引擎 数据仓库 推荐系统
数据采集与监控
浏览器数据采集 服务器业务数据采集 服务器性能数据采集 系统监控 系统报警
安全架构
web攻击 数据保护
数据中心机房架构
机房架构 机柜架构 服务器架构
浏览器
减少http请求 合并css js 图片
浏览器缓存
缓存更新 — 更新文件名
逐量更新 防止服务器压力突然增大
启用压缩 gz
页面渲染 css最上面 js最下面
减少cookie css js带cookie没意义 启用不同域名 这样请求静态资源就不会带上cookie
CDN加速 网络链路层优化
反向代理服务器 缓存
应用服务器
分布式缓存 memcache
缓存穿透 对取不到的值也缓存 防止攻击
磁盘
机械磁盘 顺序读快 随机读慢
数据库系统 2层索引B+树 3层
Nosql LSM树 N阶合并数 先操作内存中的树 超过阈值才与磁盘树合并
RAID 廉价磁盘冗余列阵
N块磁盘
RAID0 写入磁盘时 分成N份并发写入 读取, 读写快 无备份
RAID1 同时写入2块磁盘 备份
RAID10 RAID0 RAID1 结合 所有磁盘分成2份 并发写 同时备份
RAID3 分成N-1份 写入N-1块磁盘 第N块记录效验数据 (第N块相当于备份所有数据) N磁盘容易坏
RAID5 和RAID3相似 但不是固定写入第N块 循环写入所有磁盘 备份数据平均分布到所有磁盘
RAID6 和RAID5类似 但数据只写入N-2块磁盘 2块磁盘做备份 循环写
HDFS 服务器集群规模的备份
无状态服务
session管理
session复制 机器数量上去后 开销大
session绑定stick 单点失败
cookie 记录session cookie大小限制 每次都要传输cookie 关闭cookie不正常
session服务器 分布式缓存 数据库
服务 高可用
分级管理 核心服务 非核心
设置请求超时 请求会占用太长时间 占用连接资源
异步调用 减少等待时间 有些业务没法异步 必须确认成功才能往下走
服务降级 拒绝服务 关闭功能
幂等设计 防止重复调用
高可用 数据
缓存高可用 缓存是不是必要 是提供缓存可用 还是 加强数据库
CAP
分区耐受性 P 数据不会丢失 分区
可访问性 A 数据可用
数据一致性 C 分区数据不一致
数据强一致
数据用户一致 分区不一致 但同一用户看的到一致
数据最终一致
数据备份
冷备 简单 廉价 不能保证数据最终一致 不能保证可用(恢复备份要花时间)
热备 异步写入(一个写入就算成功)master slave 同步写入(全部写入才算成功)无主从
失效转移
失效确认 心跳检测 访问失败报告
访问转移
数据恢复 恢复可用数据副本个数
软件质量保证
网站发布 切掉流量 再部署 恢复流量
自动化测试
预发布验证 smoke test 外部用户无法访问 处理错误 fast failed
vcs
主干开发 分支发布 主干反应整个应用状态 便于管理 控制 持续集成, 并行开发时, 发布周期不同,主干可能是半成品状态(一部分做完了,一部分没做完)
分支开发 主干发布 分支独立 互不干扰
自动化发布 train 模型
灰度发布 用户测试 AB测试
运行监控
用户行为日志收集
服务器端日志 浏览器端js日志收集
性能监控 CPU MEM IO
运行数据报告 缓存命中率 响应时间 业务数据
监控管理
系统报警
失效转移
自动优雅降级
伸缩性设计 scalability
物理分离
单一服务器-》数据库分离-》缓存分离-》静态资源分离
分层分离
业务分离
单一功能服务器集群
服务器负载均衡
http重定向负载均衡
dns域名解析负载均衡
Dns有缓存 生效要时间
实践中作为第一级负载均衡
反向代理负载均衡
缺点 所有请求 响应的中转站 性能瓶颈
IP负载均衡
修改网络包IP地址
数据链路层负载均衡
修改mac地址,响应数据回去时不改IP不经过负载均衡服务器(进来时会经过) 代表产品 LVS
负载均衡算法
轮询 round robin
加权轮询 weighted round robin
Random
Least connections
Source IP hashing
缓存服务器集群
memcache
客户端API hash 分布
缺点 扩容的时候缓存需要重新计算offset 大部分会miss 解决办法 访问量少的时候扩容 模仿访问来预热缓存
一致性hash算法
有2的32次方个节点的环,集群服务器分布在环上,根据key算出对应的hash,看环上离此hash值最近的节点,放置数据。 当新加入服务器节点时,影响的只是一部分(key hash上次最近节点的数据),原有节点在环上分布越多,影响越少。
缺点是新加入的节点只分散了离它最近服务器的压力,解决办法是把一个物理节点虚拟成N个节点,分布到环上。这样新加入的机器可以分担N个节点的压力
通常使用二叉树查找
数据缓存服务器集群
关系数据库
主从读写分离
业务数据分库(跨库不能join)
数据多分片
扩容时数据需要迁移,一致性,可访问性。 解决办法,每个mysql实例上有多个子表, 新加服务器时,对一部分子表做同步复制,复制完成后,修改路由
invalid notification
nosql
hbase 由若干HRegion组成,每个HRegion存储一段key range的数据,当数据多时,key range分裂,分布到不同服务器做数据迁移
扩展性 extensibility
开闭原则
低耦合系统
降低耦合的方式 分布式队列 分布式服务
分布式队列
事件驱动
分布式服务
巨无霸系统
编译部署困难
代码分支管理困难
新增业务困难
纵向拆分
新业务为一个独立的web app
横向拆分
复用的业务拆分出来 部署为分布式服务
分布式服务特点
负载均衡
失效转移
高效远程通信
对应用最少侵入
版本管理
实时监控
网站安全
xss攻击 cross site script
危险字符转义
sql注入
参数消毒, sql预编译和参数绑定
csrf攻击 cross site request forgery
token 页面请求参数中嵌入随机数, 服务器端验证随机数
验证码
referer check
error code
html注释
文件上传执行
路径遍历
web 应用防火墙
网站安全漏洞扫描
信息加密技术 密钥安全管理
单向散列加密 md5 sha 加盐
对称加密算法 DES RC
非对称加密 RSA 信息安全传输(公钥加密,私钥解密) 数字签名(私钥加密,公钥解密)
密钥安全管理
密钥 算法 放在独立服务器
解密算法在应用系统, 密钥在独立服务器
信息过滤 反垃圾
文本匹配 trie算法 多级hash表 降噪处理
分类算法 Bayes算法
黑名单
电子商务风险控制
账户风险 黑客盗用 恶意注册账号
买家风险 恶意下单 抢购低价商品 欺诈退款
卖家风险 虚假发货 炒作信用 侵权品
交易风险 信用卡盗刷 支付欺诈
风控
分布式存储系统故障
瞬时故障 - 网络不好,GC,线程忙, 可自行恢复
自行重试
临时故障 - 网卡松动,系统升级,停机维护,内存坏,cpu过热, 人工干预恢复
读 - 路由到正常服务器, 写 - 临时存储服务器
永久故障 - 硬盘损坏,数据丢失
备份服务器做替换
秒杀系统架构
设计部署专门的秒杀系统
技术挑战
现有业务的冲击,高并发下数据库负载,网络带宽增加,直接访问下单的url
独立部署, 秒杀页面静态化, 临时租借带宽,CDN, 页面url加入随机数
页面购买按钮变亮,静态化页面里加入js控制, 静态页面刷新会动态请求js(文件小)
秒杀商品只有一个,保证只有一个用户买到。
放少量用户进入系统,其余直接显示秒杀结束页面
前端架构
CDN 动静分离 图片服务 反向代理 DNS
应用层架构
开发框架 页面渲染 负载均衡 session管理 动态页面静态化 业务拆分 虚拟化服务器
服务层架构
分布式消息 分布式服务 分布式缓存 分布式配置
存储层架构
分布式文件 关系数据库 nosql 数据同步
后台架构
搜索引擎 数据仓库 推荐系统
数据采集与监控
浏览器数据采集 服务器业务数据采集 服务器性能数据采集 系统监控 系统报警
安全架构
web攻击 数据保护
数据中心机房架构
机房架构 机柜架构 服务器架构
发表评论
-
业务unique ID的生成策略分析
2017-02-20 16:31 1011业务unique ID的生产策略分析 需求上 ... -
ServiceLocatorFactoryBean 学习
2016-01-27 14:36 3384今天看一个新项目 ... -
用户注册流程的一个好列子
2015-05-06 15:42 1259最近用了一个app, 《不背单词》, 里面的用户注册很有意 ... -
jvm notes
2014-12-16 15:19 1689运行时数据区 program counter re ... -
window server 2008 task 不执行问题
2014-01-24 10:53 3925要在win2008下设置一个定时任务, .bat执行的任务, ... -
(转)date format
2013-12-04 13:40 1193深入理解Java:SimpleDateFormat安全 ... -
POI excel 触发 公式 计算 删除空白行
2013-04-15 12:44 5083用POI api修改excel 表格数据后, 想触发计算公式 ... -
java 汉字 \u 转换
2012-08-08 13:32 2276import org.apache.c ... -
地址解析api资源
2011-06-28 10:50 1470Search for location What you ... -
cvs 查看个人提交记录
2011-06-23 11:25 8795eclipse的cvs插件不能看自己在整个项目的提交历史 但 ... -
html5 学习笔记
2011-06-13 18:32 1425基本 <!doctype html> & ... -
twitter 新 share url
2011-05-27 10:39 1180http://twitter.com/intent/tweet ... -
linkedin share
2011-05-26 16:47 1548分享的时候linkedin 也是去url上抓取信息的 但他和 ... -
facebook share
2011-05-25 20:49 1930通过url share到facebook时 是由faceb ... -
php 字符串 包含 比较 替换
2010-08-30 20:56 5244if(strpos($str, 'ok') !== fals ... -
查看 http 请求
2010-05-25 19:34 1267httpdebugerpro -
evernote 太强大了
2010-03-10 15:42 2073在PC MAC IPHONE ANDROID 上面都有客户端, ... -
open command window here, window xp下的一个好工具
2010-03-09 11:07 1461发现一个windows下的工具,可以让你对着一个文件夹,右键, ... -
用批处理设置jdk和tomcat环境变量
2010-03-05 17:26 2522学过Java编程的人应该知道,都是要设置JDK的环境变量,这个 ... -
java 扰码 RETROGUARD
2010-03-05 16:23 2350RETROGUARD FOR JAVA(tm) OBFUS ...
相关推荐
《大型网站技术架构》读书笔记思维导图,初始架构、服务数据分离、缓存改善性能、服务器集群化、数据库读写分离、反向代理CDN、分布式FS/DBS、NOSQL和搜索引擎、业务切分
大型网站技术架构_核心原理与案例分析_李智慧 pdf
李智慧老师的大型网站技术架构的读书笔记
站在更高的维度做架构,来自一线互联网大厂的经验总结,少走弯路少踩坑,值得拥有。
【大型网站系统与Java中间件实践读书笔记(二)】 大型网站系统是指处理海量数据、应对高并发访问、以及应对复杂业务逻辑的网络应用。在这些系统中,Java中间件扮演着关键角色,帮助实现系统的扩展性和高效运行。...
文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架构参考。一部分为读书笔记,一部分是个人经验总结。对大型分布式网站架构有很好的参考...
【CCNA中文读书笔记】是一份详尽的网络技术学习资料,主要针对Cisco Certified Network Associate(CCNA)认证考试进行整理。这份笔记包含了CCNA学习的各个重要章节,旨在帮助学习者深入理解网络基础概念,熟悉Cisco...
【架构师】读书笔记模板是针对《架构师》杂志202x年第7期的一份详细学习记录。这本书关注的是IT行业中与架构设计相关的热点问题、理论探讨以及技术趋势,特别是针对云原生、大数据分析和数据架构的变革。通过思维...
根据给定的“计算机网络读书笔记”文件信息,以下是对其中一些关键知识点的详细解析: ### 计算机网络概述 计算机网络是通过通信设备和线路将地理位置分散、功能独立的多个计算机系统互联起来,以功能完善的网络...
《Springboot实现学生读书笔记共享平台》 在当今数字化时代,知识分享与交流的重要性日益凸显。...关键词:读书笔记共享平台,Java语言,Springboot框架,B/S架构,软件开发流程,用户交互,知识分享,资源管理。
通过以上内容可以看出,《CCNA读书笔记红头发版》详细介绍了网络互联的基础概念和技术,尤其是对于OSI参考模型的解释,为读者提供了深入理解网络工作原理的机会。这对于IT行业的学习者来说是非常宝贵的知识财富。
### SQL Server 2005 读书笔记 #### 一、SQL Server 2005 概览 **SQL Server 2005** 是微软公司发布的一款企业级数据库管理系统,它是在 SQL Server 2000 基础上的重大升级版本。此版本在性能、安全性、可管理性等...
### 信息系统项目管理师读书笔记 #### 一、项目整体管理 **项目整体管理**是信息系统项目管理的核心组成部分,它负责定义、标识、协调、整合项目管理的所有过程,确保项目达到预期的结果。主要包括以下几个关键...
这不仅简化了跨系统间的数据交换,还促进了微服务架构的发展。 #### 六、ASP.NET与数据库的集成 数据库是Web应用的重要组成部分,负责存储和管理数据。ASP.NET支持多种数据库系统,包括: - **Oracle**:作为业界...
在大型项目中,设立系统架构师的角色,将设计与实现分离,有助于实现这一目标。 最后,书中指出在系统设计中,应以用户需求为导向,避免技术驱动的设计,确保整个系统反映出单一而连贯的设计思路。这样不仅能够提升...
学习笔记都在这里了 好好学习,天天向上!生命不息,阅读不止! 本仓库参考以下书籍或资料 JavaScript高级程序设计(第三版) ...大型网站技术架构核心原理与案例分析 锋利的jQuery JavaScript设计模式与开发实践
在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是用于构建企业级应用程序的框架,它由Oracle公司提供并被广泛应用于大型分布式系统、Web应用和后端服务的开发。本实录将深入探讨J2EE开发的全过程,包括但...
这份"ORACLE我的深深的体会很不错的学习资料"压缩包,显然包含了一些关于Oracle数据库的学习资源,可能是教程、笔记、实战案例或者问题解答,对于想要深入理解和掌握Oracle技术的人来说是一份宝贵的资料。...
### 计算机基础知识及应用...以上就是CCNA中文读书笔记第1章的主要内容总结,涵盖了互连网络的基础概念、关键技术以及OSI参考模型的详细介绍。通过对这些知识点的学习,有助于深入理解计算机网络的工作原理和技术细节。