【沉淀】从网络中间件到搜索,从移动开发到分布式计算平台,阿里高级专家李睿博谈自己的折腾路

本文涉及的产品
性能测试 PTS,5000VUM额度
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 整个过程我觉得还是爱最重要。有爱才有勇气才有希望。我是真的爱写代码。从小学就开始爱,到现在快三十年了也还爱。
a4480bf840f4232751cb1576f82251270c4ff5bc
《沉淀》是云栖社区展示专家风采的人物栏目。它呈现每个专家独一无二的人生经历、认识和感悟的同时,也能帮助你沉淀技术,收获对技术和人生的判断。我们的想法是:“若你想精进为一个很厉害的人,不妨细细品味这些技术牛人背后的沉淀。” 如果你想了解这些云栖专家更多分享时,请点击云栖专家频道,当然我们也欢迎你往前走一步,成为我们的云栖专家(https://yq.aliyun.com/expert),与技术大牛一起“煮酒论英雄”。

1.

如果人生可以重新来过一次,你会怎么做?

相信很多人都会列好一大堆计划和想法,而李睿博却和云栖社区的同学讲了一个往事:

“小时候一帮小朋友一起玩,弄坏了邻居的财物,大家一哄而散,只有我觉得这么跑掉是不对的,愣是站在原地没动,最后责任都成了我一个人的。”

讲完后,他说:“人生如果能重新来过,还会是一样。我其实是个挺执拗的人,会坚持做自己认为对的事情,即使有时候明知道会吃亏。”

从功能机时代做网络中间件到做搜索,从做移动开发到做分布式计算平台……细看,转型跨度都挺大,而每一步李睿博都无怨无悔。

抽丝剥茧后,你会发现,这是爱,是对代码的爱。

2.

5504fcfd32fdcf2b929de62ef94c99a6821553b2
李睿博认为,路走对了,才不怕远;走对路,比走的远更重要。

李睿博,花名艺卓,他是阿里集团计算平台事业部生态与输出部门的负责人。对于自己的工作,他概括地说:“MaxCompute 上直接接触用户的那部分,很多都是我部门的工作。”这些工作包括 MaxCompute 的 REST API、SDK、Console、JDBC驱动,以及PyODPS 及其配套的 DataFrame。除此之外,李睿博的工作也包括跟各种社区、生态的对接。

回到李睿博工作生涯的起点——2006年北航研究生毕业后,他因为面试流程Geek,以及有游戏背景,任性的找了一家特殊的日企,并在一年后,又随这家公司到东京工作了两年。这是家做网络中间件的公司,核心产品是用一套SDK完成Linux/Windows/Solaris server side 以及PSP/NDS/wii 等 Client Side 的网络通信代码编写,客户主要是游戏公司。在这个过程中,他实现了在 128k 内存 128x128 的屏幕上实现伪网游的效果,这个在——GPRS、手机还是NoKia的时代是一件非常具有挑战的事情。

2009年,李睿博加入阿里云做搜索(现在的“神马”)。在搜索的时候,他发现,当时团队的模块发布用的是RPM包,而RPM/YUM的改变是系统级的,多人共用一台机器会互相干扰,于是就写了一个Abxp(Abuildxp 的缩写)的工具,用来在编译代码之前构建依赖库环境用的。这个编译工具直到最近这几天,都还有 IDST 的同学遇到问题找到李睿博。对于写出长命的Code,这位不断跨领域的技术人也挺吃惊的。但大家觉得好用、喜欢用,他也非常高兴。

2013年,李睿博跟随集团无线 All In 战略做了一年的创业项目。在无线的一年,他带领一个测试开发底子的团队转安卓开发,并在不到一年时间把App做到百万日活。尽管这个App最终没能活下来,但李睿博还是挺骄傲的。自豪之外,他也有反思和收获,一定要给用户带来价值。他在回复中表示:“无论技术层面执行的多么到位,带不来价值的应用活不下来很正常。阿里土话说‘路走对了,就不怕远’,我觉得应该叫‘路走对了,才不怕远’ 。”他强调,走对路,比走的远更重要。

由于移动应用业务属性太强,做安卓开发一年后,李睿博来到阿里集团计算平台事业部生态与输出部门,潜心于技术。尽管这个领域不懂的东西太多,但只要能重新沉醉于代码中,他觉得哪怕“被虐”也是值得的。“好几次都是靠‘自己选的路,跪着也要走完’的信念才走到今天。”他表示,在大数据平台学到最多、挑战最大,不过后来居然越做越有感觉了。

到今天他做MaxCompute已不知不觉有三年。问及最终目标是什么,他说,就当下工作而言,有两个:一个是通过PyODPS直接赋予数据科学家操作大数据的能力;第二个是通过生态与输出,让大家可以将开源所学直接用在 MaxCompute 上。“如果要论终极目标。”他毫不犹豫地说:“那就是将大数据计算能力普惠给用户。”

对于分布式计算平台的趋势,李睿博认为会越来越往准实时、实时方向靠拢,“离线和实时分布式系统之间的界限会越来越模糊,两边都会尝试侵占对方的地盘。”

沟通中,也问起他的花名为什么起“艺卓”,李睿博一脸遗憾,他说:“本来想取‘睿博’。”他戏称,毕竟向后兼容还是很重要的。但后来他发现,这个花名不可用,只好取了“艺卓”。之所以取它,李睿博称,有两个原因:第一,和“睿博”读音有点靠;第二,这个名字是专业显示设备的品牌,他比较喜欢这个牌子,并且也希望像这个品牌一样在自己的领域里做专业。

3.

从搜索到安卓再到分布式计算平台开发,在外人看来这几次转型跨度都挺大的,回顾历程,李睿博也惊讶自己这么能折腾。

“那如果给一次选择的机会,你会怎么做?”折腾太累,大多数人都不喜欢折腾,所以云栖社区抛出这个问题,是希望李睿博能给出一个完美的技术进阶路线。然而,答案似乎并不像云栖社区期待的那样。

“如果真能选择的话,还是会去买套房吧。”他开了一个玩笑后,开始言规正传——人生如果能重新来过,还会是一样。

是什么原因让他来生还愿意这么折腾,云栖社区并没有进一步去探究。因为在另外一个回答中,可以找到答案:“我是真的爱写代码,从小学就开始爱,到现在快三十年了也还爱。”

如果这个答案还不够直接,那么你可以看李睿博这一句:“做自己喜欢做的事情,还有钱赚,这么奢侈的事情,我已经很知足了。”

以下是更为精彩的内容:

云栖社区:“艺卓”的花名给人总有一种手艺人的工匠精神在里面。你入职那时,取花名还是件很容易的事,能谈谈为什么没有取武侠风的花名,而是取了“艺卓”?

李睿博:我 2009 年入职阿里,其实直到 2013 年去无线才有的花名。阿里云早期并不流行花名文化。

等到真想要花名的时候系统提示“睿博”不可用(毕竟向后兼容还是很重要的嘛),结果到今天也没看到集团里谁的花名叫“睿博”,有点遗憾。

取“艺卓”这个名字,一个是因为读音跟睿博还有点靠,另一个是这个名字本身是个做专业显示设备的品牌,我个人也比较喜欢,也很希望能够像这个品牌一样在自己的领域里做专业。

云栖社区:你第一份工作是Port 日本的 Doja 手游到国内的 J2ME,在那个年代,能在 128k 内存 128x128 的屏幕上实现伪网游的效果是一种挑战,你是如何解决这个问题的?

李睿博:在资源极度受限的设备上做开发,有点像把一大堆东西塞到一个小手提箱里。一个是东西本身要经过很好的折叠,比如图片、音乐这些资源大户,要经过良好的剪裁和压缩。

另一个是要做很精细的安排,空间本来就有限,哪里放什么要规划的非常仔细。日本工程师在这方面其实做的已经很好了。移植到 J2ME 因为机器配置更低所以要做的更激进一些。

网游对战这块,那个年代的流量还很贵,而且 GRPS 也不足以支撑实时网络对战,所以我们当时的做法是和另一个玩家的历史记录对战(赛车类)。

云栖社区:你在搜索部门时开发了一款编译工具,直到今天都有人在用,并找你咨询问题,能否介绍下这是什么样的一款编译工具?当初出于什么原因去写它?

李睿博:是个叫 Abxp(Abuildxp 的缩写)的工具,用来在编译代码之前构建依赖库环境用的。

做这个工具的原因有两个,一是当时团队的模块发布用的是RPM包,二是当时团队的工作习惯是一台开发机多人共用。

既然用了RPM,那么最直接的办法就是RPM来构造开发所需的依赖环境。但是 RPM/YUM的改变是系统级的,多人共用一台机器会互相干扰。

因此就有了Abxp这个工具,利用现成的RPM体系,构建个人的开发环境,互不干扰,甚至一个人的几套代码不同目录之间都可以用不同的依赖环境,给开发工程师提供便利。

云栖社区:后来去做安卓开发,是早有准备,还是现学现卖?另外,也说一说学习安卓开发的过程吧。

李睿博:基本是现学现卖。虽然早年也做过J2ME开发,不过跟直接在 Canvas 上做各种图形绘制比起来,安卓抽象了 Activity、Service、Intent 等一系列概念,组织了 Fragment、ViewPager 等一系列组件,能够用好这些东西需要积累和时间。

之前的经验唯一的好处是有助于理解一些设计的出发点。当然,因为做的App 的特殊性,其实用到不少跟系统相关,行为定义的没那么清楚的 API,这个就真的是要摸着石头过河了。

云栖社区:在不到一年的时间里,把App做到日活百万,从技术角度来看,这段经历有哪些成功或独到之处?其次,对于这款App没能最终活下来,你有哪些认识和思考?

李睿博:做App 是要满足用户真实的需求的。无线All In 那一年,我们做锁屏软件,动机其实是“抢入口“。

我们在锁屏界面上做壁纸,跟虾米合作做音乐播放,跟蚂蚁合作做余额宝增值曲线,跟淘宝合作做快递提醒,跟头条合作做新闻,跟爆漫合作做段子推送,如果再多有一些时间,锁屏会被我们做成一个微型OS。这个臃肿的锁屏软件表达的我们的诉求太多,能够带给用户的价值偏少。

当然也不是没有。今天很多已经集成到 ROM 里的功能,那个时候我们都在锁屏上做过,比如用最少的操作打开手电筒,切换歌曲等等。

于是无论技术层面执行的多么到位,这样的软件活不下来其实并不奇怪。阿里土话说“路走对了,就不怕远”,我觉得应该叫“路走对了,才不怕远”,走对路,比走的远更重要。

云栖社区:为什么在移动开发最火爆的时候,又转型去做分布式计算平台开发?在转型分布式计算平台开发中,都遇到哪些挑战,请详细叙述下。

李睿博: 移动应用的业务属性还是很强,代码写写扔扔(尤其是客户端)简直太正常不过。自己的代码变成快消品还是很难受的。

到分布式计算平台,最大的问题还是初来乍到,整个领域不懂的东西太多。虽然传统的 MapReduce 不难理解,但是一个Query 从进来Compile 成 Plan,到 Optimize 到生成 Runtime code,整个链路很长,而且链路的每个节点都有足够的细节和门槛。

云栖社区:MaxCompute相比Hadoop等开源产品有哪些优势?其次,作为计算平台生态与输出部门的负责人,能否在脱敏的前提下,谈下MaxCompute在生态上的一些规划?

李睿博:优势么,第一个是性能。我们自研的平台在性能上对比开源竞品还是有很大优势。另一个,MaxCompute 是完全托管的大数据服务,用户不需要知道集群,只管跑作业就好。从这个角度说,MaxCompute 跟 IaaS +开源软件完全不同。

MaxCompute 的生态,前几年关注的是连通性,于是我们有了 JDBC/ODBC,有了 Flume/Fluentd/logstash/Sqoop 这样的插件,让数据可以方便进入;现在我们更关注社区,我们的 MaxCompute 2.0 对 Hive SQL的兼容性不断在提升,PyODPS 做的类似 Pandas 的 DataFrame API,直接赋予数据科学家操作大数据的能力。

我们的终极目标是让大家可以将开源所学直接用在 MaxCompute 上。

云栖社区:你对分布式计算平台的中间件、架构以及趋势有哪些看法?

李睿博: MaxCompute 是离线批量计算平台出身,但是这个平台会越来越往准实时、实时方向靠拢。离线和实时分布式系统之间的界限会越来越模糊,两边都会尝试侵占对方的地盘。

新硬件也给我们的分布式系统提出了更多的挑战,比如 CPU 作业和 GPU 作业混合调度,带宽提升导致的存储和计算的分离成为可能等等。

云栖社区:不论是一开始在日企做网络中间件、阿里云成立之初做搜索,还是跟随集团All In战略做移动开发,乃至当下做大数据的分布式计算平台,你的每次转型跨度都挺大的,而且也都挺成功的,能否谈谈转型心得?其次,众多技术中,你最喜欢哪门技术(语言)?为什么?

李睿博:也不能算成功吧,拼了老命,没有脸着地摔很惨罢了。 整个过程我觉得还是爱最重要。有爱才有勇气才有希望。我是真的爱写代码。从小学就开始爱,到现在快三十年了也还爱。

做自己喜欢做的事情,还有钱赚,这么奢侈的事情,我已经很知足了。

语言写过很多,不过我用的多的似乎最后都消亡了。最喜欢的语言么,Perl 算一个(也式微了,汗),因为实现同样的功能,代码能写的短。

云栖社区:如果给你一个选择的机会,你会继续这样继续不断跨领域,还是会在某个领域持续扎根?为什么?对应着选择(重新来过后),你又会怎么去做?

李睿博:如果真能选择的话,还是会去买套房吧(玩笑)。

重新来过也还会是一样,我其实是个挺执拗的人,会坚持做自己认为对的事情,即使有时候明知道会吃亏——小时候一帮小朋友一起玩,弄坏了邻居的财物,大家一哄而散,只有我觉得这么跑掉是不对的,愣是站在原地没动,最后责任都成了我一个人的。

认知水平、眼界不到的时候,估计我也会非常坚持自己并不成熟的想法,就算是未来的自己去劝也没有用。可能这就叫性格决定命运?

云栖社区:拥有这么多丰富的经历,你有没有想过去创业?请你谈谈对创业的理解。

李睿博:我比较喜欢的两个描述生活状态的词,一个叫随遇而安,一个叫无欲则刚。我这样的性格,除非有个强力发动机型的人拉着我一起,是不太会去独自去创业。

另外,我觉得创业要有足够的冲动,冲动可能来自强烈的价值认同。拉我出去创业的朋友也有过,到目前为止我看到的因为隔行导致盲目乐观以及功利的成分居多。

云栖社区:你平时喜欢做什么?为什么?请分享一个你特别认可的格言或一句话,并叙述下原因。

李睿博:平时追番,打游戏,看书,摄影,偶尔写写博客。因为我读过的人文书籍比较少,所以不太敢说任何或者欣赏格言。只说一个喜欢的吧:“此心光明”,希望能够作为自己的墓志铭。

为什么是此心光明呢?因为我们是处在一个剧烈变革的时代里。我上中学的时候家里装一部固定电话还要交几千块的安装费,我念大学的时候还在用寻呼机。我研究生毕业的时候大家都在炒 Web,然后是移动互联网,然后是大数据,然后是人工智能,眼花缭乱,飞速迭代。

我也经常感叹很多事情自己其实看不懂,看不清楚。年轻的时候,觉得做自己认为对的事情就好。但是在这样的时代里,个体非常容易迷失自我,我做的事情是不是对,并非一目了然,经常是要经过时间检验。在这样的时代里,某个具体时点上,能指引、规范个体行为的,或许只有价值观。Google 憋了半天,搞出来个“don't be evil”,我觉得是同样的表达。工程师可能也就这个文案水平,不如王阳明先生“此心光明”来得积极向上(文/我是主题曲哥哥)。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
4月前
|
SQL JSON 大数据
ElasticSearch的简单介绍与使用【进阶检索】 实时搜索 | 分布式搜索 | 全文搜索 | 大数据处理 | 搜索过滤 | 搜索排序
这篇文章是Elasticsearch的进阶使用指南,涵盖了Search API的两种检索方式、Query DSL的基本语法和多种查询示例,包括全文检索、短语匹配、多字段匹配、复合查询、结果过滤、聚合操作以及Mapping的概念和操作,还讨论了Elasticsearch 7.x和8.x版本中type概念的变更和数据迁移的方法。
ElasticSearch的简单介绍与使用【进阶检索】 实时搜索 | 分布式搜索 | 全文搜索 | 大数据处理 | 搜索过滤 | 搜索排序
|
4月前
|
存储 监控 固态存储
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN 分布式存储虚拟化平台VMDK文件1KB问题数据恢复案例
在一例vSAN分布式存储故障中,因替换故障闪存盘后磁盘组失效,一台采用RAID0策略且未使用置备的虚拟机VMDK文件受损,仅余1KB大小。经分析发现,该VMDK文件与内部虚拟对象关联失效导致。恢复方案包括定位虚拟对象及组件的具体物理位置,解析分配空间,并手动重组RAID0结构以恢复数据。此案例强调了深入理解vSAN分布式存储机制的重要性,以及定制化数据恢复方案的有效性。
111 5
|
19天前
|
5G 数据安全/隐私保护
如果已经链接了5Gwifi网络设备是否还能搜索到其他5Gwifi网络
当设备已经连接到一个5G Wi-Fi网络时,它仍然有能力搜索和发现其他可用的5G Wi-Fi网络。这里所说的“5G Wi-Fi”通常指的是运行在5GHz频段的Wi-Fi网络,而不是与移动通信中的5G网络(即第五代移动通信技术)混淆。
|
5月前
|
机器学习/深度学习 人工智能 Shell
人工智能平台PAI操作报错合集之在分布式训练过程中遇到报错,是什么原因
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
1月前
|
消息中间件 监控 数据可视化
Apache Airflow 开源最顶级的分布式工作流平台
Apache Airflow 是一个用于创作、调度和监控工作流的平台,通过将工作流定义为代码,实现更好的可维护性和协作性。Airflow 使用有向无环图(DAG)定义任务,支持动态生成、扩展和优雅的管道设计。其丰富的命令行工具和用户界面使得任务管理和监控更加便捷。适用于静态和缓慢变化的工作流,常用于数据处理。
Apache Airflow 开源最顶级的分布式工作流平台
|
2月前
|
消息中间件 中间件 数据库
NServiceBus:打造企业级服务总线的利器——深度解析这一面向消息中间件如何革新分布式应用开发与提升系统可靠性
【10月更文挑战第9天】NServiceBus 是一个面向消息的中间件,专为构建分布式应用程序设计,特别适用于企业级服务总线(ESB)。它通过消息队列实现服务间的解耦,提高系统的可扩展性和容错性。在 .NET 生态中,NServiceBus 提供了强大的功能,支持多种传输方式如 RabbitMQ 和 Azure Service Bus。通过异步消息传递模式,各组件可以独立运作,即使某部分出现故障也不会影响整体系统。 示例代码展示了如何使用 NServiceBus 发送和接收消息,简化了系统的设计和维护。
68 3
因为一个问题、我新学了一门技术 ElasticSearch 分布式搜索
这篇文章讲述了作者因为一个检索问题而学习了ElasticSearch技术,并分享了排查和解决ElasticSearch检索结果与页面展示不符的过程。
因为一个问题、我新学了一门技术 ElasticSearch 分布式搜索
|
4月前
|
机器学习/深度学习 算法 文件存储
【博士每天一篇文献-算法】 PNN网络启发的神经网络结构搜索算法Progressive neural architecture search
本文提出了一种名为渐进式神经架构搜索(Progressive Neural Architecture Search, PNAS)的方法,它使用顺序模型优化策略和替代模型来逐步搜索并优化卷积神经网络结构,从而提高了搜索效率并减少了训练成本。
68 9
|
4月前
|
消息中间件 Java Kafka
"Kafka快速上手:从环境搭建到Java Producer与Consumer实战,轻松掌握分布式流处理平台"
【8月更文挑战第10天】Apache Kafka作为分布式流处理平台的领头羊,凭借其高吞吐量、可扩展性和容错性,在大数据处理、实时日志收集及消息队列领域表现卓越。初学者需掌握Kafka基本概念与操作。Kafka的核心组件包括Producer(生产者)、Broker(服务器)和Consumer(消费者)。Producer发送消息到Topic,Broker负责存储与转发,Consumer则读取这些消息。首先确保已安装Java和Kafka,并启动服务。接着可通过命令行创建Topic,并使用提供的Java API实现Producer发送消息和Consumer读取消息的功能。
90 8