曾经有个亲戚朋友找到我,说让我帮他开发一款自动识别的停车场系统,系统除了识别车牌 ,计算价格之外,希望能有一个小程序或者APP,可以在上面卖东西之类的,问下需要多少钱。
我说如果要做一款工业级别能使用的,可用性接近4个9的,即便大部分组件都是用开源项目,算下来可能也要百来万吧,当然,如果每个停车场再配个人工的收费这些会便宜点。可用性可以做到低一点。
对方不是很理解,做软件,不是请几个程序员啪啪啪把代码写完么?加上现在开源的组件这么多,就跟组装玩具一样随便组装即可,为什么需要那么多钱。
软件的可用性
软件的可用性,就是将软件不可用的时间统计起来,然后除以一年的总时间。
我们看到,如果要做到3个9的可用性,也就是只有千分之一的时间不可用,一个月也只有44分钟是不可用,一个月44分钟是什么概念,相信程序员或者运维朋友都有这样的例子。一般一个线上问题,从出现到 警、出现投诉,可能已经过了大半个小时,加上问题的定位,修复代码,测试,上线,一般2到3小时处理一个小故障已经是常态。
加上有些故障可能是硬件引起的,例如之前出现的阿里云光纤被挖断,或者现有的机器硬件出故障,那么要耗费的时间就更长。
影响可用性的因素
在生产过程中,出现故障的概率非常大,这里面既有意料到的,也要突发的。既有可能是软件的,例如程序员写了一个bug,测试没有发现,带上了现 ,也有可能是硬件的,例如前不久腾讯云发生的数据丢失问题,就是因为一个硬盘的bug引起的,更有可能是外部原因,例如支付宝的上海数据中心光纤被挖断。
我们一些日常运维,也有可能会造成服务不可用,最典型的莫过于12306每晚的数据维护。经常我们需要迁移机器或者升级某些组件,都需要停机维护,或者有时候需要对数据库的数据进行大型的迁移,为了降低风险,我们也会选择停机,毕竟在现 环境下进行升级好比高速公路上换轮胎,稍有不慎,容易车毁人亡。
如何做到高可用
那么,我们如何做到系统更加高可用呢?无非下面这几点:
总结
写代码,很简单,但是写工业级别的代码,却非常难。就好比造高铁、造飞机、造火箭,很多国家没实力造出这些东西么?并不是,做不到的,是工业级别的高铁跟飞机,造出来的东西,要每天载客运行,只要有一点点差错,就可能万劫不复。试想,如果一架飞机一年有几十个小时可能会出故障,你敢坐么,别说几十个小时,就算是1个小时,也是非常可怕的。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!