从0到1打造开源项目

·「名人堂」开源项目核心贡献者高洪涛·

本期名人堂很荣幸邀请到ApacheSkyWalking和ApacheShardingSphere的核心贡献者高洪涛老师来分享自己的开源历程。

问题1:您好,高洪涛老师!很荣幸有机会采访到您,先简单介绍一下您自己?

大家好,我从业近15年的时间了,目前在湾区的一家创业公司,Tetrate。公司主要的业务方向是为用户提供企业级的ServiceMesh服务,产品核心包含了Istio,Envoy和SkyWalking这三个主要的开源项目。

加入Tetreate之前是华为软件开发云技术专家,对云原生产品有丰富的设计、研发与实施经验。对分布式数据库、容器调度、微服务、ServicMesh等技术有深入的了解。

在开源领域,我目前是ApacheSkyWalking和ApacheShardingShpere的PMC成员,也是这两个项目的早期参与者。对开源项目的管理、推广和社区运营有丰富的经验。

我不仅深入参与开源项目,同时也积极参与技术分享,曾在多个技术大会中做过交流,包括DTCC,ArchSummit,Top,Oracle嘉年华等。在InfoQ,OSChina等多个媒体发表过文章。同时是《ApacheSkyWalking实战》和《深入理解Istio》的联合作者。

问题2:您之前在互联网与云计算行业10年以上的时间,为何考虑创业,创业后主要负责的工作是?

我是ApacheSkyWalking社区的PMC成员,加入Tetrate主要是将SkyWalking引入公司的产品中。经过三年的时间,已经完美解决SkyWalking和Istio之间的结合。近年做了一系列相关的分享,包括服务指标,拓扑图和ondemand日志等有趣的功能。

近期主导SkyWalking自研数据库-BanyanDB的研发和社区运营工作。BanyanDB是SkyWalking一个子项目。SkyWalking曾在存储层选型有很多抉择。最早选用HBase,这是一种传统的选择。众多以Dapper论文为基础的trace系统都会选择HBase或类似的存储引擎。之后我们全面转向了Elasticsearch,这是目前使用最为广泛的搜索引擎。SkyWalking利用现代搜索引擎的高扩展性来接受并存储大量可观测性数据,并利用它强大的搜索功能来实现快速的数据检索。

BanyanDB的目标是在实现较高查询性能的基础上,竭尽所能提高数据的存储密度和吞吐量,达到较高的性价比。SkyWalking使用Elasticsearch所面临的最大问题是其性价比非常低,它需要大量的存储空间来获得较高的查询性能。我们希望BanyanDB在保持所需查询性能的基础上,能够最大程度的压缩数据。未来希望利用像S3等对象存储,来进一步提高数据的价值密度。

问题3:是什么契机促使您加入Tetrate呢?

我之前在华为,主要的方向就是云平台,在可观测云领域中深耕了多年,对云原生可观测性有深入理解。同时是ApacheSkyWalking社区早期的联合创始成员之一。我们社区是首款面向于企业级用户使用的开源可观测性平台,而且是首个由国人以纯社区的运营模式为基础,加入Apache基金会的开源项目。也是在SkyWalking加入Apache后,整个的基金会的中国项目呈现了蓬勃发展的态势。所以SkyWalking对于整个中国开源和Apache基金会都是有重要意义的项目。

在要加入Tetrate的时候,Istio和ServiceMesh相关领域还处在萌芽的阶段。但我敏锐地观测到ServiceMesh是将会成为未来云计算的重要基础设施,就像当年的dubbo和nginx。近年发展,不仅互联网企业,甚至传统的企业用户也越来越喜欢ServiceMesh,希望采用ServiceMesh来实现系统现代化。

我们将SkyWalking和Istio进行了完美的融合。提供了不同层次的产品线。同时,这种融合也向用户展示了利用于开源社区为内核是可以提供有效商业化服务的。从而帮助企业用户解决他们所面临的服务管理、安全和观测性难题。

