乙個神奇的組合出現了! 與使用 Python 相比,Rust 和無伺服器可以節省一大筆錢!
眾所周知,lambda 函式和大型執行時是乙個糟糕的組合,因為與本機**相比,冷啟動速度較慢,記憶體要求更高。 另一方面,許多開發人員使用 J**A 和 Python 比使用 Rust 等系統語言更有效率。
然而,現在,你不需要用 rust 重寫整個 lambda 函式 (pyhton) 來真正“降低成本和提高效率”。
雲諮詢公司 CloudEx 的工程主管 Merdler Kr**Itz 舉了乙個 lambda 函式的例子,該函式使用 Python 列出 S3(簡單儲存服務)儲存桶。 AWS SDK Boto3 for Python 已被證明過於臃腫,通過用 Rust 替換需要 Boto3 的函式,可以在成本和效能方面獲得巨大的好處——即使 Python 仍被用於其他用途。
用 Rust 替換 Python 的關鍵是 PYO3,它為 Python 提供了 Rust 繫結。 rust 中的屬性將函式公開為標準 python 介面。
因此,在 Merdler Kr**Itz 提供的示例中,冷啟動速度提高了三倍,記憶體要求也低得多。 對於 1GB 的 RAM,Rust 和 Boto3** 具有相似的效能,但對於 256MB 的 RAM,增強版的 Rust 仍然表現良好,而另乙個則不然。
在 lambda 中使用 rust 的成本效益:re:invent 上的乙個例子。
特別是在無伺服器平台上,減少所需的計算資源量可以降低成本。 “平均而言,Rust 比 Python 便宜,可能是後者的 1 3 到 1 4,”他聲稱。
在 Re:Invent 大會上,AWS 還宣布其適用於 Rust 的開發工具包已準備好投入生產。 去年 11 月初,這家雲巨頭基於“最小容器映象”向 Lambda 新增了對 Amazon Linux 2023 的支援,並表示其主要用途之一是“使用編譯為原生**的語言,例如 Go 或 Rust”。 ”
至少從 2015 年開始,Rust 中對 AWS 服務的非官方支援就已經存在,當時 Matthew Mayer 和 Anthony Dimarco 正在開發 Rust 1在 0 發布後不久,乙個名為 Rusoto 的獨立專案啟動了,其目標包括學習 Rust。 根據鏽箱庫板條箱IO的統計,Rusoto的**量已經超過了1100萬次。
AWS Rust 開發工具包的第乙個 alpha 版本由當時在 AWS 工作的 Iliana Etaoin 於 2021 年推出,她是 Rusoto 的共同維護者。
根據介紹,官方 Rust SDK 現在支援 300 多種 AWS 服務,並“支援現代 Rust 語言功能,例如非同步等待、非阻塞 IO 和構建器”。
AWS Lambda 還有乙個實驗性的 Rust 執行時,可簡化在 Rust 中的執行,並包括支援 Lambda 事件、擴充套件和 Lambda 執行時 API 的 crate。 乙個名為 Cargo Lambda 的相關專案支援使用 Lambda 模擬器進行本地開發和測試,以及在 Windows 或 macOS 上開發時針對 Linux 進行交叉編譯,無論開發人員在他們的 PC 上執行什麼,都可以選擇 arm64 和 x86-64。 使用 rust 構建 lambda,亞馬遜官方給出了詳細的文件。
當然,實驗性**在生產中沒有使用,所以在 lambda 上使用 rust 還為時過早。 不過,就目前而言,可以看出回報將是巨大的。
榜樣的力量是無窮無盡的。 根據亞馬遜內部員工在某職場社交平台上的反饋,“大家都在這裡用 Rust”,也有網友指出,Rust 編譯器團隊的負責人 Jon Gjergeset 也在亞馬遜工作。
該員工甚至做出了判斷:Rust遲早會取代C++。
使用鏽蝕的場景有哪些?乙個簡單的答案是所有使用 C++ 的場景。
不過,就亞馬遜此次宣布的部分替代Python而言,還有另一種情況是Python面臨被替換的風險越來越大。
進入“大模型應用開發”的語境後,原有的“python+docker”機器學習開發框架面臨著嚴峻的挑戰。
在構建機器學習應用時,更多的人會想到 python + docker,但當時間到了“大模型時代”時,基於這種組合構建大模型應用似乎不合時宜,而 python 的效能和 docker 的冷啟動問題注定了這樣乙個事實:在處理需要大量計算的大資料集或複雜模型時, 它不太可能成為該領域的主流選擇。
一方面,Python是一種解釋型語言,編譯速度慢,維護問題嚴重。 另一方面,Docker 越來越多地面臨磁碟空間消耗、硬體加速器支援、可移植性和安全依賴性等問題。
基於此,一些業內人士認為,Rust+Wasm 更有可能取代 Python+Docker,成為 LLM 生態中構建基礎設施的主要場景。 這不得不讓人聯想到馬斯克的猜測,即“AGI將建立在Rust之上”。
編輯搜尋圖片 單說 Rust,為什麼 Rust 作為 agi 時代的程式語言受到追捧?
首先,編譯速度極快:Rust 是一種以其極快的效能而聞名的編譯語言。 當與 WebAssembly(一種用於基於堆疊的虛擬機器的二進位指令格式)結合使用時,該組合有望提供無與倫比的執行速度。
其次,記憶體安全:Rust 的乙個突出特點是它強調記憶體安全而不犧牲效能。 這確保了應用程式的快速和安全。
然後,併發性:Rust 的併發性方法是獨一無二的。 它確保在編譯時捕獲資料爭用(併發系統中最常見和最具挑戰性的錯誤之一)。 這意味著開發人員可以編寫併發性,而不必擔心引入難以檢測的執行時錯誤。
此外,乙個富有表現力的字型系統:Rust 有乙個強大而富有表現力的字型系統。 該系統不僅有助於在編譯時捕獲錯誤,而且還允許開發人員以清晰簡潔的方式表達他們的意圖。
同時,現代包管理:Rust 的包管理器 Cargo 簡化了管理依賴項、構建專案甚至發布庫的過程。 該工具因其易用性和效率而受到稱讚。
最後,快速增長的生態系統:Rust 生態系統正在蓬勃發展。 像 “ndarray”、“llm”、“candle” 和 “burn” 這樣的庫展示了大型模型相關社群積極參與擴充套件 Rust 的 LLM 應用程式開發的能力。
那麼為什麼需要 webassembly呢?
與大多數“現代程式語言”不同,Rust 的一大亮點是它可以直接編譯成機器程式碼,而不需要中間的“執行時”。 但是,在很多場景下,比如瀏覽器、雲原生、邊緣裝置等,不允許直接執行機器程式碼。 即使是熟練的 Rust 也缺乏與之匹配的執行時。
在實踐中,人們會發現 WebAssembly 是 Rust 執行時的首選之一。 細心的人可能還會注意到,Rust 編譯器還為 Wasm 平台新增了乙個目標。 兩人是天作之合。
國內發展與國外發展有明顯區別。
國內軟體行業的大型底層專案比國外少很多,發展方向主要在需求變化的上層邏輯。
在過去的三四十年裡,開發人員更多地關注業務應用層,做功能模組的排序和堆疊,而底層的研究更像是一團毛線。
不過,我們也在慢慢看到新的發展主題正在到來:業務端更關心安全性和可靠性,更關心**鏈的依賴性是否可持續,更關心是否會卡住。 例如,去年,Microsoft Azure的首席技術官Mark Russinovich發布了一條在科技界熱搜的推文,他想放棄C++,轉向Rust。
有趣的是,Microsoft 70%的常見漏洞和暴露都與記憶體安全問題有關。 而且,儘管已經為解決這些問題做出了努力,但它們仍在飆公升。
為此,Microsoft安全響應中心啟動了乙個安全系統程式語言計畫,打算將其專案遷移到Rust專案。 就連後來大家都知道的 Windows 核心,也開始用 Rust 重寫。
所以我們看到很多知名公司也在大力投資 Rust,比如 Microsoft 和 Google 等國外公司都成為了 Rust 的白金贊助商之一,AWS 直接招募了 Rust 官方團隊的成員展開人才大戰,Meta(前身為 Facebook)正式宣布 Rust 為其伺服器支援的語言, 等等。
再比如,華為、位元組跳動等國內科技公司在內部培養了 Rust 團隊並推動了 Rust 的落地,PingCap 也採用了 Rust 來實現 TikV,大通科技、海之星圖等眾多明星創業公司直接選擇了 Rust 作為其產品的主要語言。
根據位元組跳動Volo負責人吳迪的講話內容,有增刪。
不過,有一種觀點認為 Rust 不會在國內大規模使用,就算是要用,也應該從各大雲廠商開始,而且是多種底層專案,而雲廠商比較主流的語言是 Golang,因為 Golang 的開發效率相當高, 這非常符合國內雲廠商的業務邏輯。幸運的是,位元組跳動正在從 Golang 遷移到 Rust。
一種語言的興起,往往是解決時代痛點的辦法。 PHP解決了門戶快速構建的問題,Python降低了程式設計門檻,J**A解決了移動時代的應用開發需求,C C++在40多年前就已經為系統底層做出了貢獻。
Rust 也是如此。 與大多數“現代程式語言”不同,Rust 是在強調安全性、速度和可靠性的新環境中選擇的。 從 15 年的穩定算起,Rust 確實來得很短。 它已連續 8 年成為開發人員中最受尊敬的語言!
2023 年 Stackoverflow 開發者調查顯示,85% 使用 Rust 的開發者希望明年再次使用它。
最後,點點花絮,2023 年過去了,在日常生活中應用和開發 Rust 是什麼感覺?
我們選擇了這四種態度,都應該是國內 Rust 開發者現狀的一瞥,可以看出這也是乙個公升級和鬥怪的過程
全職 Rust 開發者:一開始做 Rust 還挺開心的,但不到兩個月,激情就沒了,天天真的哽咽,現在成了天天的“垃圾 Rust”。 」
Rust 專案負責人:建議自己訓練一下,不要聽網上說 Rust 上手有多難。 只要公司裡有乙個人非常了解 Rust,其他人都可以快速上手。 」
Ashorer:如果你不做乙個有三到四個生命週期的複雜泛型,你通常不會有問題。 Rust 上的手寫業務只需要乙個月的時間,寫花裡胡哨的東西需要經驗。 」
使用 Rust 8年以上的人:我帶的新人大多有J**A或者C這樣的語言基礎,乙個月基本就能上手,演算法、非同步、多執行緒都沒問題,就算文科生轉而寫Rust,也不覺得難。 」