大型网站技术架构学习摘要
网站架构目标与挑战--网站架构是不断调整的过程,如何高效、精准、灵活扩展需要结合业务发展调整。
1高效率[可用性](high availability): 负载均衡 数据备份 异地容灾
2 高精确性,高性能(high performance):高速缓存 并行计算 异地镜像
3 可伸缩性(Scalability):开发框架 多次设计 业务分割
最初单台服务器又放web服务又放db服务,随着发展web和db服务分离,动静页面分离,再发展然后多台服务器,就需要考虑负载均衡、高性能等。
Step1]Web动静态资源分离及其与DB物理分离--
优点:“简单”、安全性提高
缺点:存在单点,谈不上高可用性(high availability架构目标)
技术点:应用设计要保证可扩展(framework很重要Spring/Beetle)、Web Server动/静态资源分离
Web Server(Apache\Nginx\IIS\JBoss…)、
Database Server(Mysql\Oracle\Redis…)
缓存处理-- 优点:简单有效、维护方便
缺点:依然存在单点
技术点:客户端(浏览器)缓存、前端页面缓存、页面片段缓存、本地数据缓存/数据库缓存
客户端(浏览器)缓存--能够让浏览器缓存的数据一定要缓存;浏览器能够处理的运算,决不放在服务器端来处理。
前端页面缓存--http方向代理服务器
页面片段缓存ESI(edge side includes)--ESI需要服务器端支持,常见apache(mod_esi)、WebLogic、
JSP标签库(JESI)等。ESI是一个基于XML的标记语言,目的是在HTTP中组装各种资源。
本地数据缓存--需要考虑两个层面,从数据库和web服务器考考缓存
增加机器做HA、数据库读写分离--优点:增加服务器和HA机制,系统性能及可用性得到保证
缺点:读写分离,增加程序难度,架构变复杂,维护难度增加
技术点:负载均衡、DAL、数据库读写分离
Apache Hadoop(HDFS|Map/Reduce|HBase)
架构设计理论与原则
■关于数据一致性—ACID vs BASE
■关于分布式系统—CAP理论
■无共享架构(Share Nothing Architecture)
■ED-SOA架构
■考量成本,先硬后软原则
语言的选择意味着不同的架构路线、不同的开发\测试框架、不同的部署方式及不同的开发效率,最终到底,语言选择涉及到资源成本。
钱和人是最终要的o(∩_∩)o…