问题4:在自研工作中曾遇到过哪些问题?又是如何解决的?

从0到1研发一款数据库,单纯从它的目标就知道挑战是非常巨大的。

首先,数据库系统经过多年的发展,特别是近15年NoSQL和NewSQL井喷式的发展。数据库领域必然会产生各种各样的新思想和观念。它们与旧的传统和理念激烈碰撞,导致质疑、反对,甚至愤怒弥漫在整个数据库领域内。

首先遇到的挑战就是质疑为何要构建一个自己的数据库,不直接采用目前市面上已有的数据库产品?为何不在前人基础上去构建?因为BanyanDB数据模型从分类上看,属于时序数据库,目前有众多类似数据库,那么BanyanDB独特之处是什么?

回应这个质疑其实非常简单:就是不合适。在以往多次演讲中,我都会分享RUM假说。其基本概念是用三角形约束来定义数据库的访问模式:写入、读取和存储空间。每种数据库都需要在三者之间取得平衡。目前市面上大部分的数据库都是在优化读取。但在APM领域,SkyWalking所面临的可观测性场景中,写入和存储空间的重要性比读取高得多。metrics的热读取一般是在近期,比如最近半个小时到三个小时之间。其历史数据往往逐步变冷而失去价值。logs和traces更是如此,甚至并不会实时的读取logs和traces。当然这里有一个假设是排除了离线日志分析场景,单纯是从运维角度看问题。大部分日志是不会被读取的,甚至是包含错误信息的日志。只有用户真正发现系统有问题,需要做debugging和profiling,才会去看logs和traces。他们才会希望从中发现更有价值的信息,进而定位致命故障和性能异常。所以如何更好的将数据存到磁盘上,提高单位空间内数据量,进而提高单位存储空间之中数据的价值,这是BanyanDB所考虑的。放眼整个APM和数据库领域,很难找到满足类似条件的数据库。这就是BanyanDB存在的价值。

另一个就是技术问题。并不是进行理论创新,而是对各种已有理论的可实现性进行合理评估。数据库发展多年,近年来新思想也异常活跃。如何从众多的技术中选择适合BanyanDB的,就成为面临的主要问题了。我们的设计目标非常简单:就是要化繁去简,把多余的东西从核心逻辑中去掉。我们需要研究候选技术的产生背景,判断该背景是不是要去面对的,这是非常有挑战的。另一个挑战点就是进行场景验证。SkyWalking的场景非常丰富。依托于强大的开源社区,可以接触到各种各样的APM场景,这是研发通用数据库难以获取的优势。大部分新数据库的研发都是基于一种理论,在实践中慢慢磨合。而BanyanDB在研发过程中就积极与SkyWalking整个生态进行整合。虽然延长了研发周期,但可以更从容的解决数据库在真实环境中产生的问题。

所有开源社区,特别是纯社区运营的,最大难点在于贡献者的时间安排。目前有非常多的技术人员对开源、可观测性技术、数据库感兴趣,也很愿意参与进来。这就存在两个巨大的挑战:第一就是时间问题。贡献者都是有自己本职工作,如何利用有限的时间参与开源社区,是非常有挑战的。同时,项目管理者如何安排和规划任务难度也很大。第二,像SkyWalking落脚于比较小众的领域—APM。如何理解该领域的数据特点,是需要开发者耐心的。最后,就是数据库本身难度也比较高。了解数据库内部运行机制原理的潜在贡献者实际上并不多,这也限制了贡献者的数量。好在SkyWalking和BanyanDB是开源的国际化社区。在国内和国际上都获得了很多反馈,包括北美、欧洲和印度的小伙伴也共同做建设。虽然时间跨度很大,但经过持续的累积,最终也能得到希望的结果。

问题5:BanyanDB的核心产品以及产品特性是什么?为何能获得业内广泛


转载请注明:http://www.xcqg58.com/bcxx/bcxx/26847208.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了