Led灯坏掉引发的思考
两年前新买的房子装修时候,为了以后不用频繁的换灯泡大部分的光源都采用LED灯,led灯公认的寿命比较长,包装上都宣称至少用10000小时。不曾想上周一个月黑风高的晚上,我一个人在空荡荡的房间里看书,为了节能环保家里只亮着一盏房间的吸顶led灯,一阵风吃过瞬间灯灭了,克服着心里的恐惧,抹黑过去重新开关了下灯结果证实灯坏了。
还好装修的时候留一手,我打开了备用的日关灯。说好的10000小时呢,心里万马奔腾,我拿了把椅子,卸下了led灯罩(蓝翔学校必备技能)发现led灯还能发出微弱的光,于是我就断定led灯的整流器坏了卸下来,等到周末带着整流器就出门找店家买了。一路波折要么没有,要么都和led灯片一起卖的。大约逛了5-6家,一个好心的老板提醒了我:‘’小伙子,这个东西一般都不会坏,肯定是led灯片或者线路坏了。又找了几家都没法测试我的整流器是否坏掉。做水电的二个提醒我说:“回家直接把客房那个拆下来接上这个看看就知道了,于是乎我测试出来了是led板子坏了。出去买了个带整流器的led灯板(捆绑销售不单卖)换上终于解决了。耗了大半天的时间做了一堆无用功,换下来的led灯板我仔细观察表明并没有烧掉的痕迹,通电后有微弱的关说明led灯主体没坏。上网搜索发现led灯只接上火线的时候会发微弱的光。于是我就仔细的观察电路,电路板很简单所有的灯泡以下面的形式串接
仔细观察发现有一组灯泡的两个里面有一个完全不亮,轻按后整个线路都在闪,于是我找了个东西按住这个灯,接电后除了这组的第二个灯全部都亮起来了。用东西固定住这个灯后,led灯重新恢复了活力。老婆夸我果然不愧是蓝翔毕业的。
晚上躺在床上回想整件事情的经过,发现很多事情原理都有互通之处,大致归纳以下几点:
留一手:(注重备份)
无论是日常生活,还是架构设计,备份的设计显的尤为重要,通俗的场景你在上厕所的时候才发现没纸是一件多么痛苦的事情。工作上的情景更加比比皆是,前段时间公司的内部环境全部使用vm虚拟机集群搭建,公司没有邮件系统,于是我就提议搭建个邮件系统,之前没有自己搭建的经历,于是各种查资料,花了九牛二虎之力用postfix+dovecot搭建起来了邮件服务器。为了管理方便我又搭设了postfixadmin。正打算试用推广的时候没想到虚拟机集群重启后异常,我的邮件服务器挂了起不来了。搭建的过程没想过备份问题,导致虚拟机挂掉无法重启之后我的所有的工作付诸一炬。只能硬着头皮重新开始了搭建工作,还好搭建的过程资料有保存,于是我又花了一些时间把邮件服务器重新搭建起来了。这次我再虚拟机上做了镜像。同时,为了防止集群性的故障事件我又把搭建好的软件和数据库表结构全部备份到我的工作机上。根据墨菲定律,可能发生的事情一定会发生。果然升级内存的时候多次重启集群,集群的大部分虚拟机挂掉,文件丢失。还好邮件服务器有备份集群恢复后用了大概1小时时间恢复了我的服务。
找痛点(发现问题根源)
问题发生之后,需要确认问题的所在,只根据表面现象很容易被迷惑,找错方向浪费了解决问题,恢复原状的宝贵时间。由于我根据自己的初步观察就断定了是整流器的故障导致浪费半天时间跑了5-6家店差点还买了实际没有坏的整流器。可见没有找到痛点会在时间和金钱上都有极大的浪费。我不禁联想到之前做某个游戏业务的时候,有一次版本发布不久发生了一个故障,用户登入后频繁掉线。看服务器端的负载和网络情况都正常,自己登入客户端查看,也发生了同样的故障,查看网络,ping值和网络延时都正常,同机房机架的其他业务没有任何问题,idc的监控测试也显示网络情况正常。服务端抓包发现收到的消息是服务端在三次握手后就没有收到来自客户端的消息导致超时连接退出。于是依照以往的经验判断是网络链路或者反外挂加壳导致的问题。于是就找网络平台的人以及反外挂的人一起排查问题,时间转瞬即逝用户的情绪越来越激动,反复的修改维护公告,论坛已经一片骂声。结果两边排查都没有问题,找服务端客户端重新抓包梳理财发现是程序的bug导致任务包的逻辑有问题导致的客户端无法正常连接或者频繁退出。历时3个小时才解决了这个问题。没有找到痛点永远也只能在做无用功费事费力,就像现在人人都在谈敏捷,如果没有依据各个岗位各个公司的具体情况盲目套用只能是费事费力而且效果往往差强人意,很多以失败告终。
双机热备就够了吗?(架构设计中的单点消除)
我们看前一个led灯片实际上也做了双机热备,可是每一个设备其实都是一个故障点,每组的灯实际上是线路上的单点。后面我买了新的led光源就考虑到了这一点,所有的灯都以并联的方式进行连接避免了架构上的耦合性
我们在做架构设计的时候,除了要考虑双机热备以外还要考虑冷热备结合,以及物理机房机架的分离,架构上尽量消除耦合性,减少单模块的故障引起的其他模块的异常。
细节决定成败
观察故障的led灯片以及新买的灯片我发现故障的灯片上的焊接点形状大小相去甚远,制作工艺上有很大的差别,导致led光源还没坏的时候焊点就接触不良了。另外在架构设计的时候考虑的不周,才导致局部的异常整体挂掉。有时候我们追求效率的时候很容易忽略质量,导致后面要么引发故障,要么返工重来,坑了自己也坑了别人。特别是一些维护或者发布的操作,手一抖就容易引发惨重的问题。追求效率更多的是从工具的源头的优化,而不是牺牲质量的情况下盲目追求。