Created
December 26, 2013 10:34
-
-
Save chenzx/8132087 to your computer and use it in GitHub Desktop.
大型网站技术架构:核心原理与案例分析
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
大型网站技术架构:核心原理与案例分析 | |
跳转至: 导航、 搜索 | |
p XI. 。。。但能在比较短的时间内解决这些技术问题,也说明了网站架构其实并不难,真正能解决问题的技术一定是简单的 | |
大内存服务器作为分布式缓存 | |
缓存预热、缓存穿透(请求不存在的数据?) | |
JBoss Cache | |
Memcached:TCP+文本命令? | |
基于Libevent | |
应用服务器集群+负载均衡 | |
Session管理:复制 -> 根据源地址Hash映射、Cookie | |
Session服务器(SOA?)+SSO | |
LB | |
HTTP重定向 | |
DNS轮询 | |
反向代理 | |
IP:SNAT、或LB服务器作为内网物理服务器的网关 | |
问题:最大吞吐量受制于LB的网卡带宽;能不能使响应数据从真实物理服务器返回给用户呢?=> | |
数据链路层LB | |
三角传输模式:不需要IP地址,只修改目标mac地址,并把物理服务器的虚拟IP配置为一样(?)“直接路由(DR)” | |
=> LVS | |
数据库读写分离 | |
反向代理+CDN | |
分布式文件系统/分布式数据库 | |
NoSQL和搜索引擎 | |
业务拆分,分布式服务(SOA?) | |
12306业务架构修改:排队机制、分时段售票 | |
异步 | |
内存共享队列 -> 分布式消息队列? | |
冗余 | |
自动化 | |
安全 | |
XSS攻击(其实就是往正常用户的页面注入了恶意JS脚本) | |
注入攻击 | |
CSRF攻击(攻击者伪造一个正常用户到目标网站的请求,前提是用户已经在目标网站上记住了登陆) | |
防御:表单请求附带安全Token、验证码、Referer检查 | |
Web应用防火墙:ModSecurity | |
新浪微博 | |
MPSS -> 虚拟机(不同虚拟机上可使用相同端口号) | |
同步推 -> 异步推拉(+消息队列) | |
p53 任何可以晚点做的事情都应该晚点做? | |
多级缓存 | |
核心架构要素 | |
性能 | |
可用性 | |
伸缩性 | |
对于缓存服务器集群,加入新服务器可能导致缓存路由失效,需改进算法以保证可访问性 | |
扩展性 | |
安全性 | |
性能测试指标: | |
响应时间 | |
并发数 | |
吞吐量(TPS HPS QPS) | |
性能计数器 | |
B+树 VS LSM树 | |
RAID VS HDFS | |
(优雅的)服务降级 | |
幂等(API)设计 | |
CAP原理 | |
一致:强一致、用户一致、最终一致 | |
代码管理 | |
主干(trunk)开发、分支(tag)发布(SVN?需要大量自动测试集),分支上发现的bug需要merge回主线 | |
分支开发、主干发布(Git?) | |
网站火车发布模型(哈哈) | |
渐进发布(若发现故障需回滚?) | |
一致性Hash + 虚拟节点(一台物理服务器映射多个key) | |
分布式关系数据库 | |
Amoeba | |
Cobar(SQL路由):不能处理跨库JOIN和分布式事务 | |
HBase | |
HRegion | |
高手定律:这个世界只有遇不到的问题,没有解决不了的问题 | |
朴素Bayes + 特征值的关联依赖 -> TAN + 关联规则的聚类挖掘 -> ARCS | |
Wikipedia架构:GeoDNS + LVS + Squid + Lighttd + PHP + Memcached + Lucene + MySQL | |
服务器端优化:APC + ImageMagicK + Tex + PHP strstr() ? | |
Doris? | |
网购秒杀 | |
大型网站故障案例分析 | |
写log引发故障 => log服务器存储应分离、抑制log生成数量 | |
高并发访问数据库 => 首页最好是静态的 | |
加锁导致的不定时超时 => 似乎是存在优先级反转的问题? | |
应用启动不同步 => 后端应先于前端启动 | |
大文件读写导致磁盘被独占 => 不要共用存储服务器(原则:根据应用及数据特征设计) | |
不规范的代码提交流程 => 加强提交时的diff检查及review | |
p198 新员工最不需要做的事情就是证明自己的能力 | |
我对LVS有了点兴趣:但是,对多个物理服务器配置相同的虚拟IP,不会有问题吗? | |
感觉TCP/IP协议栈的某些底层服务需要修改,以避免冲突 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment