您的位置:首页 > 运维架构 > 网站架构

大型网站技术架构整理(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,它支持大规模服务器集群,并支持以图形的方式在浏览器展示实时性能曲线。

对公司而言,可用性关系网站的生死存亡。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: