脆弱的是网络设计,而不是网络本身!
我不晓得为何挖断一根线就能宕机数个小时,这明显是一个物理灾难,为何会影响业务逻辑那么久?
网络是分层设计的,一个TCP段丢失了,协议层就会重传,一个有连接链路帧丢失了,甚至IP都感觉不到,不影响上层在于下层提供的冗余!如果说应用服务器不堪重负或者其它原因宕机数个小时,那可以理解,毕竟问题就是出在应用层,但是光缆挖断是物理层的事故,应该由物理层的高可用性来解决才对!
事后看了微信的架构设计,真的是太完美了,容错,监控可以说是做到了极致,信息超级详细,那怎么还会出问题呢?因为这些都是应用层意义上的!也算腾讯那帮人还懂点网络,在最后提到了网络容错,排在最后并不是说他们控制不了网络,而是表现出他们根本就不重视,反正出了问题有运营商呢!实际上,运营商仅仅是提供一个基础设施,即使那样,好的设计者也还是会依靠运营商设计出一个好的架构的,比如将服务器做成集群,分散在不同的城市异地灾备,在同一个城市,依靠广域网做同城热备以及不同运营商之间的冷备,在同一个机房做负载均衡以及双机热备,这样的话,即使挖断了N根光纤,充其量的动作就是人工切换一下,算上走流程也不至于从早上到下午这么长时间!
一切都好像空中楼阁,突然发现我们依赖很多的互联网服务,从QQ,微信,微博,到邮件,博客,淘宝,京东,没了这些不知道该怎么生活!可是突然又发现原来我们一直都在纸糊的舞台上跳街舞!为表面强大且光鲜的互联网产品提供的服务竟然如此不堪一击,其实是因为其物理设施竟然是这么脆弱。
到底是哪里出了问题?我觉得是行业人才选拔标准出了问题,现在到处都是搞数据库的,搞框架的,搞应用的,如今的程序员早就把网络设计人员想象成了另一个行业的人。
我曾经面试,应聘过很多网络相关的职位,最终我都厌烦了,要求的所谓精通网络的人其实要求并不高,无非也就是精通socket的人,最终应聘成功的大多也都是些欺世盗名之辈,当然,像那些大公司要求可能更高一些,但是还是涉及不到网络的精髓。现如今,写过几个socket程序就敢于声称自己精通网络,他们之所以敢这么声称不是他们的错,真正错就错在好多公司的面试官根本就查的不严!甚至说,很多面试官本身也就是半瓶子晃荡的水平。
懂得接口如何调用,那仅仅说明你会用了一个工具,你还不是它真正的主人,某种情况下,你被工具奴役着,大多数情况,由于急功近利,期待所见即所得的效果,导致很多人放弃了对底层的理解,仅仅停留在浮光掠影的表面。
还有几个人知道TCP流控和拥控的背后的意义,罢了,就算是逻辑本身很多人都说不清楚,因为你只需要知道3次握手就能找到工作!
还有几个人知道路由器的内部构造以及核心交换机的原理,罢了,那是那些网管的事情,这些人哪能有高级程序员相比!
还有多少人....
唉!
因此啊,为微信而工作的那帮人,也好不到哪去。期待他们能瞬间恢复服务,这真的有点难为他们了。如果说从一开始的设计阶段就没有考虑物理层容错,那以后再补就晚了。是因为根本就不重视,还是真的招不到人,我们不得而知,但是我想大家都知道几年前上海闵行的楼脆脆,倒得那么神采奕奕,玻璃竟然都是完好的!我估计,微信宕机时,其WEB页面展示的监控也应该没什么异常吧,唯一的异常就是,CPU正常,突然偏低,内存正常,突然大量剩余,IO正常,一切正常!(这是有证据的,看下新浪微博就知道了,宕机很久后,官方微博竟然都说不知道)