前不久,一则中行宕机的消息引起了网上IT人士的热议。其中对于大型机或者RISC系统的稳定性可靠性的质疑更是热议中的主流声音,很多人拿现在互联网系统做对比,认为大型机所谓的几个9都是吹出来的云云。在这里我想说几句公道话:首先,这次宕机到底是什么原因,什么形式的宕机我们都没有很清楚的了解,在这种情况下就去评论大型机或者RISC系统的稳定性或者可靠性其实都是不负责任,站不住脚的。但是,我觉得倒是可以基于这次的事件来稍微发散一下,说一说我对互联网系统和传统企业IT系统的一些看法和观点。

现在被炒的很火热的互联网,云计算架构,其相对于传统的大型企业系统架构,最大的区别就是以分布式的架构去替代原先的集中式系统架构。

打个比方,原先的大型企业系统架构,就好像一架大型的民航客机。作为出行来讲,飞机无疑是最舒适最快的交通工具,同时安全性也很好。但飞机却也不是人人都能坐的。首先:做飞机要经过换领登机牌,安检等若干道手续,乘客必须提前一个多小时到机场办理各种手续,而坐火车大巴则随到随买随上车,方便的多;其次:坐飞机很多东西不能随身携带甚至不能托运,火车大巴则相对宽松;还有:机票很贵坐飞机花销很大而且飞机运载能力也不如火车。当你有数万数千人要一次性到达某地时,一两架飞机的运载能力根本不够,要调动成批飞机的话整体成本又太高。最后:虽然飞机很少出事故,飞机一旦出现事故的话危险级别往往都会很高。

但是,以前除了飞机之外,就只有火车,大巴这种交通方式选择了。相比之下,这些方式虽然收费低廉,乘车,携带物品都比较方便,但是速度实在太慢而且受外界因素诸如雨雪等等的影响太大,乘坐也不是很舒适。只能满足那些相对时间宽裕,或者囊中羞涩人群的出行需求。

于是,为了满足更多人,更便利更高速的交通运输需求,新的交通运输模式—动车/高铁就出现了。它和火车最大的区别是:火车只有一节车头有动力,后面能拖几节车厢跑多快基本就是看一个车头有多强劲。但个体的力量终究有限,一个车头再强劲也有个极限,发展空间也就那点了,实在难以有太大作为。动车则不同,它每节列车都独立有自己的动力系统,连在一起各节车厢动力系统就是一个叠加递增的关系。所以理论上越多节车厢接在一起就可以拉更多人跑的更快,是一个无限扩展的系统!而且因为动车可以搭载的乘客很多,所以均摊到每个乘客头上,坐动车的速度可以某种程度上接近坐飞机,但成本要低很多。

现在互联网,云计算的系统架构其实和动车的理念相类似,就是分布式系统的架构 – 将任务分解交由每个小计算单元进行分布式的并行处理,充分利用每个单元的计算和存储能力,理论上性能可以无限线性扩展,任何一个节点的故障不影响整个系统的运行,整个系统没有单点故障。

也就是说:我们可以简单把大型企业核心架构,或者说就是大型机,RISC系统比作飞机;而把互联网,云计算的系统架构比作动车。现在,就可以做些很有意思的讨论了。

还是来说说稳定性和可靠性:就说2012年吧,飞机也好,动车也好,新闻里面都有报道过出现严重事故,可见没有一种系统是完全稳定可靠不会出现任何宕机风险的,但是其概率都是非常非常小的。从整体来讲,都是很稳定很可靠很安全的选择。只不过各自对于如何防灾冗余的策略还是有些不一样。先说飞机,因为飞在空中,万一出了事情没有后备可用,所以能采取的方式只有想尽一切办法提高飞机自身个部件的冗余度,设计时尽可能多的考虑各种小概率事件。哪怕发生某故障的概率只有千万分之一甚至亿万分之一,只要有可能,也要把应对措施设计进去。这也是飞机造价为什么会那么高,对携带物的要求会那么多的原因。而动车则相对简单:反正多拖几节车厢又不影响我速度,那我就尽量多拖些备用车厢跑着呗。万一某节车厢出事了,就把里面乘客挪到备用车厢里,车照样跑得欢。然后等到了站再去更换检查有问题车厢也不迟。

回到IT世界也是一样。分布式系统基本都是基于x86的PC服务器。单就一台服务器而言,虽然性能可靠性在不断加强,但肯定还是不如RISC系统的。但是没关系,咱可以用数量来弥补单机冗余度的不足啊。设计没你好冗余度没你考虑的多我就多拉几台呗。坏了几台没事,应用任务再分配到别的空闲机器上就好了。坏了的机器也不用马上修,反正没坏的机器加起来也够用。等到故障机器到了一定数量我再一次性批量检修更换部件效率更高。对于用户来讲,即使我坏了100来台服务器只要剩下的服务器还能正常工作,应用就不会受任何影响。谷歌,Facebook那些超大型数据中心现在的工作思路大致如此。这么做看起来是个很简单有效,很聪明的方法,但其实也有不少问题存在。

