我和Apache Pegasus
Posted IppClub
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我和Apache Pegasus相关的知识,希望对你有一定的参考价值。
1
起初认识这个项目的时候我还没有毕业,也没加入小米。2016年底,在西小口东升科技园,PingCAP当时借了一个会议室叫做“泰利驿站”,用很低成本的方式近乎每周开一次meetup,一方面是做技术分享,另一方面也是推广他们的产品tidb。
这种推广相信是很有成效的,因为即使只在北京,那个会议室也几乎每次都容不下所有听众。我很多时候就站在会议室门外听完,等结束了就去东升科技园的星巴克敲代码,因为很受启发。
当时PingCAP发起了一个叫做COISF的开源组织,愿望兴许是做中国的Apache基金会。在组成这个合作的同时,他们每周的meetup也会介绍一个COISF成员项目,其中之一就是小米的Pegasus。其他项目还有百度的BFS和tera,奇虎360的zeppelin,当然也包括tidb。
虽说Pegasus彼时还没有开源,但我现在的老板左言说已经离开源不远了,所以大家或许已经当做它是COISF的一员。当时我作为散场听众回头见到大佬们会后开始组织合照,我觉得大家都有光明的未来。
而Pegasus后来直到2017年10月才正式在Github开源,这听起来跟政企公务员的办事效率差不多。但对中国的互联网公司来讲,这种开源落地的速度不算慢的,某些几年前规划了开源的项目现在也还是遥遥无期。
可在那之后COISF再没听闻了,除了tidb,另外几个项目已经没有开源运作。而仍在活跃的Pegasus最终捐献给了Apache软件基金会,甚至tikv也放到了CNCF。也许贴中国牌的开源组织都做不成吧。
2
Pegasus在开源以后吸引了一些人的目光,我们建了一个微信讨论群,不断有人被拉进来。当时我在知乎建了一个“如何评价小米开源数据库Pegasus”的问题,然后写长回答自卖自夸。
这个回答不多久就被我删了,原因是回答下有个评论对我说,大致是:“我看你们代码很多地方写的很差”。我和他争辩,他说:“真的很差,根本看不下去”。
那么我为什么把那个回答删了呢?因为我认为他是对的,确实差,我也觉得。3年后的今天,代码质量当然改善不少,但众所周知的,对于开源项目来讲,顶多能被接受的批评应该是活跃度不够之类,一般的代码质量应当不至于遭到批评。要是被读过后立刻遭到批评,那这个项目就等于社会性死亡了。所以于我们专项努力背后与其说是所谓追求,不如说是害怕再度被戳到痛点。
3
Pegasus团队由于同时做开发和运维(oncall),所以团队核心人员可谓对稳定性细节如数家珍,但对接口设计和性能瓶颈则不甚深入。
2018年后的很长一段时间里,Pegasus的(normal)性能几乎没有变化。我印象中唯有一次我们将gcc malloc替换为tcmalloc,整体YCSB测试结果提升约15%。这其实是不太起眼的数字,因为当时我们的规模尚不足以使15%的性能提升真的兑现为可观的成本节约。
随后我们又另寻偏方,支持动态性能模式调节,有点类似现在笔记本电脑上的全速模式,开启这个模式会获得了不起的写性能释放。为什么说这是“偏方”呢,这是因为我们当时对“性能”这件事情本身定义没有明确。
现在回头看,性能肯定不是一小时跑benchmark之后的那张测试报告,而是基于产品定位出发对效率的细致衡量。比如你定位于高吞吐完成作业,那么你就需要观察测试期间的各资源利用率,而不是观察延迟。
Pegasus是为低延迟设计的系统,那么我们就要观察延迟尖峰时的执行路径,跟踪每一阶段,然后抓到瓶颈。并且产品的定位要我们更看重延迟的稳定性(consistency),而非一时的高QPS,这是很简单的insight。
4
Pegasus在2019年失去了一个重要的社区用户,除了产品本身不够成熟外,另一个主要原因也是我们当时实在没有人力给社区做义务的手把手服务。响应时间过长就会导致用户信心缺失,而信心是社会运作最重要的东西之一。
2020年我们以Apache孵化器项目的面目重新开源,目的是借Apache的牌子给予大家一些信心。牌子只是一种方式,去做世界最好的产品,那才是真正的信心呢,对吧。
(图于2016年12月摄)
以上是关于我和Apache Pegasus的主要内容,如果未能解决你的问题,请参考以下文章
使用 Power BI 探索 Apache Kylin 多维数据集?
如何解决 java.lang.NoClassDefFoundError: org/apache/camel/impl/DefaultComponent?