Dojo
最新
最佳
搜索
订阅
解道Jdon
领域驱动设计
架构设计
热点话题
GitHub开源免费源代码
产品经理
数据工程
微服务架构文章排行榜
RUST语言
DevOps文章排行榜
go语言文章排行榜
数据科学
幽默模因
更多话题
可汗学院为何用Golang重写他们的Python后端?
22-01-20
banq
可汗学院最近进行了大规模重写,他们用 Go 编写的面向服务的后端替换了旧的 Python 2 单体。
Kevin Dangoor 和 Marta Kosarchyn 是可汗学院的高级工程师,他们写了
一系列
关于重写的技术选择、执行和结果的博客文章。我们将在下面总结这个系列。
2019 年底,可汗学院正在寻求升级他们的后端。该站点建立在 Python 2 单体
架构
上,并且运行良好 10 多年。
然而,Python 2 即将在
2020 年 1 月 1 日正式结束生命周期,
因此可汗学院的工程师决定他们必须进行更新。
可汗学院有几种选择:
从 Python 2 迁移到 Python 3 - 这将使 KA 的后端服务器代码性能和 Python 3 的语言特性提高 10-15%。
从 Python 2 迁移到 Kotlin -
KA 开始将 Kotlin
用于计算密集型后端任务,因为它比 Python 2 性能更高。从 Python 切换到 Kotlin 可能意味着可汗学院的响应速度更快,服务器成本下降。
从 Python 2 迁移到 Go - Go 是一种简单而简洁的语言,编译时间非常快,对
Google App Engine
的一流支持以及比 Kotlin 更少的内存使用量(基于 KA 的测试)。
在这些选项中,可汗学院决定采用第三种选择,并使用 Go 重写他们的 Python 2 单体。
他们进行了性能测试,发现 Go 和 Kotlin(在 JVM 上)的性能相似,Kotlin 领先几个百分点。但是,Go 使用的内存要少得多。
Go 和 Python 之间的巨大性能差异使得转换所涉及的努力是值得的。
1
猜你喜欢
其他人在看