首先我觉得这个架构好处是实现原理简单,而且扩展性弹性比起RISC架构来好处不言而喻。但其实这个架构里面也存在着无谓的资源浪费可能性。例如拿存储而言,目前Hadoop类的多副本分布式存储很火。一份数据存三份,发现有数据损坏立即找空闲空间恢复。听上去很简单很容易实现很高效,但如果你真的坐下来仔细算算账,你就会发现:

1. 当你数据量不大(小于PB)的情况下这种一份数据存三份方式的成本其实比现有任何商业存储方案的成本都要高。

2. 这种方式下每台服务器的CPU利用率都很低,而现在市面上的大存储容量服务器,CPU配置都很高。所以这种方式,基本上是对于CPU资源的一种浪费。所以,或许对于数据量适中的企业来说,用EC CODE这种以计算能力换存储的分布式存储解决方案会比多副本方案更经济实惠。

3. 这种方式很容易让IT运维人员产生一种习惯性思维 – 即要提高系统在线时间就多买些服务器就好了。因为服务器多了分布性好了自然冗余度就高了。于是不必要的服务器采购就这么产生了,每个数据中心也就又多了很大一笔不是很必要的电费开销。

其次,我觉得分布式架构的某些故障很可能会产生连锁效应,导致更严重全局瘫痪。打个比方,大家都知道赤壁之战的故事。里面有个很著名的桥段就是庞统献连环计,铁锁连舟。起始时使曹操万余战船连成一体稳如平地进可攻退可守前后都可照应看似完美,但唯有一个命门就是怕火攻。而诸葛亮周瑜正是利用这个命门,解东风火烧赤壁把曹操百万大军杀的丢盔卸甲。互联网的分布式架构其实我觉得也有类似“命门”。大型机或者RISC系统之所以那么贵,其实很多时候用户在为千万分之一甚至亿万分之一的“万一”买单。而互联网,现在的公有云架构,在设计之初,基本的考虑思路是大用户,大并发,然后尽量减少TCO。所以很多时候,设计架构时会先把那些“千万分之一”排除在外,暂时不予考虑。而系统上线之后,稳定运行一段时间用户量暴涨,精力往往又会去专注扩容方面了。搞不好就会把一些“命门”漏掉,于是乎万一正好遇上“东风”吹到了命门上,后果估计会比曹阿瞒更惨。因为IT世界里还没有那么仁义的关云长会在华容道上放曹操一马。

其实从最近Facebook,Amazon谷歌的几次宕机事件来看,已经有些那个苗头了。好在那些互联网领头羊们应该是已经意识到这些问题,已经在积极修补“命门”了。

最后,我想说互联网,云计算的业务类型其实和传统企业的业务类型不一样,所以大型机,RISC系统处理的任务,运行的计算并不一定都适合移植到分布式系统架构上来。还是以交通运输举例:我要去美国,目前还是只有飞机可以满足我的需求。当然你可以说我坐动车也可以,无非是多转几趟跨国列车。但那毕竟很勉强,速度不快,费时费力还不省钱,毫无意义。人家直接飞过去就行了,你却要绕着太平洋海岸线跑一个大圈来兜,何必呢?

那么以上这些问题有没有办法解决呢?其实我觉得解决以上问题的关键就是两个字:运维。分布式系统,要保障其安全可靠的运行,合理有效的扩容,关键不在系统的软硬件,而是在系统搭建之后的运维和持续的对系统的改进修正!现在网络上很多人都在热衷于各种开源架构如openstack,Hadoop的开发,应用场景探讨。但个人以为这些开源系统的特点是搭建简单,维护艰难!要想把这些架构和技术真正投入企业成熟应用,在运维管理上投入的成本可能要比RISC大得多。因为这些系统架构更分散,出现的不可预估性更多,同时也更需要有人来理清何时用分布式架构,何种场景还是需要传统架构。那么可能有人要问,既然如此,我们还有必要走分布式系统这条路吗?当然有!原因也很简单:分布式架构给了我们处理海量请求的能力和应对突发事件的弹性;同时分布式架构也使系统具备了更好的扩展能力和更多业务创新的可能性。

说了这么多,基本要讲的也就讲得差不多了。怕前面说的有些散稍微总结下我想说的观点:无论传统RISC架构还是现在流行的分布式架构,虽然实现方式各有不同,但都是具有很高的稳定性可靠性的系统。但没有一个系统是绝对稳定不会宕机的,要保障系统稳定可靠运行,运维管理很重要。分布式系统相比传统RISC架构有扩展性和灵活性方面的巨大优势,但也存在资源浪费和故障隐患危险。在这一方面,分布式系统架构还需要多向传统架构的运维管理学习借鉴,提升自身的忧患意识和故障预警处理能力。

