大型网站技术架构整理(Ch. 5-8)
2016-05-19 13:40
393 查看
- Chapter 5.万无一失:网站的高可用架构
1、一个典型的网站设计通常遵循基本分层架构模型。典型的分层模型是三层,即应用层、服务层、数据层;应用层主要负责具体业务逻辑处理;服务层负责提供可复用的服务;数据层负责数据的存储与访问。2、位于应用层的服务器通常为了应对高并发的访问请求,会通过负载均衡设备将一组服务器组成一个集群共同对外提供服务,当负载均衡设备通过心跳检测等手段监控到某台应用服务器不可用时,就将其从集群列表中剔除,并将请求分发到集群中其他可用的服务器上,使整个集群保持可用,从而实现应用高可用。
3、应用服务器的高可用架构设计主要是基于服务无状态这一特性,但是事实上,业务总是有状态的,例如购物车记录用户的购买信息等。Web应用中将这些多次请求修改使用的上下文对象称作会话(Session),单机情况下,Session可由部署在服务器上的Web容器(如JBoss)管理。
4、集群环境下,Session管理主要有以下四种手段:Session复制(不建议采用)、Session绑定、利用Cookie记录Session、Session服务器(建议采用)。Session绑定可以利用负载均衡的源地址Hash算法实现,负载均衡服务器总是将来源于同一IP的请求分发到同一台服务器上,这种方法亦称作会话黏滞。
利用Cookie记录Session有一些缺点:比如Cookie大小限制,能记录的信息有限;每次请求响应都需要传输Cookie,影响性能;如果用户关闭Cookie,访问就会不正常。
Session服务器的方法实际上是将服务器的状态分离,分为无状态的应用服务器和有状态的Session服务器,然后针对两种服务器的不同特性分别设计其架构。
5、扩大缓存服务器集群规模的一个简单手段就是整个网站共享同一个分布式缓存集群,单独的应用和产品不需要部署自己的缓存服务器,只需要向共享缓存集群申请缓存资源即可。
6、CAP原理认为,一个提供数据服务的存储系统无法同时满足数据一致性(Consistency)、数据可用性(Availibility)、分区耐受性(Partition Tolerance,系统具有跨网络分区的伸缩性)这三个条件。在大型网站中,通常会选择强化分布式存储系统的可用性(A)和伸缩性(P),而在某种程度上放弃一致性(C)。一般说来,数据不一致性通常出现在系统高并发写操作或者集群状态不稳(故障恢复、集群扩容······)的情况下,应用系统需要对分布式数据处理系统的不一致性有所了解,并进行某种意义上的补偿和纠错,以避免出现应用系统数据不正确。
7、为大型网站而设计的各种NoSQL数据库(如HBase)更是将数据备份机制作为产品主要的功能点之一。
关系数据库热备机制就是通常所说的Master-Slave同步机制。写操作只访问Master数据库,读操作只访问Slave数据库。
失效转移操作由三部分组成:失效转移、访问转移、数据恢复。
8、比较流行的Web自动化测试工具是ThoughtWorks开发的Selenium。
9、在网站应用中强调的一个处理错误的理念是快速失败(fast failed),即如果系统在启动时发现问题就立刻抛出异常,停滞启动让工程师介入排查错误,而不是启动后执行错误操作。
10、代码控制中,目前大部分网站使用的源代码版本控制工具是SVN。主干开发、分支发布方式,主干代码反应目前整个应用的状态,一目了然,便于管理和控制,也利于持续集成。分支开发,主干发布方式,各个分支独立进行,互不干扰,可以使不同发布周期的开发在同一应用中进行。目前主要使用的是分支开发、主干发布方式。不过相信Git成为网站的标准版本控制工具是迟早的事。
11、目前许多网站逐步开发基于实时计算框架Storm的日志统计与分析工具。目前网站使用比较广泛的开源性能监控工具是Ganglia,它支持大规模服务器集群,并支持以图形的方式在浏览器展示实时性能曲线。
对公司而言,可用性关系网站的生死存亡。
相关文章推荐
- 如何在自己的网站中使用KindEditor
- 转:从三层架构到MVC-MVP
- 第11课:Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究
- PHP网站提速 篇二
- 最近公司网站一直给人刷验证码,以及API接口。
- iOS应用架构谈 组件化方案
- iOS应用架构谈 本地持久化方案及动态部署
- iOS应用架构谈 view层的组织和调用方案
- iOS应用架构谈 开篇
- iOS中监视外部网站的播放事件
- Phpcms V9手机门户设置教程:怎么用PC V9做手机网站
- 实现电商平台从业务到架构的治理体系
- 第99讲:使用sparkStreaming实战对论坛网站动态行为的多维度分析下
- 定制班第二课 -----通过案例对Spark Streaming透彻理解三板斧之二:解密SparkStreaming运行机制和架构
- 架构师是做什么的?
- 怎么利用源码快速建立网站
- 微信如何通过自己的网站获取粉丝?
- 网站优化需要三个稳定性
- [系统架构]分布式日志收集系统
- HLS 学习网站