Salesforce:为什么我们在Einstein Analytics中抛弃Python而使用谷歌的Go语言

Salesforce最近斥资15.70亿美元收购了分析公司的Tableau,以建立自己的Einstein分析平台。显然,Salesforce将分析视为其未来的关键。

但在该公司于2017年推出爱因斯坦分析(EinsteinAnalytics)之前,它对后端进行了彻底的改造,并几乎完全使用了谷歌(Google)流行的Go,即Golang编程语言。


SalesforcePrinciArchitectGuillaumeLeStum说,在Salesforce推出EinsteinAnalytics之前,最终成为EinsteinAnalytics的查询引擎和数据集创建工具用C"用于性能"和Python包装器编写,提供类似解析查询和RESTAPI服务器的功能。

"本质上,该产品是为了拥有两个世界上最好的,"解释了在堆栈溢出的帖子中的LESTUM。

"Python非常适合快速编写高级应用程序,但并不总是提供企业级所需的高性能。C创建高性能可执行文件,但添加功能需要更多时间。"

Python当然很受开发人员的欢迎,包括Netflix的工程师,他们在其庞大的流媒体基础架构的每个部分使用Python。

但在发布之前,LeStum表示,爱因斯坦分析的勇气开始表现出性能下降,因为任何不是核心查询引擎的一部分的新功能都被加载到Python包装上。

因此,虽然Salesforce可以用Python快速开发和部署功能,但最终该方法使它变得迟钝。

"Python不能很好地执行多线程,因此需要更多的包装来做,更糟糕的是它执行了更糟糕的事情,"解释了LESTUM。

另一方面,Go是为适用于谷歌生产系统的巨大应用程序而建立的,因此Salesforce决定将爱因斯坦分析从一个混合的C-Python应用程序转移到一个完全的Go应用程序。

尽管有一些优势,但LeStum还发现了与Python呆在一起的两个方面。

“首先,Python使用松散类型,对于一个快速开发新想法并将其投入生产的小团队来说,这是很棒的,但对于企业规模的应用程序,一些客户支付了数百万美元,这就不太好了,”他写道。

第二,我们预见到了一个巨大的依赖噩梦,因为部署正确的Python库、版本和文件将成为一件苦差事。所以在2014年,我们决定将Python包装器移植到Go。”.


LeStum表示,Go的优势包括其内置工具、快速编译时间和部署、易于故障排除以及代码易于理解的方式。

在Python中,你可以编写超优雅的列表和美丽的代码,这几乎是数学的。但是如果你没有写代码,那么优雅就会带来可读性的代价。”他解释说,在企业软件中,工程师们花了更多的时间阅读代码,而不是编写代码。

与用于查询引擎的C相比,该群组仍然存在关于GO的性能的问题。然而,在GO中写入的概念证明使它们能够继续,并且EinsteinAnalytics的Go版本在2018年达到了一般可用性。

其中一个最大的优点是GO的跨平台功能使移植代码变得容易。

"如果我们在移动应用程序中需要任何代码,我们可以将它交叉编译到iOS或Android,它将只是工作,"花音符。

没有内置Go的Einstein分析的唯一部分是ClusterManager,它是用Java编写的。

更新:Salesforce要求ZDNet指出公司原始堆栈溢出件的不准确。虽然Salesforce确实从C-Python混合到Go的Einstein分析查询引擎,但EinsteinAnalytics也是基于除Go和Java之外的其他语言构建的,尽管Salesforce拒绝说出这些其他语言是什么。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。