浅析互联网系统和传统企业IT系统的异同的更多相关文章

  1. 【转】【2015MIIC】迅雷CTO陈磊:互联网思维会害死很多传统企业

    MIIC2015大会的“跨界与重构”论坛上,迅雷CTO.网心科技CEO陈磊的演讲引起众多共鸣——独家揭秘“互联网大忽悠”,给这群人画了像,互联网大忽悠通常有五招: 第1招,画大饼,给你一个宏伟的目标: ...

  2. [转载]DevOps在传统企业的落地实践及案例分享

    内容来源:2017年6月10日,优维科技高级解决方案架构师黄星玲在“DevOps&SRE 超越传统运维之道”进行<DevOps在传统企业的落地实践及案例分享>演讲分享.IT 大咖说 ...

  3. 传统企业IT为什么对微服务叶公好龙的心态?(转)

    这两年来,“微服务”.“云计算”.“大数据”.“人工智能”的概念在IT界成了新的宠儿:珠联壁合.声名远播.势如破竹.如日中天!从实践落地的情况来看:微服务诞生于互联网,当然是首先在互联网界遍地开花,高 ...

  4. 拷问传统企业CIO:微服务化值得吗?

    所谓数字化转型升级,就是以数字技术优化传统资源,企业需要谨慎地选择合适的技术逐步完成自己的数字化战略.以推出轻舟微服务平台的网易云为代表,云计算公司正在微服务领域发力,促进企业数字化创新.那么,微服务 ...

  5. 重学 Java 设计模式:实战备忘录模式「模拟互联网系统上线过程中,配置文件回滚场景」

    作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 实现不了是研发的借口? 实现不了,有时候是功能复杂度较高难以实 ...

  6. 零售BI:为什么说零售行业非上一套企业BI系统不可?

    如果你要问为什么现在越来越多的零售企业都会在公司上一套企业BI系统,这边文章就能解答你的疑惑. 2016年10月,马云在云栖大会上提出了"新零售"概念.在新零售时代,数字化转型打通 ...

  7. 如何理解「数字化是 IT 公司在给传统企业贩卖焦虑」?

    焦虑,不是IT公司贩卖给传统企业的!这个论断本身就不成立!数字化的动因是企业内部,生产中的七大浪费还不够么?数据不畅导致的决策失败还少吗?去问下企业业主,诸如此类的问题多了去了,数字化服务商只是来帮着 ...

  8. 传统企业,"哀兵必胜"的想法要不得

    [文/ 任英杰]同事在内网上发了一篇文章『哀兵必胜』,思量数日,作文应对.文中表达的积极精神让人敬佩,但背后似乎隐含着一股莫名的“情绪”.对行业大格局的基本看法会影响公司转型的成败,觉得还是有必要讨论 ...

  9. MiinCMP1.0 SAE 新浪云版公布, 开源企业站点系统

    MiinCMP是一款开源企业站点系统,除可执行于256M左右100元的国内IDC外,JUULUU聚龙软件团队最近开发了面向新浪云的版本号,该版本号可将站点免费布署到新浪云SAE上.MiinCMP採用j ...

随机推荐

  1. Oracle 字符集的查看和修改 --转载

    原文地址:Oracle 字符集的查看和修改 作者:piaoliuxiong 一.什么是Oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE  ...

  2. POI导出Excel和InputStream存储为文件

    POI导出Excel和InputStream存储为文件   本文需要说明的两个问题 InputStream如何保存到某个文件夹下 POI生成Excel POI操作utils类 代码如下.主要步骤如下: ...

  3. leetcode38

    public class Solution { public string CountAndSay(int n) { //1 //11 //21 //1211 //111221 //312211 // ...

  4. CB XE7 C11 64位编译器 成员变量初始化

    看到了C++11,看到了XE7的64位,想实现下面方便的类成员初始化,失望. 一.64位用法 clang3,64位编译器,不支持中文变量名,编写代码提示没有32位快,风格简单不用写单独的赋值语句函数, ...

  5. Linux 清除N天前的 日期文件夹(yyyy-MM-dd)

    本人碰到模糊目录移除,小记一下 1:准确目录情况  2:模糊目录情况 先来介绍准备目录情况 本人在网上找到的demo, 目录结构(在/root/zlogs) 脚本文件b.sh #!/bin/bash ...

  6. SpringMVC @RequestBody请求参数在postman中的请求

    使用SpringMVC框架,controller使用参数  @RequestBody  LoginReq req   注解方式模拟http请求 需要请求header添加一个参数 设置  Header参 ...

  7. 迷你MVVM框架 avalonjs 沉思录 第3节 动态模板

    模板的发明是编程史上的一大里程碑,让我们摆脱了烦锁且易出错的字符串拼接,维护性大大提高. 都在JSP,ASP时代,人们已经学会使用include等语句,将多个页面片断拼接成一个页面. 此外,为了将数据 ...

  8. MathExamLv2——周世元211606348,许燕婷211606338

    结对编程 211606348 周世元 211606338 许燕婷 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) P ...

  9. archlinux错误:无法提交处理 (无效或已损坏的软件包)

    1.首先更新一下密钥,如果没有安装archlinux-keyring,请及时安装 sudo pacman-key --refresh-keys 2.重新加载相应的签名密钥 sudo pacman-ke ...

  10. 模m的剩余类里的一切数与m的最大公约数相等

    [模m的剩余类里的一切数与m的最大公约数相等] 设剩余类里的任意两元素,a.b.则: a=mq1+r1, b= mq2+r1. 根据上式可得,(a,m)=(m,r1), (b,m)=(m,r2).可推 ...