可汗學院為何用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
- 寫給後端同學的vue後端Vue
- 寫在學習golang一個月後Golang
- 在閒魚,我們如何用Dart做高效後端開發?Dart後端
- java 中為什麼重寫 equals 後需要重寫 hashCodeJava
- Node.js能讓Javascript寫後端,為啥不讓Python寫前端?Node.jsJavaScript後端Python前端
- 月薪30-50K的大資料工程師們,他們背後是如何學習的大資料工程師
- 牛!他們用宜搭為醫院打造了一系列智慧管理應用
- Golang vs Rust 為後端選擇哪種語言?GolangRust後端
- YouGov:半數的美國人為他們的食物拍照Go
- 如何用雲端 GPU 為你的 Python 深度學習加速?GPUPython深度學習
- 【譯】如何用 TypeScript 玩轉後端?TypeScript後端
- 為什麼他們還在用 iPod 聽歌?
- 寫在平臺大戰之後:為什麼我要重寫自己的UIKit?UI
- golang後端工程師招聘Golang後端工程師
- 我們為什麼要嘗試前後端分離後端
- 免費背後的經濟學成因,如何用場景建立我們的思維模式?模式
- React Effects List大重構,是為了他?React
- 【上海招聘】golang後端工程師Golang後端工程師
- 你熟知的開源專案,幕後推手竟然是他們?
- 馬雲馬化騰是打工仔?BAT背後的大BOSS竟是他們BAT
- 如何用python編寫猜拳小遊戲?Python遊戲
- 可汗學院使用Go靜態上下文理順全域性變數和依賴 - khanacademyGo變數
- 他們還在做遊戲遊戲
- 為什麼重寫equals必須重寫hashCode
- 【跟著我們學Golang】流程控制Golang
- AI 的特殊技能:找到那些氪金大佬,然後榨乾他們AI
- 資料科學家的15個原則 踢人們屁股並讓他們震驚資料科學
- 孩子們為什麼要學Python程式設計Python程式設計
- 重複出現的特點弱點:找到弱點、分析他們為何產生消極影響、克服並避免它們再次出現
- Neditor 2.0.0 釋出,移除後端程式碼,重寫上傳邏輯(Ajax)後端
- .NET redis 客戶端開源元件 FreeRedis (繼 CSRedisCore 之後重寫)Redis客戶端元件
- 如何用PYTHON程式碼寫出音樂Python
- 如何用python 寫 adb 命令指令碼Python指令碼
- 尹成學院golang學習快速筆記(1)型別Golang筆記型別
- 尹成學院golang學習快速筆記(2)表示式Golang筆記
- 【北京】九一動力急聘中級和高階後端研發(Golang為主)後端Golang
- 從《恐龍獵人》到《網路奇兵》,他們如何重製經典遊戲?遊戲