《微信技术架构》读后感
这段时间很迷微信,难得中国人能弄出个不错的IT产品出来,网上关于张小龙先生已经被所谓“神化”的声音不绝于耳,实际看下来这些声音没几个戳中要点的干货,不免让人觉得酸葡萄。
过年在家看了据说是张小龙的讲产品的PPT,不知真假,但从里面可以看出作者的产品境界已经高于国内大部分常见的产品经理这个职位上的人一大截。今天又看了腾讯大课堂里面这位周颢先生讲微信架构的视频,可以对照一下一位网友对该视频讲述要点的摘录一亿用户增长背后的架构。虽然视频是2010年的了,现在用户量早就是原来的好几倍了,架构肯定更比当时复杂许多,但对我这个一直做企业应用的人来说还是有不少收获。下面谈谈我的看法吧:
整个演讲是围绕微信架构技术的四个复杂点:协议、容灾、轻重、监控。
协议是指终端与接入服务器之间数据交换的协议,终端的种类繁多怎么统一我没想过,即使原来的有一个业界标准的协议肯定也需要进行改造,以达到通信的数据量最小,解决移动中连接网络时网速不稳定,还有当时中移动搞出个什么CMNET、CMWAP的概念(现在不知道还有没有)等等各种坑爹,应该是坑程序员的问题。
容灾里主要提的是存储层的容灾,这里面我只知道个CAP理论,里面还有算法的考虑。以前知道搞计算机只有碰到了算法之类的事情才算是在搞计算机“科学”,问题研究越深越发现原来是个数学问题,工作这么多年,早远离了这些深奥的公式了
轻重倒是个可以借鉴的思路,做互联网产品的终端都应该借鉴借鉴这个,否则出点小问题就要用户更新你的软件,烦都被你烦死了。这也体现了微信一直宣扬的极简的理念。简单指的是对用户操作来说,背后不管多么复杂,面向用户的就是那么几个按钮、动作。
监控与统计的分开我第一次听到,确实,监控应该有与应用相同的功能要求,对于数亿级用户的这么个海量系统来说,只有精准的监控才能快速有效的做出响应,甚至是先于用户感知的问题预判。
针对这四点共讲了一个小时多一点,已经很精练了,我在想要是我来搞这个系统这四点问题如何解决?每一点可都是一个庞大的课题,换我会不会提出分而治之的解决系统复杂度的思路?从过往自己的经验,更喜欢或者说习惯的是一种统一起来考虑问题的思路,希望找到一把屠龙刀,最终所有问题循着这把刀全部解决,还解决的干净利落,只有设计出这样的系统才算漂亮的,牛逼的。现在想来这思路绝对不适合做互联网应用,敏捷的风行不是没有道理的。
还是前段时间说的那句话,一个人最重要的是要有问题意识,能提出了真正的问题,后面的事情才能顺的下来,这也就是“古之所谓善战者,胜于易胜者也”的意思吧。可,究竟几个人能实现这顿悟似的“惊险一跃”呢?