大型网站技术架构阅读笔记

      对于每个网站来说可用性是非常重要的,它描述的是网站的可有效访问的特性。因为在网页运行过程中硬件故障是常态,所以高可用架构设计的主要目的就是保证服务器硬件故障时服务依然可以使用,数据依然保存并能够被访问,其主要手段就是数据和服务的冗余备份及失效转移。一般典型的网站设计将架构分为三层即应用层、服务层和数据层。大型网站架构中对于层次的划分粒度会更小、更详细,结构也更复杂,但是对于其服务器的维护依旧是划分为三层来维护,对于不同的层次采用不同的维护手段。在应用层可以将数据和流量分摊到一个服务器集群上,而不是集中在一台服务器上。服务层可对服务器进行分级管理、超时设置、异步调用、服务降级和幂等性设计。数据层可以让整个网站共享同一个分布式缓存集群,单独的应用和产品不必部署自己的服务器,只需要向共享缓存集群申请缓存资源。

      在保证数据高可用性时,数据的一致性不能得到很好的保证。其中高可用的数据的含义包括:数据持久性、数据可访问性、数据一致性。但是一个提供数据服务的存储系统无法同时满足数据一致性、数据可用性、分区耐受性这三个条件,而数据一致性又包括:数据强一致、数据用户一致和数据最终一致。因为难以满足强一致性,网站通常会综合成本、技术、业务场景等条件,结合应用服务和其他的数据监控与纠错功能,时存储系统达到用户一致,保证最终用户访问数据的正确性,还可以采用数据备份的方法来尽量保证数据一致性。

      对于网站可用性的提高可以采取网站发布、自动化的测试、预发布验证、代码控制、自动化发布和灰度发布。网站运行之后还要进行监控,随时掌控网站的当前状况。网站在发展过程中其伸缩性也非常重要,单一功能通过集群规模来实现伸缩,应用服务器则通过以下几个方面实现其伸缩性:1.HTTP重定向负载均衡,2.DNS域名解析负载均衡,3.反向代理负载均衡,3.IP负载均衡,4.数据链路层负载均衡。对于分布式缓存集群的伸缩性:因为每个服务器的缓存的数据不相同,所以要让新上线的缓存服务器对整个分布式缓存集群影响最小。数据层服务器集群的伸缩性:对于数据的持久性和可用性有更高的要求,还必须保证数据的可靠存储,任何情况下都必须保证数据的可用性和正确性。

      对于网站的可扩展架构的核心思想是模块化,然后在此基础上降低模块间的耦合性(可以利用分布式消息队列降低系统耦合性),提高模块的复用性(可利用分布式服务打造可复用的业务平台)。对于网站数据库的设计需要制定表的schema—字段名称,数据类型等,并且遵循特定的设计范式。

      对于我们的系统来说,也是分为三层来进行可用性的提高,首先应用层,因为我们现在资金有限所以无法做到有多个服务器,所以只能对于数据和流量在传输的过程中进行一些控制,尽量减轻tomcat负担;服务层则是将tomcat的最大连接数提高;数据层,如果大量数据提交到数据库时,为了防止数据丢失可以先缓存然后再依次提交;然后在运行中设置每天进行一次数据备份;对于数据库表的设计需要尽量满足范式的标准来设计制定表的schema—字段名称,数据类型等。在系统的测试阶段可以通过直接发布来测试其可用性,在使用时可以将用户对于系统的每一步操作进行日志的记录,如果发生错误可以随时调取日志记录分析法发生错误的原因。

      网站的易用性是让客户愿意使用网站的重要因素,一个网站的易用不仅可以留住老用户,还可以通过老用户间接拉拢新用户。我们可以将系统的界面进行一些美化,来提供给用户一个基本的心理上好的体验,对于功能方面可以进行一定程度的提高用户的良好体验,详细来说就是:1.用户填报界面,尽量让用户少用鼠标操作,所以将Tab键切换输入框的焦点改成回车键切换;2.对于所属地域可以直接从地区里提取尽量减少用户输入;3.用户如果有填写不符合要求的地方要在切换焦点时就提醒。总体来说就是尽量让用户可以更为简单的使用系统,减少用户的输入,给用户提供良好的人机交互的体验。

原文地址:https://www.cnblogs.com/muamu/p/6561692.html