题目:阅读《大型网站技术架构:核心原理与案例分析》第五、六章,结合《某重大技术需求征集系统》,列举实例分析采用的可用性和可修改性战术,
将上述内容撰写成一篇1500字左右的博客阐述你的观点。
一个典型的网站设计遵循基本分层架构模型即应用层、服务层、数据层。应用层主要负责具体业务逻辑处理;服务层负责提供可复用的服务;数据层负责数据的存储和访问。网站的可用性架构设计不但考虑实际的硬件故障引起的宕机,还要考虑网站升级发布引起的宕机。高可用的服务策略包括分级管理、超时设置、服务降级(关闭非核心服务)等。高可用的数据是最宝贵的资产,保证数据存储高可用的手段主要是数据备份和失效转换机制。数据备份可以实现数据完全的持久化,失效转换机制是为了保证系统可用。保证网站高可用,万无一失,是一个艰难的过程,还需要更多努力。
对于我们的系统来说,友好的界面风格,简单便捷的操作,合理的结构布局,良好的提示是必要的,对提高易用性很是有帮助。表格的设计需要提供给使用者好的视觉效果,减少给操作者带来视觉疲劳,操作提示应易于理解,使用准确恰当的语言。三级菜单的实现算法要以时间复杂度为标准,显示快,无需等待。
网站的伸缩性永无止境。所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。要实现网站的可伸缩性,关键技术就在于如何构建良好的服务器集群。要达到良好的目标,就要求每次扩容和减少服务器时,对整个网站的影响是最小的。CAP原理就是选择强化分布式存储系统的可用性和伸缩性,而在某种程度上放弃一致性。CAP原理对于可伸缩的分布式系统设计具有重要意义,不恰当地迎合各种需求,可能会使设计进入两难境地,难以为继。我们的系统有大量的统计数据。我们的网站随时都有可能进行修改,比如发布新功能,这时就需要在服务器上关闭原有的应用,重新部署新的应用,整个过程要求不影响用户的使用。为了把对用户的影响降低到最小,通常使用发布脚本来完成发布。经过严格的测试,软件部署到服务器还是会出现问题,主要原因就是测试环境和线上环境并不相同,所以我们在网站发布时,要把测试通过的代码先发布到预发布机器上,确认系统没有问题后才正式发布。
我们的系统面向的用户多,范围广,通过不断地向集群中添加服务器来增强整个集群的处理能力,这就是网站系统的伸缩性架构,网站以此手段不断提升自己的规模,这个演化过程总体来说是渐进式的。网站的伸缩性设计可分为两类,一类是根据功能进行物理分离实现伸缩、一类是单一功能通过集群实现伸缩。其中HTTP请求分发配置即负载均衡服务器,实现负载均衡的基础技术主要有HTTP重定向、DNS域名解析、反向代理、IP、数据链路层负载均衡。伸缩性和可用性、正确性、性能等耦合在一起。伸缩性是复杂的,没有通用的、完美的解决方案和产品,但有很多这方面的案例可供借鉴。一个具有良好伸缩性的网站,其设计总是走在业务发展的前面,在业务需要处理更多访问和处理之前,就已经做好了充分的准备,当业务需要时,只需要增加服务器并简单部署就可以了,技术团队便可轻松应对了。
我们的程序在多用户这一方面就相对来说差得很多,甚至可以说不行
可扩展架构是随需而变的。有的网站可以随时发布,新功能随时快速上线,而有的必须规定发布日,究其原因,则依赖于网站的扩展性架构设计。扩展性和伸缩性不同。扩展性是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。它是系统架构设计层面的开闭原则,架构设计考虑未来功能扩展,当系统增加新功能时,不需要对现有系统的结构和代码进行修改。设计网站可扩展架构的核心思想是模块化,并在此基础上,降低模块间的耦合性,提供模块的复用性。模块通过分布式部署,独立的模块部署在独立的服务器上集群从物理上分离模块之间的耦合关系。