《沉淀》是云栖社区展现专家风采的人物栏目。它呈现每一个专家独一无二的人生经历、认识和感悟的同时,也能帮助你沉淀技术,收获对技术和人生的判断。咱们的想法是:“若你想精进为一个很厉害的人,不妨细细品味这些技术牛人背后的沉淀。”若是你想了解这些云栖专家更多分享时,请点击云栖专家频道,固然咱们也欢迎你往前走一步,成为咱们的云栖专家(https://yq.aliyun.com/expert),与技术大牛一块儿“煮酒论英雄”。算法
“这个没啥好讲的,找XX和XX技术Leader吧?”编程
“为何挑中我?”安全
“时间点再考虑下吧,要不要等……”服务器
……微信
当云栖社区发出云栖专家风采展现邀请时,应答没有直接答应。进一步沟通,你会发现推脱的背后,倒是一位实实在在技术大牛的低调和谦逊。架构
应答认为,分布式系统架构设计为了知足20%高级用户的需求,有可能要提供80%的接口(缘由见完整对话)框架
应答是阿里巴巴技术平台事业部架构与专家咨询的高级专家。架构与专家咨询到底是什么样的一个岗位?应答作了剖析:本质上他们也是一线的开发工程师,只不过写代码之余可能会花更多一点时间来思考——怎样让系统架构在知足当前需求的同时,同时具有必定的技术前瞻性,可以在未来的较长一段时间内保持技术领先性。机器学习
这位身处一线的“开发工程师“求学经历颇为完美。本科中科大,硕士在世界著名的常青藤大学布朗大学,而博士则在研究型学府理海大学完成。在保送到中科大的时候,这位学霸颇为霸气地选择了电子工程专业,之因此说他霸气,是由于他选择电子工程专业的缘由让人多少有点吃惊——居然是由于专业分数线最高,听起来高精尖。编程语言
求学和毕业后,应答也在世界一流会议SIGMOD等以及一流期刊Transactions on Computer Systems等处发表多篇文章和论文,Google Scholar 上则有500多个citations。他对其中的一篇文章特别印象深入,那篇文章介绍了在一般的分布式系统的资源调度器(好比YARN 或者 Mesos)之上,怎么提供一个开发分布式应用的通用框架,让各类各样的分布式应用或者服务能尽可能避免与底层分布式基础设施打交道,同时经过这种隔离,使得其在不一样的分布式框架上都可以运行。探究印象深入的背后,是应答对研究可以真正转化成生产力的成就感。分布式
走上工做岗位后,他先是做为微软Azure机器学习平台(AzureML)服务的核心开发人员。接着,参与了微软开源大数据框架Apache REEF项目从最初的微软内部项目到Apache incubator,再到成为Apache top level project的过程。做为PMC,在谈到开发Apache REEF过程当中遇到的挑战时,他说主要是在早期一些方向的选择上,由于早期每一步的方向都决定了未来很长一段时间是在向正确的方向迈进,仍是在错误的道路上越走越远。
后来,他加入阿里,参与搭建了超大规模数据和参数上的分布式学习的高效平台。进入计算平台架构组后,应答又参与了阿里自研的核心计算平台MaxCompute的更新换代。“新的计算平台在更加易扩展的架构上,实现了性能的成倍提高,以及功能的丰富和计算数据生态的外扩。”一位阿里同事这么积极评价这些工做。
阿里巴巴这种超大数据体量上才会遇到的独特挑战,让应答在技术上有了更清晰的认识,必定要夯实分布式系统的基础。“只有把基础夯实了,才能支持上层各类计算场景在大致量上的实现,让各类新的算法在‘阿里体量’上真正发挥潜力。”
对于如何夯实,他无私地分享了本身的宝贵经验:底层系统的设计,必定要走在用户前面,且越往底层走,这么作的重要性就越高。这要求系统架构设计时要作到先发性和预见性,而作到这点,除了须要长期积累经验,还要主动去了解上层用户各类各样的使用模式。应答强调:“系统的开发和架构不能只局限在本身熟悉的领域,也不能只局限在单一用户场景上。”
在分布式系统架构设计上,他指出稳定是分布式系统的最基本要求。在知足稳定要求后,在分布式系统灵活和易用的二者关系上,他很是认同二八原则。什么样的二八?三点,第一用20%的接口实现80%用户的需求;第二80%的系统要为20%的接口服务;第三,为了能知足另外20%高级用户的需求,咱们可能要提供80%的接口(笔者注:至于为何,请见下面对话)。他表示,接口的“收”与“放”都是须要精心考量的。
对于分布式系统架构的将来,应答有两个思考:
第一个是怎样在一个统一的计算平台上,知足用户多种多样的计算需求:这包括两个方面,一个是多种的计算模式,好比离线大规模运算,流计算,图计算等;另一个是处理多样的数据格式,好比关系式数据,文本数据,音视图数据,甚至是用户自定义特殊数据,好比基因,天气数据等。
第二是多种硬件的使用以及统一:怎样在一个集群上实现多种硬件的混部,来知足一个系统上的多种计算需求,这会是一个颇有意义的问题。
总结过去的技术生涯,应答说:“近几年在阿里其实总体的是一个逐步在系统堆栈上往下作的过程,从一开始的偏机器学习应用,逐渐转移到分布式系统基础架构方面的工做。”他解释,这个过程也是在堆栈上层开发中,能愈来愈切实的感觉到底层分布式系统的稳定性和灵活度的重要性,从而往下探索的一个经历。
在沟通的最后,笔者问起眼前的这位技术专家有什么格言时,他说了一个以为挺有道理的一句话——“people will choose tobelieve what he wants to believe.”
“为何以为它有道理?”
连续追问,他说出了本身的想法:“咱们不要动不动就想说服别入。从技术角度来看就是:作一个系统/产品,不要总是想着要说服别人用你的,不少时候每一个人是有一个预判的,也只会作出选择符合他预判的决定。要让别人相信你,首先要解决人家的问题,一个系统解决了用户在其余地方解决不了的问题,用户才会‘想要’相信你,在这种预判下,才会更客观的来审查整个系统方方面面的优点。”
至此,笔者也明白,为何当发起云栖专家风采展现时,应答是推却的,由于他知道行动和拿到结果是最好的专家风采展现。
好一个低调和谦逊的技术大牛!
如下是更为精彩的内容:
云栖社区:请介绍下本身以及所从事的工做(架构与专家咨询具体干什么)。
应答:虚一点来说,架构和专家咨询组从负责上来讲是计算平台总体技术走向和大的架构设计。可是实际上,咱们本质上也都是一线的开发工程师,只是写代码之余可能会花更多一点时间来思考:怎样让咱们系统架构在知足当前需求的同时,同时具有必定的技术前瞻性,可以在未来的较长一段时间内保持技术领先性。尤为是在预期、在数据规模不断增加和计算模式日益多样化的趋势下,怎样作到上面几点。
固然思考只停留在脑子里和PPT里是没有用的,只要架构没有实现都是空中楼阁。全部的想法最后须要转化成包括咱们本身和团队每一行代码的实现,功能的设计,与团队的Code Review交互以及开发计划讨论等等……
云栖社区:你的求学经历包括中科大、美国布朗大学(Brown University), 理海大学(Lehigh University),可否谈下这三段求学生涯里,分别有哪些让你难忘或记忆深入的事。
应答:选择科大是由于从初中起就对其严谨朴素学风的向往,当时是保送到中科大电子工程系。对于选择电子工程这个专业,老实说,反而仍是比较懵懂的,基本上就是以为分数线最高,并且听起来比较高精尖。不过回头来看这个选择,那个时候对专业只知其一;不知其二,也并无产生什么很差的后果,由于更重要的是,选择学校的过程是理性的和有针对性的。我我的以为学校选对了,具体的专业反而不是那么重要了。在科大的求学过程当中,印象深入的事情已经很差罗列了。大部分时间都在学习,上自习,感受没有太多波澜。当时不少事情,咱们都以为是平平淡淡。反却是临近毕业以及毕业之后,有了更多和来自其余学校的朋友交流的机会,才能体会到一些学校的不一样。好比最近在微信上刷屏的关于科大机智地为贫困学生提供生活餐卡补助的事情,这个实际上是在我毕业后才大规模实行的,可是做为科大毕业生,咱们看起来以为学校会这样作实际上是很是天然的。在科大你们都习惯了学生第一,学习第一,也相对单纯一些,像补助学生这样的事情,都以为是理所固然的。另外还有,好比学校是淮河以南第一个为学生提供冬季供暖的,而学生宿舍的供暖也早于教工宿舍,如今回想起来都有点身在福中不知福的味道。
到美国的第一站是布朗大学,其所在的Providence也是我到美国后居住的第一个城市。印象深入的事情不少,不少时候是体会另一个文化不一样的地方。布朗是常青藤里一个相对小的学校,但也由于小,因此系和系之间的边界就没有那么严格清楚,不少本科生都是满学校处处选课,而研究生也能有机会接触到许多本专业之外的东西。印象比较深的是在各类研究生课程上作过的各类各样的project。好比当时选的高级信号处理课,期末的project是生物信息学中的信号处理,归纳点说就是经过把怎么基因数据中ATCG碱基看待成一串时序信号,而后映射成一些时空域信号空间上的点,在这个基础上作信号的频谱分析。一个颇有趣的观察就是在频谱上的突出点,对应的信息若是转换回时域,每每对应的就是基因里带有遗传信息的基因段。频谱转换和分析其实都是本科在科大都学过的内容,可是把这些信号处理的知识,具体应用到基因数据分析上,仍是蛮有趣的。我以为这段经历对于之后本身从更加开阔的方向去思考问题也颇有帮助。
后来到了里海完成了博士学业。博士期间的训练和本科就有比较的的区别了。从研究方向上也有了更大的自由度。固然更大的自由也意味着更多的未知性,也要为本身的选择负责。读博士期间,有拍脑壳想到一个想法最后变成很不错的paper的经历,也有仔细研究了半年的想法,结果最后真正搭建和模拟的时候,才发现结果不尽人意。但在探索的过程当中,无论是成功经历,能让人对处理各类工做学习生活的各类不肯定性有更丰富的经验。
云栖社区:你在世界一流会议SIGMOD等以及一流期刊Transactions on Computer Systems等上均有发表文章,Google学术搜索里有500多个引用……在这么多文章或论文中,你对哪一个最为看重,请介绍下它,以及说明下看重的缘由。
应答:最看重的应该是在毕业后在工业界时,发在SIGMOD等处的文章。虽然这些文章并无我在学校发的一些文章引用来得多,但不一样的是它并不仅是学术上的探讨,而是对工做中研发系统的整理和总结。
这个文章介绍了在一般的分布式系统的资源调度器(好比YARN 或者 Mesos)之上,怎么提供一个开发分布式应用的通用框架,让各类各样的分布式应用或者服务能尽可能避免与底层分布式基础设施打交道,同时经过这种隔离,使得其在不一样的分布式框架上都可以运行。另外在此基础上,分布式应用的实现可选的编程语言也能够与底层框架解耦。好比微软的流计算服务ASA(Azure Streaming Analytics)就是一个搭建在咱们的框架之上使用.NET开发的计算服务,可是底层实际上是基于Java的YARN集群。咱们的中间框架使得ASA能够彻底不用考虑这些区别。
基于咱们的框架搭建的相似服务还有不少,我以为这些都是真正转化成生产力的工做,因此也以为有些成就感。
云栖社区:加入阿里以前,做为Apache REEF的PMC,你在微软大数据事业部工做,并经历了从立项到成为Apache top level project的过程,可否聊聊这段经历里都遇到哪些挑战,都是怎么解决的?
应答:挑战主要都在早期,怎么把一个适用于各类分布式系统的中间框架搭建起来,接口上设计怎样选择才是合理的,如何避免行差踏错。由于早期每一步的方向都决定了未来很长一段时间,是在向正确的方向迈进,仍是在错误的道路上越走越远。
除了仔细调研设计之外,咱们找了一样在设计开发初期的Azure Streaming Analytics(ASA) 团队,和他们一块儿开发,直到最后上线。固然如今回头看这个项目,仍是有很多不满意的地方,今天若是从新再来作的话,我可能会作得更好。
云栖社区:加入阿里后,你搭建了超大规模数据和参数上的分布式学习的高效平台,你在开发中主要负责哪块?另外,这与你以前在微软负责开发的Azure机器学习平台服务相比有什么不一样?
应答:加入阿里的时候,其实参数服务器的开发初版已经有了模样了,也在集团内部的一些场景中用了起来。可是具体实现和单个业务场景和单个算法都绑定得比较紧,因此扩展新算法上会遇到一些挑战。我和团队一块儿基本上从新设计和实现了整套系统,让其对接口、对多种算法更加友好,同时也支持更多维度上的性能的改进;另外抽象出了SDK让平台的开发也更加开放:能让咱们的用户也进来参与新算法的开发。
这个分布式机器学习平台和我在微软作过的Azure机器学习平台服务仍是很不同的。一个最显著的区别是规模。事实上Azure机器学习平台面对的是微软外部的中小企业用户,而这些用户须要处理的数据和算法模型,在规模其实都是比较有限的,这和阿里几个实际业务场景的体量彻底不在一个量级上。在阿里实现的基于参数服务器的分布式机器学习平台,面对的百亿级别的特征,千亿级别的数据。这种量级的分布式学习,不少普通的中小型公司如今尚未太多机会接触到,因此针对中小公司以及针对阿里量级数据场景的分布式机器学习平台,要解决的问题多是彻底不同的。在AzureML的工做可能更多的集中在总体框架灵活性搭建,以及不少安全,生态开发等方面。而在阿里,处理“阿里体量”的数据是第一要务,在这个基础上才有下一步在灵活性等方面的扩展,从时间点上的优先级别的不一样,对于一个系统开发的计划和设计也会有不一样的考虑。
云栖社区:接着,你加入计算平台架构组,参与了阿里自研的核心计算平台MaxCompute的更新换代,在这个过程当中,你有没有遇到“转型”的压力?又是如何解决的?
应答:其实没有什么“转型”的压力。不一样的分布式系统设计有不少共通的地方。固然会有一些以前没有作过的东西,可是学习新的东西对我来讲应该是比较常态了。
当时有这个变化,主要是在作分布式机器学习平台的过程当中,感受一些更广泛的大数据分析功能,在当时的计算平台上还有很多能够再进一步改进的空间,而把底层系统夯实了,对上层的各类应用都会是一个有益的正反馈。
云栖社区:听说新的计算平台MaxCompute在更加易扩展的架构上,实现了性能的成倍提高,以及功能的丰富和计算数据生态的外扩,就你经验来看:一个稳定、灵活的分布式系统架构设计该如何作?应该遵照哪些原则?
应答:我以为稳定是分布式系统的最基本要求,任何一个分布式系统从设计的第一天开始就应该把稳定放在第一位。
其实这里我更想聊一下一个分布式系统灵活和易用二者的关系。这个其实也不是我本身的原创,但在分布式系统的设计上,我很是认同“二八原则”。这有好几个点,第一是应该可以用20%的接口实现80%用户的需求,接口的收敛,每每能带来简单易用。这能方便大部分用户上手。现实中,大部分用户都会须要用到相对小的一部分基础功能,这也是一个系统须要花大精力把作好。这就涉及到第二点,那就是80%的系统要为20%的接口服务。这也就是说分布式系统就像一个冰山,或者像一个金字塔同样,底层大量的实现(包括对性能的优化,以及对各类失败的处理)就是为了把上层用户看获得的几个主要功能,作到各类场景上的最优。第三点,是为了能知足20%高级用户的需求,咱们可能要提供80%的接口。这一点争议可能比较大,但我想说的是这一点上比较适用的是底层的系统设计,也就是说若是你设计的是一个分布式系统底层的接口,你的直接用户多是另外一个”系统“的开发者,这时候提供灵活的接口和功能是很是重要的。反而是越到上层靠近终端普通用户,接口可能越少会越好。接口的“收”与“放”都是须要精心考量的。
云栖社区:从你的这几年技术生涯来看,不管是微软Azure机器学习平台(AzureML)服务开发,仍是阿里的分布式学习的高效平台、MaxCompute的更新换代,你都是在作更加深刻的事情——在系统堆栈上逐步往下作,可否具体聊聊在过程当中遇到的独特挑战。
应答:一个重要的挑战就是一个系统,不管是机器学习平台,仍是底层分布式系统,怎样才能走在用户的前面。这一点越往底层走重要性就越高。由于只有系统走在用户的前面,在用户须要的时候,才能直接用得上。尤为是对于设计一个系统,不可能说用户有什么需求都是现改现作,用户不少状况下是等不起的。一个系统没准备好,致使的后果要么就是用户走路,不使用这个系统;要么就是用户会在系统有限的功能上加上各类各样的hack,对你如今不成熟的接口绑定上强依赖。而这就可能致使系统的发展被捆上了手脚,由于系统的发展是须要有延续性的,不能说我今天升级系统,用户现有的功能就被break。要避免这种状况,就要求底层系统的设计,要有必定的先发性和预见性,这个除了须要长期积累经验,还须要主动去了解上层用户各类各样的使用模式,系统的开发和架构不能只局限在本身熟悉的领域,也不能只局限在单一用户场景上。我以为系统开发中遇到一些比较开心的事情就是咱们本身设计研发的一些新功能,刚刚上线尚未对外宣传的时候,用户就提出了这样的需求。这个时候咱们就能够说“功能已经有了,直接用就彻底知足你的需求” 。固然了,虽然这个时候会颇有知足感,可是也每每意味要开始准备补文档了。
最后从另一个角度来看,一个好的系统,也有引导用户正确使用的责任,让用户更高效的在系统平台上实现本身的处理逻辑。
云栖社区:你认为将来分布式系统架构还会有哪些变化或趋势?
应答:我以为分布式系统架构在经历了一开始从无到有,从有到百花齐放的过程,如今在大数据分析处理上,正在逐渐进入下一个阶段:也就是从百花齐放再慢慢收敛。
以前一段时间有许多新的分布式系统框架被开发出来,而每个新的系统,都每每会针对比较特殊场景。也必定程度上形成了用户若是要支持多样需求,可能要维护多个系统的问题。如今一个值得咱们每一个作分布式系统的同窗考虑的问题,是咱们怎样在一个统一的计算平台上,知足用户多种多样的计算需求。这里的计算需求包括两方面:一方面是多种的计算模式(好比离线大规模运算,流计算,图计算等),另外一方面是处理多样的数据格式(好比关系式数据,文本数据,音视图数据,甚至是用户自定义特殊数据,好比基因,天气数据等等)。这些方面的统一,除了能让用户减少维护多系统的代价,也能带来多种数据在一个系统上真正的融合,让数据产生更大的价值。
系统架构的另一个趋势就是多种硬件的使用以及统一。很长一段时间内,分布式集群一般以CPU为主,而如今随着包括GPU, FPGA等针对特定计算需求差生的新硬件的发展,由新硬件组成的集群也有很大的需求。如今的这个阶段可能CPU集群, GPU集群以及FPGA集群还处在一个分开部署的阶段,也就是还在“百花齐放”的过程当中。可是接下来,怎样在一个集群上实现多种硬件的混部,来知足一个系统上的多种计算需求,也是一个颇有意义的问题。而这样子的混部环境中,在系统层面将异构硬件的区别在分布式系统层面,作好向上层应用的屏蔽,都是颇有意思的挑战。在这方面咱们也已经在阿里开始一些尝试。
云栖社区:若是初学者想在大数据分布式系统领域扎根,你能给一些由浅入深的学习路径或建议吗?
应答:分布式系统的学习,我以为在看看基本入门的书之余,去看代码具体实现是很重要的。固然若是能本身搭建一个环境来玩一玩,会有更深刻的体会。最理想的是能有实战的环境,由于不少分布式系统的问题,在大的集群规模上才会遇到,也才会有更深入的体验。
因此咱们欢迎你们来投简历加入阿里的计算平台团队,在这里能看到在上万台机器的集群规模,以及在这个大型计算平台上解决的其余地方看不到的问题。咱们杭州,北京,西雅图都在招人 。
云栖社区:最后请你聊聊,生活中都喜欢作什么事情、读什么书以及什么格言?为何?
应答:我应该算是比较典型的技术男。业余也就喜欢看书,打篮球(其实如今打得也少了)。
书的话比较杂,武侠、科幻、传记、社会小说都会涉及。格言这种东西我实际上是不太信的,由于我以为大部分格言都必须在必定场景上才有适用性,有点假。若是必定要说的话,那就是我以为这么一句话挺有道理的:people will choose to believe what he wants to believe,不知道怎么翻,你们意会一下就好。(文/我是主题曲哥哥)
文章连接:http://click.aliyun.com/m/26319/