软件体系架构质量属性——高可用
软件体系架构质量属性-----高可用
张自航
摘要:网站的高可用架构设计的主要目的就是保证服务器硬件故障时服务依然可用、数据依然保存并能够被访问。实现上述高可用架构的主要手段是数据和服务的冗余备份及失效转移,一旦某些服务器宕机,就将服务切换到其他可用的服务器上,如果磁盘损坏,则从备份的磁盘读取数据。
关键字:高可用;负载均衡;失效转移;数据
Abstract:The main purpose of designing a highly available architecture for a website is to ensure that services are still available, data is still saved, and can be accessed in the event of server hardware failure. The main means to achieve the above high availability architecture are redundant backup and failure transfer of data and services. Once some servers go down, the services will be switched to other available servers. If the disk is damaged, the data will be read from the backup disk.
Key words:High availability; Load balancing; Failover; data
Software architecture Quality Attribute ----- High Availability
人生规划也是一种架构,软件设计也需要架构。对于软件架构需要关注到性能、可用性、扩展性、安全性这5个架构要素。而当前要说的便是个人对于可用性的看法。
一、可用性的含义
可用性即为减少系统故障的发生。对于软件或网站的高可用主要体现在服务器硬件故障时服务依然可用、数据依然保存并能够被访问。应用设计为了高可用,最好是遵循基本的分层架构模型 ,让各层都可以独立的处理业务,防止故障出错的连带效应。以及对于网站或软件在升级迭代的时候出现的宕机,都是对于系统高可用的考量。
为了实现高可用,负载均衡的失效转移功能是不可或缺的,它可以将承担压力较大的服务器转移部分压力到集群上的服务器上,而集群的方式可以是session管理,开启session复制功能,让每台服务器都有用户的session信息。Session服务器更是实现了高可用的应用。
二、高可用的服务策略
高可用还有几点服务策略,分级管理、超市设置、异步调用、服务降级、幂等性设计。
其中,超时设置很好的减少了出现故障后整个系统服务时间上的浪费,更高效的完成进行中的任务,也是很好的减少了资源的浪费,异步调用也可以很好的避免服务队列的阻塞。当系统的服务大量被重复调用时,就需要进行服务降级,拒绝不是很重要的服务调用,关闭在当前时段没有用的服务。
三、数据的存储
数据的存储也是体现高可用的一项指标。保证数据高可用的手段主要是数据备份和失效转移机制。保证数据有多个副本以及快速切换访问数据的其他副本,都是应用的体现。同时,缓存服务也有着举足轻重的地位,为了防止数据库负载过高而宕机,缓存服务也必须有着高可用的性能。当数据规模快速扩张的时候,数据服务的存储系统很难满足数据一致性、数据可用性、分区耐受性这三个条件,为了保证分布式处理系统的高可用性,所以可能会放弃数据的一致性,其他两个是必不可少的。这便是CAP原理,CAP原理很好得阐明了大数据压力下的解决办法。在数据备份方面上,数据冷备和热备需要兼顾,既降低成本,又可以保证数据的可用性。异步热备方式和同步热备方式都是数据热备的手段。
四、失效转移
失效转移在前文中提到过,这里详细讲述,失效转移操作由三部分组成,分别是失效确认、访问转移、数据恢复。失效转移第一步便是要判断服务器宕机,心跳检测和应用程序访问失败报告是主要手段。确认之后,就需要将数据读写访问重新路由到其他服务器上。然后将数据副本数目恢复到设定值。
五、高可用在网站的应用
高可用在网站的应用体现上无可厚非,一要保证无时无刻高可用运行,还要不断地发布新功能扩展网站的规模来吸引更多的用户使用,这对于一个网站发布是很有考验的,在网站发布之前还需要进行服务器的严格测试,保证没有bug,服务器在使用的时候不出现宕机。而当前的测试技术基本都是Web自动化测试技术,是哟经自动测试工具或脚本完成测试卡,比较哦流行额是Selenium。Selenium可以同时完成Web功能测试和浏览器兼容测试。在此之后还需要进行预发布验证,使用预发布服务器进行验证。在网站发布当日,可能会出现许许多多的始料不及的问题,在自动化发布出现之前,许多人因此而疲惫倦怠,后来在国外出现了火车发布模型,即是一种自动化发布,人的干预很少,引入故障的可能性就越小,既保证了网站的高可用,也提升了工作人员的积极性
监控数据采集后,除了用作系统性能评估、集群规模伸缩性预测等,还可以根据实时监控数据进行风险预警,并对服务器进行失效转移,自动负载调整,最大化利用集群所有机器的资源。
网站在监控管理基础之上实现自动优雅降级,是网站柔性架构的理想状态:监控系统实时监控所有服务器的运行状况,根据监控参数判断应用访问负载情况,如果发现部分应用负载过高,而部分应用负载过低,就会适当卸载低负载应用部分服务器,重新安装启动部分高负载应用,使应用负载总体均衡,如果所有应用负载都很高,而且负载压力还在继续增加,就会自动关闭部分非重要功能,保证核心功能正常运行。
参考文献:
[1] 程序猿胖子,质量属性-可修改性,https://www.jianshu.com/p/5f02292a90e5
[2] 顾北清歌寒,软件质量属性——易用性课堂讨论问题总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2022-03-19 今日总结:android-stdio:activity-lifecycle(app的运行机制)(借鉴学习)
2022-03-19 今日总结:返回一个整数数组中最大子数组的和三阶段总结