Recent Posts
2023,重新起航
许久没有写博客,也从来没有写过公众号,那就从这篇年终总结开始吧。
2022 年对我个人来说是一个重大转折的一年。经过许久的犹豫、挣扎和思考,最终下定决心从大厂出来创业,我这艘不甘于稳定、日复一日生活的小帆船,又开始重新起航,不过这次,我的身边有一群小伙伴。
创业的动机跟我过去 4 年的工作有关,在解决超大规模互联网技术平台的可用性保障过程中,我们自研了一整套时序数据处理系统,通过采集丰富的可观测数据,构建可观测实体的模型以及它们之间的关联关系,结合海量数据挖掘技术、专家经验和智能算法(或者称之为 AIOps),我们构建了一个可观测的实时数据集市,来解决软件服务的异常巡检、可用性监控、预警及根因定位等问题,达到了非常好的效果,并且这样的数据集市在构建完成之后,在更多业务场景中也找到用武之地,例如容器资源的弹性智能调度、全站的资源和性能诊断优化等。
这个过程中,我抽象出三个底盘的理念:
数据底盘:也就是上文提到的实时数据集市,解决数据的采集、清洗、建模(实体及关系)、治理等。将所有层次(物理层、IaaS、网络、中间件、数据库、应用、业务、大数据生态)等数据汇总到一个时序数据湖里,打破数据孤岛,让用户可以找到数据,数据可以找到应用。
算法底盘:在大量的数据面前,依靠人工挖掘分析是不够的,我们需要提供算法的能力来帮助用户挖掘和分析数据。比如一个配置预警阈值的场景,当监控指标超过 10 万的时候,不可能靠人去一个一个去配置了,你需要智能的时序异常检测及预测算法来帮助你。同时,也需要建设一个算法平台来帮助算法研发、测试和运行。
代码底盘:仅有算法也是不够的,深度学习模型需要大量的高质量的样本数据,基于统计的算法总有局限性,特别是在泛用性上不够(无法适配未知场景),因此我们还需要结合专家的规则来做算法结果的校准和降噪,专家规则的沉淀和执行就需要一个低代码研发的平台,当时我把它称为 MaaS(Monitoring as a Service,所谓监控即服务)。将数据查询、算法、可视化等等能力都 API 化,并在低代码平台里提供,方便专家编写各种各样的规则。
随着这样思考的形成,以及后续接触到外部的一些场景,特别是工业领域、物联网领域以及金融方面,随着软件和硬件的传感器入侵到各种各样的产品和业务里,海量产生的时序数据的处理、存储和分析,会非常需要上述这样的产品及能力。
当然,我们不是去复制过去做过的的系统,而是基于上述的思考,在企业上云以及云原生的大潮下,重新思考整体的设计和架构,从头去做一套更极致和优秀的产品,这样的产品不仅是可以服务于中大型的客户,并且可以灵活地以标准化甚至 SaaS 的方式服务中小客户,将我们拥有的丰富实践服务到更广大范围的用户。
从更大的范畴来看,中国互联网在中国这个复杂、丰富并且规模巨大的业务场景下,已经锤炼出不少过硬的技术,我们也有非常优秀的工程师,是可以去参与全球的市场竞争,只是在产品化、UI 体验、国际化以及对用户需求的更细致挖掘上面,还有很多值得提升的地方。
告别稳定的、有保障的生活并不容易,不过我在加入大厂之初就想过,下一份工作要么就是创业,要么就是一干到底了。转眼之间已经是奔四的年纪,回忆当初成为一个程序员的初衷是创造一个世界级的软件,我距离这样的目标仍然非常遥远,我仍然热爱编写代码,仍然对世界拥有一份好奇心,在和即将创业和已经创业的朋友聊过之后,痛并快乐的体验吸引着我。我从来不是一个完全理智的人,否则也不会在 12 年离开淘宝加入 LeanCloud 创业,况且,一个理智的人应该不会在这个年份去创业吧,哈哈。在萌生这样的想法并且不可抑制之后,我也找到了志同道合的伙伴,说干就干。
从 4 月份离职到现在,公司的成立,团队的构建,产品的设计和研发,这个过程有太多值得总结和回味的地方,有机会再细细分享。这个过程中得到许多人的帮助和信任,心里充满感激。我自己一个不成熟的感受就是,创业其实是将你过去一段时间的积累重新梳理、挖掘并且充分发挥的过程,创业其实是从很早就开始的。同时,创业的过程仍然需要去注重知识、人脉和技能的积累,否则总有一天会把过去的积累掏空,你就很难去面对未来的挑战。
既然是我们说了算的公司,我们当然不想再去做一家我们“讨厌”的公司。我们希望公司的氛围是开放、透明,充满信任和鼓励,简而言之,它必须是一家常识意义上的好公司。常识我们都懂,什么是好人,你有一些基础的判断,什么是好公司,大家也有基础的判断。回归到常识,很多事情的价值判断是一目了然的。但是好,不意味着是和稀泥,不是老好人,而是在充分的、透明的沟通下,大家对做事的目标、方法达成一致,有一致的追求和品味,并且对这些目标有严格的定义,完成的过程和结果有严格的要求。
我们也希望做一个好产品,它不能只是我们说好,它必须真正能帮助到客户,解决客户的痛点,同时,它必须有好的文档和 UI/UX 体验,它也应该是国际化,因为作为开源的 Infra,它天然就应该是面向全世界的。它需要是实用的、解决问题的、酷的、有品味的(P.S. 我觉得我们的 Logo 和网站设计都挺有品味,哈哈)。这当然非常非常难,不过却是我们想去追求的目标。
开源是一开始既定的策略,原因也很简单,我们几个人都热爱开源,也从开源学习和吸收了大量的知识,我们想回馈开源社区。作为创业公司,做基础类的软件,开源也是一个很好的策略,国内这几年涌现出来优秀的开源软件公司也给了我们极大的启发和信心。不过做开源,我们想第一天代码就按照最终开放的标准去要求,无论是 code style 的规范、commit message 的规范,还是研发分支管理和 PR 合并的规范、issue 和文档的规范等等,我们从写下第一行代码就逐步去完善和执行,我们也希望未来所有的功能里程碑的制定、方案的设计以及完整的研发流程,也能以开放、透明的方式在开源社区里呈现,也欢迎志同道合、感兴趣的朋友来玩。
(我们在一起等将研发了半年的项目 repo 公开)
(Repo 公开那一刻的 Github 机器人消息截图)
2022 年,我们顺利将 GreptimeDB 开源,也开始基于这个 OpenCore 构建我们的产品,团队也初步磨合成形。我自己又开始大量地参与研发,Github 的热度也起来了,虽然跟团队里的优秀的年轻人没法比,哈哈。年轻人一定是越来越优秀的,如果不是,那一定是哪里出了问题。
2023 年从任何一方面来讲,都将是更具挑战性的一年,宏观层面不会很乐观,但是打铁还是需要自身硬,我们需要去走一遍技术到产品,产品到商品,以及商品走向主流市场的路,这对我和团队来讲,都是没有完全走过的路(尽管我们在 LeanCloud 已经经历了部分)。不过既然已经扬帆起航,无论前方是风平浪静的碧海晴天,还是疾风暴雨的惊涛骇浪,也只有妥善掌舵,勇往直前!
GreptimeDB: https://github.com/GrepTimeTeam/greptimedb
read more
有无之间
我们对于“拥有”总有一种执念,这可能是动物的本能,从婴儿时期就很明显的表现出来,这个玩具是我的,这个好吃的是我的。这种本能是自然界教育出来的,没有毛病。 昨天不知道为何,突然思考起拥有的真正含义,得出一个结论,我们并没有真正拥有。很巧,晚上跟朋友吃饭,也聊到这个话题。拥有本质上只是一个假象,某个物件在你手中,也只是暂时的拥有,它终有一天会转手,会损坏,会丢失,会蒙灰,它跟你的缘分也就那短短的几年甚至几天几个小时。我们和父母、妻儿、亲友的羁绊,也只是这一世,你并没有真正地拥有你的儿子,你的妻子,他们有自己的想法,思考,独立的人格。我们能够拥有的都只是这短短数十年的陪伴、关爱和争吵。
其实这个想法并不新鲜,跟佛家所说的缘聚缘散是一个道理。只是更进一步的思考,如果一切东西都是短暂拥有,是不是不值得去奋斗?不值得去珍惜?我经常跟同事说要有 ownership 的意识,是不是在忽悠人?答案是否定的。让你不执着于“有”,不表示你应该放弃“有”,不去奋斗,不去珍惜,不去坚持。相反,正因为天下没有不散的筵席,我们更应该珍惜所“有”,活在当下,不悔过去,不忧未来。
简而言之:恰到好处。增之一分则太长,减之一分则太短。这个度的把控在于心,而按照王阳明的说法心即理,不可外求天理,你要做的是时时刻刻去私心,行的是为善去恶的功夫。最高的境界可能就是孔子说的从心所欲不逾矩了。
read more
这是一个招聘帖
加入蚂蚁金服还有 4 个月就满两年了,这一年半来了,还是做了一些很有意思的事情。现在在 twitter 分享比较多,还有关注我博客的朋友可以关注下。
从今年开始,我们小组总算成型了,目前专注在做时序数据库方向,这个时序数据库有应用在蚂蚁内部的监控、数值指标分析等场景里,落地了很多场景,今年预计会有一个更大的场景来落地,面临的技术挑战很大。除了海量的数据写入压力之外,对于成本和性能也提出了更高的要求。如果仅仅是时序,想象空间仍然是有限的,我们还在开拓更多的应用方向。除了存储之外,我认为现在其实我们已经收集了非常多的数据,但是这些数据的价值还没有充分挖掘,为了从这些数据中抽取有价值的信息,无论是使用传统大数据的分析方法,或者使用 AI 机器学习来挖掘,都需要数据库提供一套可供分析计算的框架出来,而这一块的挑战就更大了。
我们的技术栈是 golang + rust + java:
Rust 用于编写数据库的存储引擎,我们把它当成更安全的 cpp 在使用。总体而言, rust 除了刚开始的学习曲线稍微陡峭点以外,熟悉之后的开发效率还是可以的,而性能优势比之带 GC 的语言来说就更大了。我们选择 rust 来写引擎的原因,除了看重语言和平台带来的性能红利之外,更重要的原因是使用底层的系统语言,你才能更好贴近硬件,利用好硬件的能力,特别是现在“新”硬件的发展。隔着一个虚拟机,你能做的事情总是受限的。 我们使用 Golang 做集群的分布式架构,类似 gateway 和分片、容灾调度等集群管理工作,随着计算方向的进一步清晰,未来可能还会使用 Golang 做类似计算调度的事情等。 最后,我们用 java 在做大数据分析这块,大数据分析引擎目前还是以 java 居多,作为更直接接触用户的方向,适配公司内的主流语言是必须的,另外团队内也有很资深的 java 工程师也是一方面因素。 我们这个小组不大,目前还不到 10 个人,也是我喜欢的风格,做事情靠谱,氛围简单,所以下面是一个广告时间。
Rust 引擎研发工程师 CeresDB 作为高性能、低成本并具有实时分析能力的新一代分布式时序数据库,已经应用在蚂蚁金服主站、网商和金融云等诸多场景中。我们面临着海量数据存储、访问和分析的技术挑战,急需对此方向感兴趣的朋友加入。
你将参与蚂蚁金服时序数据库 CeresDB 存储引擎的研发,包括但不限于:
核心存储引擎的研发。 存储与计算分离架构的研发。 引擎层面对于实时计算和分析框架的研发。 软硬件结合技术的探索和应用。 岗位信息:
层级:p7~p9 工作地点:杭州/北京 我们对你的要求:
工作三年以上,有存储引擎研发经验者优先。 计算机基础扎实,熟悉常用数据结构和算法,掌握 C/C++/Rust 语言中的至少一门,愿意学习和使用 Rust 语言。 熟悉 linux 系统,有丰富的系统编程经验者优先;有良好的编码习惯,追求卓越的工程实践,易于沟通,并具有持续学习的能力。 对于时序数据库领域有所了解和研究的优先,有系统性能调优经验者优先。 Golang 研发工程师 你将参与蚂蚁金服时序数据库 CeresDB 的研发,包括但不限于:
read more