其实在数字的日子仍是很开心的, 由于线上的服务已经很稳定, Pika 已经在公司大规模的铺开, 由于开源, 也有挺多大公司使用, 收到的评价也都还行, floyd/zeppelin 也搞完, 用 @yyj 的话说你就是”天天来看看论文, review review 代码, 这日子过的太开心的”. 我记得那会老板对咱们团队最大的要求就是线上稳定, 我记得老板的老板说, “公司对大家这个团队的最大要求就是稳定, 线上不出事就行”.算法
我想大部分的基础架构团队都会遇到相似的瓶颈, 现有的线上服务已经可以支持公司大部分服务, 公司的业务团队对基础架构团队最大的诉求是稳定, 对于更极致的性能, 对于弹性等等, 其实诉求不大. 可是做为小组长, 须要时刻给本身和团队找一些新的方向.数据库
因此在17年的时候, 我以为我应该出来看看了.架构
其实那会出来就聊了集团的数据库团队和阿里云的数据库团队. 后来去了阿里云的数据库团队由于, 我以为若是作云厂商的话, 那么可能就不会遇到我以前的问题, 由于云厂商的话, 面临的是整个行业的竞争, 客户会选择用脚投票, 你的任何优化对于性能, 成本只要有收益, 客户就会投给你. 就像飞刀说的客户为产品买单, 不会为技术买单.并发
如今看来, 应该是对的. 不少时候客户会把咱们和各类其余产品进行PK, 咱们在性能上的优化只要稳定, 有收益,必定有客户买单.dom
我记得以前有一个大客户在PolarDB 的blob 字段里面存储了100kb 左右的字段, 每一次更新, 虽然只是修改其中的某一个字段, 可是都是整个 100kb 字段的update 操做, 那么整个性能的瓶颈就卡在redo log 的写入上了, 由于PolarDB 是基于计算存储分离的架构, InnoDB 是基于 ARIES/WAL 的实现, redo log 的写入是顺序写入, 这样设计的缘由是由于早年机械盘的顺序写的性能是远高于随机写的, 所以将随机IO 转换成顺序IO 从而充分利用硬件的能力, 可是在分布式存储上就彻底不是这样, 分布式存储的随机写性能会高于顺序写, 因此咱们重写了redo log, 实现了”random write redo log” , 从而赢下了这个客户.分布式
还有一个客户有几十个索引, 那么二级索引的插入就成为瓶颈, 还有客户并发数特别高, 那么btree 的index lock 就会成为瓶颈, 还有客户有查询历史数据的需求, 那么若是保存undo log, readview 如何保存就会成本瓶颈, 这些咱们也都作了相应的优化, 固然也是由于有这些客户场景, 迫使咱们去作这些优化.ide
咱们还针对一次page IO 在分布式存储latency 过长从而致使持有Lock 时间过长实现了shadow page, 针对lock 咱们还作了”early lock release” 等等, 都是在优化3% 左右的性能, 但正是这些慢慢的积累, 才有如今客户回访里面对咱们性能的确定.函数
在这个行业作的久了, 你就会越加的尊敬Oracle. 在单机存储引擎领域, Oracle 作的真的是很是的极致, 如今PolarDB 可以和Oracle PK 也只是由于赛道变了, 可是在单机存储引擎上, 我仍然以为Oracle 不少地方值得咱们学习. 因此无论别人怎么说, 我仍是以为 Oracle, AWS aurora 团队那些糟老头子比咱们强, 必定有不少值得咱们学习的地方, 我仍是以为数据库领域是慢工出细活, 没有所谓的灵光一闪, 只有日积月累.性能
记得以前和@江疑 聊过, 可能阿里巴巴之前的数据库针对电商行业作了大量了优化, 可是还有不少行业等待咱们去发掘, 好比游戏, 好比教育等待. 这也是我以为很是有意思的地方, 能够作的事情还不少, 咱们还差的不少. 就好像在王者荣耀里面, 我喜欢李白/韩信同样, 天花板很高, 永远没有尽头, 因此这个领域40/50/60 岁的人大有人在.学习
咱们所说的国产化的趋势, 计算机基础领域人才的培养, 我理解是须要在硬实力上进行PK 的, 我理解的硬实力应该是存储引擎, 分布式存储, 是事务系统等等.
从数字到如今, 每一年都会参加校招, 也和不少毕业生聊过, 其实挺多同窗不知道在计算机领域不一样的方向其实就跟不一样行业同样. 因此我老是建议毕业生, 先作难的事情, 再作简单的.
而后就跟个人 blog 的 quote 同样, “作有积累的事情”. 但愿你工做十年之后应该跟工做2年的同窗是不同的, 我理解基础架构/数据库, 算法(可是算法我不懂)是这样的领域, 就像我如今的老板@jimmy Yang 同样, 40好几的人了, 天天仍是须要和咱们一块儿看代码, 一块儿学习的..
我仍是建议毕业生刚开始的时候先好好写 C/C++, 可以知道具体每个函数的调用栈是怎样, 可以知道每个mutex 调用的开销是怎样, 可以很接近硬件, 充分利用硬件, 不用在上面在隔着一层.
我仍是建议毕业生若是选择作工程的话, 能够对操做系统, 数据库进行深刻的了解, 我理解这两个领域是工程里面发展最成熟也最快的领域, 你能够在这两个方向充分学习, 之后转向其余方向, 我理解也是有帮助的.
另外仍是建议毕业生学好基础学科, 国外不少的教材, 好比 MIT 6.824, CMU Andy 的课程等等都很是有利于学习, 国内的知识付费的App 真的不建议用, 真的是割韭菜在我看来.
记得乔布斯说过 “Why join the navy if you can be a pirate?”, 不少时候咱们都很是理想化, 可是我更建议的是先加入navy, 学习如何成长成优秀的navy, 而后若是喜欢或者有梦想的话再成为pirate. 你们都是成年人, 这个是最稳妥的方案. 固然你若是足够优秀, 也能够忽略.