首页 > 网站建设 >

大型网站建设怎样才能做到高可用性?(上篇)

发布时间:2018-11-06 作者:深圳网站建设

大型网站建设怎样才能做到高可用性?(上篇)
  在网站运维实践中,除了网络、服务器等硬件故障导致的系统可用性风险外,还有来自软件系统本身的风险。关于传统的软件测试和软件质量保证管理无需赘言,深圳网站建设公司本文重点分享网站为了保证线上系统的可用性而采取的些与传统软件开发不同的质量保证手段。
一、大型网站发布
  网站需要保证7*24高可用运行,同时网站又需要不断地发布新功能吸引用户以保证在激烈的市场竞争中获得成功。许多大型网站每周都需要发布到两次,而中小型网站则更加频繁,一些处于快速发展期的网站甚至每天发布十几次。
  不管发布的新功能是修改了一个按钮的布局还是增加了一个核心业务,都需要在服务器上关闭原有的应用,然后重新部署启动新的应用,整个过程还要求不影响用户的使用。这相当于要求给飞行中的飞机换个引擎,既不能让飞机有剧烈晃动(影响用户体验),也不能让飞机降落(系统停机维护)更不能让飞机坠毁(系统故障网站完全不可用)。
  网站的发布过程事实上和服务器宕机效果相当,其对系统可用性的影响也和服务器宕机相似。所以设计一个网站的高可用架构时,需要考虑的服务器宕机概率不是物理上的每年两次,而是事实上的每周两次。也许你认为这个应用不重要,重启也非常快,用户可以忍受每年到两次的宕机故障,因而不需要复杂的高可用设计。事实上,由于应用的不断发布,用户需要面对的是每周到两次的宕机故障。但是网站发布毕竟是次提前预知的服务器宕机,所以过程可以更柔和,对用户影响更小。通常使用发布脚本来完成发布,其流程如图5-14所示。
大型网站建设应用更新发布示意图5-14网站应用发布流程
  发布过程中,每次关闭的服务器都是集群中的一小部分,并在发布完成后立即可以访问,因此整个发布过程不影响用户使用。
二、大型网站建设高可用性经验之自动化测试
  代码在发布到线上服务器之前需要进行严格的测试。即使每次发布的新功能都是在原有系统功能上的小幅增加,但为了保证系统没有引入未预料的Bug,网站测试还是需要对整个网站功能进行全面的回归测试。此外还需要测试各种浏览器的兼容性。在发布频繁的网站应用中如果使用人工测试,成本、时间及测试覆盖率都难以接受。
  目前大部分网站都采用Web自动化测试技术,使用自动测试工具或脚本完成测试。比较流行的Web自动化测试工具是ThoughtWorks开发的Selenimu。Selenium运行在浏览器中,模拟用户操作进行测试,因此Selenimu可以同时完成Web功能测试和浏览器兼容测试。
  大型网站通常也会开发自己的自动化测试工具,可以键完成系统部署,测试数据生成、测试执行、测试报告生成等全部测试过程。许多网站测试工程师的编码能力毫不逊于软件工程师。
三、大型网站建设高可用性经验之预发布验证
  即使是经过严格的测试,软件部署到线上服务器之后还是经常会出现各种问题,甚至根本无法启动服务器。主要原因是测试环境和线上环境并不相同,特别是应用需要依赖的其他服务,如数据库,缓存、公用业务服务等,以及些第三方服务,如也信短信网关、银行网银接口等。
  也许是数据库表结构不致;也许是接口变化导致的通信失败;也许是配置错误导致连接失败;也许是依赖的服务线上环境还没有准备好,这些问题都有可能导致应用故障。因此在网站发布时,并不是把测试通过的代码包直接发布到线上服务器,而是先发布到预发布机器上,开发工程师和测试工程师在预发布服务器上进行预发布验证,执行些典型的业务流程,确认系统没有问题后才正式发布。预发布服务器是种特殊用途的服务器,它和线上的正式服务器唯的不同就是没有配置在负载均衡服务器上,外部用户无法访问,如图5-15所示。
         大型网站建设高可用性经验示意图之5-15网站应用预发布
  预发布服务器和线上正式服务器(应用服务器l,2,3)都部署在相同的物理环境(同个数据中心甚至同个机架上,如果使用虚拟机,甚至可能在同个物理服务器上)中,使用相同的线上配置,依赖相同的外部服务。网站工程师通过在自己的开发用计算机上配置hosts文件绑定域名IP关系直接使用IP地址访问预发布服务器。如果在预发布服务器上执行的测试验证是正确的,基本可以确保在线上正式服务器部署时也没有问题。
  不过,也有可能会因为预发布验证而引入问题。因为预发布服务器连接的是真实的生产环境,所有的预发布验证操作都是真实有效的数据,这些操作也许会引起不可预期的问题。比如创建个店铺,上架个商品,就有可能有真的用户过来购买,如果不能发货,会导致用户投诉。
  一个真实的案例是某网站需要验证海外第三方支付功能,每件商品的售价本来是数干美金.工程师不可能花数千美金去验证自己开发的功能,于是将金额改成美元,验证成功后.幸福地发布上线了,第二天上班后.发现大量商品以美元的价格成交。此外,在网站应用中强调的个处理错误的理念是快速失败(fast failed),即如果系统在启动时发现问题就立刻抛出异常,停止启动让工程师介入排查错误,而不是启动后执行错误的操作。好了网站建设公司关于大型网站建设高可用性的经验分享上篇本文就介绍到这里。谢谢您的关注,如果您认为本文对您的工作有所帮助,请继续关注下一篇。博纳网络编辑整理。
文章标题:大型网站建设怎样才能做到高可用性?(上篇)
本文地址:https://www.198bona.com/news/1653.html
如果您觉得案例还不错请帮忙分享:

网站建设

网络推广

解决方案

域名主机

建站行业资讯