可汗學院為何用Golang重寫他們的Python後端?
可汗學院最近進行了大規模重寫,他們用 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 之間的巨大效能差異使得轉換所涉及的努力是值得的。
相關文章
- 可汗網路學院編寫了50萬行Go程式碼後兩點心得Go
- 如何用雲端 GPU 為你的 Python 深度學習加速?GPUPython深度學習
- java 中為什麼重寫 equals 後需要重寫 hashCodeJava
- 寫給後端同學的vue後端Vue
- 為什麼我要使得GOLang重寫SAAS(軟體即服務)服務端Golang服務端
- 寫在學習golang一個月後Golang
- 在閒魚,我們如何用Dart做高效後端開發?Dart後端
- 月薪30-50K的大資料工程師們,他們背後是如何學習的大資料工程師
- 你知道什麼是後端套模板嗎?他們是怎麼操作的知道嗎?後端
- python後端學習路線Python後端
- Golang vs Rust 為後端選擇哪種語言?GolangRust後端
- golang後端工程師招聘Golang後端工程師
- 他們為了桌遊走出家門
- 牛!他們用宜搭為醫院打造了一系列智慧管理應用
- 為什麼他們還在用 iPod 聽歌?
- 免費背後的經濟學成因,如何用場景建立我們的思維模式?模式
- 可汗學院使用Go靜態上下文理順全域性變數和依賴 - khanacademyGo變數
- 為什麼重寫equals必須重寫hashCode
- 讓外國人來寫修仙小說,他們會寫出什麼?
- 他們是誰?
- 如何用python編寫猜拳小遊戲?Python遊戲
- React Effects List大重構,是為了他?React
- 愛孩子嗎?愛他們就讓我們懂他吧
- 成為全球收入第一手遊後,我們和米哈遊聊了聊他們心目中的《原神》
- 你熟知的開源專案,幕後推手竟然是他們?
- .NET redis 客戶端開源元件 FreeRedis (繼 CSRedisCore 之後重寫)Redis客戶端元件
- 從《戴森球計劃》到《煙火》,為什麼爆款背後總有他們的身影?
- 有愛無礙,科技為他們點亮漫天星光
- RTS簡史——他們為什麼如此熱愛RTS
- 為什麼他們都在沉迷《鬼谷八荒》?
- 【跟著我們學Golang】流程控制Golang
- AI 的特殊技能:找到那些氪金大佬,然後榨乾他們AI
- Neditor 2.0.0 釋出,移除後端程式碼,重寫上傳邏輯(Ajax)後端
- 該讓日本廠商為他們的故步自封付出代價了
- 用gpt直接寫後端的感覺GPT後端
- 重學python【numpy】Python
- 如何用python自動編寫《赤壁賦》word文件Python
- [譯] 如何用 Python 寫一個 Discord 機器人Python機器人