4月14-15日,在北京珠三角JW万豪酒店,51CTO举办了WOT互联网运维与开发者峰会。WOT秉承专注技术,服务技术人群的理念,自 2012年***举办以来,历经八届,积累了大量的技术资源,成为广大技术从业者和技术爱好者一致认可的技术分享大会、交流和人脉拓展平台。会后,记者专访了本次大会高可用架构专场的李令辉讲师,他分享的内容是分布式时代的架构设计。
讲师介绍
李令辉,滴滴出行***架构师,于2014年中加入滴滴,经历了滴滴高速成长的阶段,见证了滴滴从一个打车软件变成一个出行平台。移动互联网资深从业者,对移动互联网技术发展趋势以及技术团队的组建有独道见解。他具有多年互联网架构的设计经验,擅长高性能高并发高可用的架构设计工作,主导了滴滴打车技术迭代中的核心服务架构升级。
在本次WOT峰会的高可用架构专场,李令辉分享了分布式时代的架构设计这一主题。他认为面对运维的架构设计不是一个割裂的主题,架构设计是为了结果服务的,结果包括功能是否达到,成本是否可控,扩容性/可扩展性是否够用。很多时候,运维的便利性和可运维性是被忽视的。李令辉告诉了现场从业的架构师和工程师如何让运维工作和研发工作更好地协同发展,不要让研发成为运维的负担,或者运维成为研发的瓶颈。因为这两者在互联网时代是不可割裂的。
滴滴出行是顺应移动互联网发展的成功应用,大家在日常使用上,已经非常熟悉了。目前滴滴支付系统的发展情况很好,***的时候一天已经超过一千万单。那么,滴滴团队是如何支撑起业务需求的增速发展的呢?
李令辉表示他们也是在摸索中前进,尽量跟上并希望超越业务的发展速度。因为业务在发展,架构师不存在说让整件事情的运转很好,只能说尽其所能让它没有那么差。工作中,他们也摔了很多大坑,但是最核心的一点,至少在李老师的工作中,他相信技术可以改变世界。技术是移动互联网最核心的因素,只有技术才能够让整个社会效率提高,所以我们可以用技术手段去解决更多的问题。
滴滴发展中遇到的***的问题是什么?
滴滴的优势是发展的非常快,因为正好赶上了移动互联网时代的大发展,满足了大家出行的需求,并且移动支付在滴滴刚诞生的时候也是处于快速发展期,双方互相借力,让这个行业的发展达到***的速度。这是滴滴的优势,但是同样也是问题,因为发展快,一定让整个技术团队没有办法做好充分的准备。滴滴技术团队像在“战火中修建城市”,一直在前线听到战火,经历每天生活中的报警此起彼伏,比如大促、营销战,快速的流量爆涨,故障处理等等。虽然过程不美好,但是从中收获了很多实战经验。
对滴滴公司来说,他们怎么用架构设计来解决这些问题?
这就要求架构师在快速发展的时候,尽量做一些超越当前的设计,做一些前瞻性的预判,比如说滴滴的支付系统,业务量不是很大的时候,在只有三个业务线的时候,他们就设计让它支持多个业务线、多种支付形态。比如前期只外接了微信支付,现在已经接入了微信、支付宝,还有招商银行。也就是说架构师的工作不能只顾当下,要往前多看几步发展,架构设计方便后期的扩容。
像滴滴这样支付型的互联网公司发展中,基本要经过几个架构设计阶段呢?
李令辉认为一个创业公司从一开始到一个大体量的阶段,很难说有几个阶段,因为每天都不一样,因为几百个功能在开发,它们的产出就会造成互相影响。但是,我们可以人为的分出一些大的阶段,比如在2012年单个业务线的时候,有出租车,开始是一些很简单的应用,运行在公有云的几台机器上。后续业务发展,他们开始拓展自己的机房,运维几十台机器并做了很多优化,到了补贴大战之后就进入全新时代,流量暴涨,那个时代就面临怎么扛住这么大流量,并且提供稳定的服务了。
他们做完了单个业务线,又面临多业务线出现了。第二个业务线是专车,这就要求实现一些公共服务下沉,让两个业务线之间看起来是一个业务线。之后,滴滴又出现了新的业务形态,其中专车和出租车业务形态很像,顺风车不太一样,后续还有大巴、试乘试驾,还有一些看起来不是滴滴的业务,比如电子地图,所以架构师面临多业务线,在各个领域都要去挑战,那么他们怎么去支持多业务线发展呢?团队人数增加是一方面,如何让这些团队更好的工作是更大的问题。这些都要求架构师要有很好的架构设计,因为架构设计决定了部门间的合作方式和同事间的协同工作。
现在滴滴处于快速发展期,它的未来发展目标是成为全球***的一站式出行平台,因为中国是全球***的市场,用户只需要决定去哪里,不需要考虑付出的成本和舒适度,在怎么出行这个问题上,由滴滴帮大家解决。
李令辉心目中优秀的架构师是怎样的?
李老师表示架构师是一个要求很高的职位,一是要求从业者不仅懂技术,要经历软件开发的各个阶段,还要有足够的经验做决策。第二个是要求架构师采用合理的管理方式,因材施教,让每个团队成员都发挥出***的能力。第三是架构师要通盘考虑资源配置,利用现有的各种资源和技术服务,在***成本的要求下,拿出***的解决方案。这些都是很大的挑战。
一个普通的程序员需要经过哪些职场磨炼才能进入到架构师这个层级?
另外,对于架构师自身素养的要求有:一是要有很好的逻辑能力,逻辑能力就是搞清楚事件间的因果关系。因果关系往往在现实生活中和时序关系搞混,有可能两件事情的发生只不过恰好在时间轴上是先后关系。第二是抽象能力,要求通过有限的事情,了解所有事情可能的工作方式。第三个是结构化的快速摄入知识能力,通过了解很多知识,看很多的案例、书籍,还有其他人的设计,快速摄入这些知识。基于这三点,还要加上一些运气的成分,你恰好赶上做这些事情。做到这些的普通程序员,可能就会更容易成为架构师。