关于可用性的阅读笔记
在看了《大型网站技术架构:核心原理与案例分析》这本书关于可用性介绍部分后,我有了很多感悟。
在我之前的世界里,软件的可用性,似乎只停留在软件能用,遇到了错误,程序被迫终止似乎是一件很正常的事情,我甚至会将其归结于这是用户的问题,这届用户过于难带从而导致了软件的崩溃,而忽视了自身软件存在的严重问题。而经过阅读之后,我发现对于网站来说,高可用性是非常重要也是必要的属性,对于大型网站而言,网站宕机、服务不可用是一个非常重大的事故,轻则会影响网站声誉,重则会摊上官司,将会给整个公司带来难以承受的后果。
针对于高可用性的重要,维护网站高可用性的手段也便凸显了出来。对于网站而言,将多个服务器组成一个集群,通过这个集群向外界提供服务是极为有效地方式。在集群中,当一台服务器发生宕机时,只需要将请求切换到别的服务器,网站的高可用性便得以完成。然而这也产生了一个非常重要的条件,那就是当一个服务器发生宕机时,用户所提出的请求不能因为服务器的宕机而丢失,如果请求丢失,那么即使是另一台服务器想要接手业务,那也便无能为力了。
与此同时,也可以采用别的方式提高网站的高可用性,例如:
分级管理:低优先级的服务通过启动不同的线程或者部署在不同的虚拟机上进行隔离,而高优先级的服务则需要部署在不同的物理机上,核心服务和数据甚至需要部署在不同地域的数据中心。
设置缓冲区与排队机制,尽量避免数量巨多的连接同时对服务器发送请求,将请求分别放置在不同的缓冲区,根据请求处理的实际情况对缓冲区内的请求进行有效排队,从而提高网站的高可用,提高用户体验。
异步调用:如果采用异步调用的方式,应用程序将用户注册信息发送给消息队列服务器后立即回用户注册成功响应。而记录用户注册信息到数据库、发送用户注册成功邮件、调用用户服务开通权限这三个服务作为消息的消费者任务,分别从消息队列获取用户注册信息异步执行。即使邮件服务队列阻塞,邮件不能成功发送,也不会影响其他服务的执行,用户注册操作可顺利完成,只是晚一点收到注册成功的邮件而已。
以上便是我对高可用的大概的理解。