环信首席架构师梁宇鹏谈架构、管理及成长(上)
梁宇鹏,EGO北京分会学习委员。环信首席架构师,负责环信即时通讯云后端服务设计。在此之前,作为新浪微博通讯技术专家,负责微博通讯系统的设计与研发,并负责微博平台研发部技术评审工作。
一直专注在即时通讯领域,对XMPP以及相关开源项目有较多实践。对分布式系统和高性能服务实现领域内的任何信息也会保持高度关注。作为多语言编程爱好者,工作中使用的语言主要有C/C++,Java、Erlang,最近在玩Golang。
业余时间喜欢游泳和跑步,更多的时间是在听歌,喜欢Leonard Cohen和痛仰。
我一直的工作都在即时通讯领域,所以对IM相关的业务都比较熟悉。亲手做过的系统规模从十万、百万到千万级别一路增长过来,在分布式系统设计和服务高可用保证等领域也算有些积累。
分布式系统设计方面。曾经把一个百万级天天报警超时的系统,优化为基本零报警的千万级系统,而且期间系统承载用户翻了一番;也曾经把一个系统的速度提高到原来的一百倍性能,机器数量还减少了一半;现在刚刚把一个系统从十万级别做到千万级别,就是环信的这套系统,而且这个过程中用户数是按月指数级增长的。
即时通讯方面。我开始的大多数时间都专注在XMPP方面,但是随着移动互联网的兴起,网络情况和用户通讯需求的变化,大概在12年左右设计了适应移动互联网的新的通讯协议,现在正在做最新的更简化更通用的版本。
后端服务的云化不可阻挡,越来越多的后端服务会挪到云上。如果你做云服务,这服务的规模也会越来越大。亿级的平台应该不在少见,遇到的挑战越来越大,随之而来的技术也会越来越有意思。现在的容器化就是一个例子。
即时通讯领域之前还是在于沟通,从移动互联网开始到后面的物联网,重心应该更在于连接,链路更加不稳定,承载的数据却更加多元。长远来看,万物都将互联。借着云服务的东风,我们将有可能把这样的通讯框架作成基础设施。一个可靠而稳定的通讯框架,将极大促进各种创新应用和服务的出现。
架构师最重要的素质,可以搭建现实与理想的桥梁。用总理的话说,既可以仰望星空,又能脚踏实地。
对于一个还不错的工程师来讲,如果他做过百万级的系统,你让他再做一套百万级的系统,他可以做出来。但你再让他做一套千万级的系统,那就未必了。更进一步,你让他做一套十万级的系统,如果他之前没做过,你会发现他做出来的还是一套百万级的系统。
所以这里有两点,一是知道理想是什么样子,也就是知道目标系统的架构;二是明白当前的现实情况,发现最需要优化改造的地方。
这对于一个快速发展的创业公司尤其重要,业务发展快,要求系统承载能力可以跟得上,慢一步失去机会,公司的生存都会受影响。与此同时,团队小资源有限,人力尤其紧张,你不可能把所有想做的改造一下子都做完。很多人讲创业需要拼,但是终究需要遵循物理规律。
所以你需要规划这样的演化路线,让系统跟得上公司发展的步伐,又不至于过分透支团队。我们常讲,一个能够运行的系统要好过一个完美的系统,有时候为了能够支撑业务我们会做一些比较脏的事情,但更多的时候,你还需要考虑,如果实在要做这些事情,如果做可以让他们在以后的系统演化中也用得到,至少可以事半功倍。
这也是作为首席架构师最大的挑战。