640?wx_fmt=jpeg

整理 | 唐小引

封图 | 付费下载自东方 IC

出品 | CSDN(ID:CSDNnews)

腾讯开源进化 8 年,进入爆发期!

继刚刚连续开源 TubeMQ、Tencent Kona JDK、TBase、TKEStack 四款重点开源项目后,腾讯开源再次迎来重磅项目!北京时间 11 月 14 日,腾讯正式宣布开源高性能图计算框架 Plato,这是在短短一周之内,腾讯开源的第五个重大项目。

据腾讯官方介绍,Plato 是腾讯内部图计算 TGraph 团队整合内部资源自主研发的一款高性能图计算框架,取名 Plato 是为了致敬伟大的数学家柏拉图,目前腾讯云大数据团队正在封装 Plato,即将对所有开发者开放使用。

相对于目前全球范围内其它的图计算框架,Plato 可满足十亿级节点的超大规模图计算需求,将算法计算时间从天级缩短到分钟级,性能全面领先领先于其它主流分布式图计算框架,并且打破了原本动辄需要数百台服务器的资源瓶颈,现在,最少只需要十台服务器即可完成计算。

腾讯 Plato 团队负责人于东海表示:“Plato 已经赋能腾讯内部包括微信在内的众多核心业务,尤其是为腾讯超大规模社交网络图数据的各类计算提供支撑,解决了现有其他计算框架无法在有限资源和有限时间内完成计算的难点。Plato 不仅为腾讯创造了巨大的业务价值,开源后还将持续推动图计算技术和行业的协同发展,加速创新。”

 

640?wx_fmt=png

详解腾讯高性能图计算开源框架 Plato

 

实际上,图计算的“图”并不是指普通的图像和照片,而是用于表示对象之间关联关系的一种抽象数据结构,图计算就是以图作为数据模型来表达问题并予以解决的过程。图计算可以将不同来源、不同类型的数据融合到同一个图里进行分析,得到原本独立分析难以发现的结果,因此成为社交网络、推荐系统、网络安全、文本检索和生物医疗等领域至关重要的数据分析和挖掘工具。

据了解,Plato 的计算性能方面极其强悍,比目前市场上最为领先的图计算框架 Spark GraphX 还高出 1-2 个数量级,它将算法计算时间从天级缩短到分钟级,性能提升数十倍,也标志着图计算全面进入分钟级时代。

另外一个巨大优势是,Plato 在内存消耗方面远小于主流的图计算框架,比 Spark GraphX 减少 1-2 个数量级,仅需 10 台服务器左右的中小规模集群,即可完成超大规模图计算,相比此前动辄需要数百台服务器的限制,资源压力和计算成本都得到了极大降低。

目前,Plato 主要提供两大核心能力:腾讯数据量级下的离线图计算和腾讯数据量级下的图表示学习。

同时,Plato 天然适配 Kubernetes、YARN 等资源调度平台,并提供支持主流文件系统的多种接口,能为开发者提供更友好的运行环境。

架构设计上,Plato 框架的核心是自适应图计算引擎,它能够根据不同类型的图算法,提供多种计算模式供开发者灵活选择,包括自适应计算模式、共享内存计算模式和流水线计算模式等。另外,还设计了良好的接口支持接入新的计算通信模式。

640?wx_fmt=png

Plato 整体架构图
 

在计算引擎之上,Plato 为算法设计者或具体的业务提供多层次接口:从底层的 API,到图算法库,再到为具体业务量身打造的“解决方案”——图工具集。通过这些应用层的接口和工具,Plato 还可以把离线计算结果与其他机器学习算法相结合,共同支撑顶层的不同业务。

值得一提的是,目前 Plato 的算法库中的图特征、节点中心性指标、连通图和社团识别等多种算法都已经开源,未来还将进一步开源更多的算法。

 

640?wx_fmt=png

性能对比

 

据腾讯官方介绍,Plato 的计算性能遥遥领先于主流的分布式图计算框架。下图选取了 Plato 与 Spark GraphX 在 PageRank 和 LPA 这两个 benchmark 算法的性能对比,可以看到,Plato 的性能比 Spark GraphX 高出 1-2 个数量级。

640?wx_fmt=png

除了计算性能不足,内存占用过大也是限制大规模图计算的主要因素。Plato 的另一个巨大优势则是它的内存开销远小于主流图计算框架。从下图看到,Plato 的内存消耗比 Spark GraphX 减少了 1-2 个数量级,为超大规模图计算创造了更大的想象空间。

640?wx_fmt=png

Plato 不仅在 benchmark 算法中独树一帜,在真实的业务算法中也同样成效卓著。在腾讯数据量级下,Plato 的计算性能也非常优秀。下图给出了 Plato 在腾讯数据量级下的共同类计算、Node2Vec、LINE、GraphSage 等典型业务算法的性能。

640?wx_fmt=png

 

640?wx_fmt=png

腾讯开源 8 年进化:86 个项目,GitHub 排名前十

 

从 2011 年腾讯在内部提倡以公共组件的形式共享和复用代码、2012 年发布第一个对外开源项目到今天,腾讯开源已经走过了 8 年,也已取得丰硕成果。截止目前,腾讯已经在 GitHub 上已经开源了 86 个项目,超过 1000 个贡献者参与了开源贡献,拥有超过 25 万个 Star 数,在 GitHub 全球公司贡献榜上排名前十。

640?wx_fmt=png

同时,腾讯业已加入 Linux、Apache 等 9 大开源基金会,成为最高级别会员,并向 Linux、Apache、LF AI 等开源基金会捐赠 3 大优秀开源项目。2018 年,腾讯将高性能 RPC 开发框架 TARS,及其轻量化名字服务方案 TSeer 捐赠给 Linux 基金会,将业界领先的深度学习框架 Angel 捐赠给 Linux 旗下专注人工智能的 LF AI 基金会;2019 年,腾讯新发布的万亿级分布式消息中间件 TubeMQ 捐赠给 Apache 基金会,成为官方认可的 Incubator 项目。

总结来看,腾讯通过“三步走”的开源计划,通过代码开放和社区运营,不断深化腾讯已有的技术能力,向协同开放和社区开放治理的纵深方向发展。

具体来说,第一步是内部开源协同。首先拉通内部项目和组织,通过部门小团队作战或跨部门大团队作战的方式协同推进,以优化资源配置的方式集中优势寻求技术突破,并建立起筛选机制将代码开放出来。

第二步是外部代码开放。优化设计与代码结构,不断拓展落地场景,有效利用外部贡献者资源实现资源整合,构建技术影响力。

第三步是社区开放治理,在这一阶段,注重大规模技术推广与应用、开发者生态体系构建、社区领袖与领导力培养、全社会研发资源的优化配置四个方面。

对于腾讯为什么如此重视开源治理,腾讯开源联盟(TOSA)主席、腾讯技术工程事业群数据平台部大数据海量存储与海量计算负责人堵俊平在接受 CSDN(ID:CSDNnews)采访时谈到了至关重要的两点:「第一点,腾讯对于开源的态度非常成熟,开源不是像其他公司开源出去大家赢得掌声就结束了。开源代码开放只是第一步,第二步是建立好的社区,第三步是通过这个好的社区进行技术挖掘。给生态上的各个企业带来一些回报,这是很长期的过程,不是一次代码开放就解决的。第二点,腾讯是做社交起家的,很擅长于做人与人之间的连接,开源能够做成功和腾讯包容和沟通是离不开的,这就是为什么我们比较重视这一点。」

现在,快来 GitHub 上 Star Plato 吧!

Plato 开源地址:

https://github.com/tencent/plato

Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