精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Rust不適合開發Web API

開發 后端
Rust 有大量的 Web 服務框架、數據庫連接器和解析器。但搭建身份驗證服務方面只有非常低層次的組件。

Rust 是一門神奇的編程語言,有非常好的 CLI 工具,比如 ripgrep 和 exa。像 Cloudflare 這樣的公司正在使用并 鼓勵人們寫 Rust 來運行微服務。Rust 編寫的軟件可能比 C++ 或 C 更安全、更小、更簡潔。

如果我正在編寫一個地理編碼器、一個路由引擎、一個實時消息平臺、一個數據庫或一個 CLI 工具,Rust 最合適。

但去年,我試圖用 Rust 寫一個傳統網站的純 API 服務,Rust 就不合適了。

[[379594]]

缺失很多小功能

Rust 有大量的 Web 服務框架、數據庫連接器和解析器。但搭建身份驗證服務方面只有非常低層次的組件。Node.js 有 passport.js,Rails 有 devise,Django 有 開箱即用的身份驗證模型,在 Rust 中,你需要學習如何將共享 Vec 轉換到底層加密庫才能構建這個系統。

譯者注,Vec 是一個動態數組,只會自動增長而不會自動收縮。區別于 Array,Vec 具有動態的添加和刪除元素的能力,并且能夠以 O(1) 的效率進行隨機訪問。Vec 的所有內容項都是生成在堆空間上的,可以輕易的將 Vec 移出一個棧而不用擔心內存拷貝影響執行效率,畢竟只是拷貝棧上的指針。

有些庫試圖解決這個問題,比如 libreauth,但它才剛剛開始開發。還有很多類似的 Web 框架問題。

SDK 呢?在主流編程語言中,你可以通過一個官方庫來接入 Google 云服務、AWS 或 Stripe。這些官方庫大都很棒。例如,aws-sdk-js 和 Stripe 庫的設計和維護得非常好。

Rust 就不這樣,只有少許第三方庫,但以這些服務的開發速度,它們真的能夠提供高質量的體驗嗎?

有人會說好吧,X 編程語言太好了,你可以在周末自己寫一個 SDK!我必須回答,不。

Rust 的生態系統在其它領域非常豐富。用于構建 CLI、管理并發性、使用二進制數據和底層解析器的 crates 令人印象深刻,非常棒。

Rust 編譯器比以前快,但仍然很慢

我一直在看 Nicholas Nethercote 的博客,描述了 Rust 團隊如何優化編譯器,讓它更快!

但與其它編程語言相比,用它構建網站會很慢。它比編譯型編程語言 Go 慢得多,也比解釋型編程語言 JavaScript、Ruby 和 Python 等慢得多。

一旦代碼被編譯,一切就變得非常棒了!但在我的情況下,甚至基本 API 功能都不完整,一個不復雜的系統——居然花了 10 多分鐘來編譯。Google 代碼構建 的硬件配置很差,每次都會超時,我啥都編譯不了。

只要不重建緩存依賴項,緩存就有意義。也許 減少依賴 會加快 Rust 項目編譯。但就像 serde,幾乎所有人都使用的 JSON 和其它序列化 / 反序列化程序占用了大量的編譯時間。我們是否應該用編譯速度更快但缺乏大量文檔和生態系統支持的東西來取代 serde?這種取舍非常糟糕。

Rust 很復雜

Rust 讓你從代碼維度進行思考,這對系統編程來說非常重要。它讓你思考如何共享或復制內存,思考真實但不太可能的小概率事件,并確保妥善處理它們,幫你編寫各種各樣的高效代碼。

這些擔憂都是合理的,但是對于大多數 Web 應用程序來說,它們并不是最重要的關注點,以流行的慣性思考會導致不正確的假設。

就拿 Rust 的安全性來說吧。這是它宣傳語中的重要部分,這是絕對正確的:Rust 的承諾安全和底層兩者兼而有之——它可以在沒有垃圾收集器的情況下工作,同時防止基于內存的漏洞。當你讀到“安全”的時候,想想 Rust 的競爭對手 C 吧。C 語言中的代碼可以引用任意內存,很容易溢出和出錯。Rust 代碼可以和 C 代碼一樣快,但是可以保護內存訪問,而不需要垃圾收集器或某種運行時檢查。

但是 Rust 的內存規則并不比 Node.js 或 Python 更安全,用 Rust 編寫的 Web 應用程序在系統上不會比 Python 或 Ruby 應用程序安全。帶有垃圾收集器的高級編程語言通常為避免這類漏洞利用和錯誤而付出性能損失。不能在 JavaScript 中引用未初始化的內存,因為 JavaScript 中不進行內存間的引用。

旁注:這是在描述 Node.js 和其它系統的設計目標——它們確實偶爾會有 bug。Node.js 的緩存對象,就值得讀一讀。

你要是 問一些人,他們會說如果使用不安全的代碼,Rust 相比帶有內存回收的編程語言是不安全的——包括最流行的 Web 框架 Actix(譯者注,Actix 是 Rust 的 Actor 異步并發框架,基于 Tokio 和 Future,開箱具有異步非阻塞事件驅動并發能力,其實現低層級 Actor 模型來提供無鎖并發模型,而且同時提供同步 Actor,具有快速、可靠,易可擴展 https://actix.rs/),因為 不安全代碼允許原始指針的延遲。

如果你正在寫一個視頻游戲,暫停執行垃圾收集是不好的。如果你在編寫微控制器代碼,任何內存“開銷”或浪費都是非常糟糕的。但是大多數 Web 應用程序可以節省一點內存開銷來換取生產性能。

Rust 的其它屬性面對的爭議幾乎一樣。它的并發特性是太神奇了,如果你在做一些復雜的事情,需要快速響應,這當然很棒。但如果情況不是這樣呢?至少可以說,Rust 的異步生態系統面臨著很大挑戰:各種不相關的領域中有著不同的異步實現,比如 tokio。

相比較之下,Python 的 Tornado 和 Twisted 異步實現的很奇怪,Node.js 異步實現的很好,但語法都很丑陋。

我確信,Rust 的異步將會穩定和統一,未來會更容易操作,但我現在就要用啊。

Rust 生態系統不是以 Web 為中心的

很多人正在學 Rust,用 Rust 編寫 CLI 應用程序或底層代碼,并且玩得非常開心。使用 Rust 編寫普通 Web 應用程序的人明顯少很多。

這是技術選擇中的重要部分:是否有人在使用該工具?他們大致在同一個領域嗎?不幸的是,Rust 生態系統中許多令人難以置信的令人興奮的工作與 Web 應用服務器無關。的確存在一些很有前途的 Web 框架——甚至更高層次的框架,但毫無疑問,它們市場很小。即使是主要的 Web 框架 Actix 也只有幾個頂尖貢獻者。

如果 Rust 以目前的速度增長,那么社區中的 Web 部分將達到一個臨界值,但我認為沒有足夠多的人使用 Rust 作為網站的實用工具。與其它社區相比,有很多公司致力于使用現有的工具來構建 Web 應用程序,這些工具不是最前沿的,但足夠將成熟技術與新技術區分開來。

Juniper 的 N+1 次查詢

這一部分不僅僅是 Rust,它還涉及 GraphQL 生態系統,Rust 參與這個生態系統就是一個例子。

N+1 問題 是每個構建 Web 應用程序的人都應該知道的。要點是:你有一頁照片(一次查詢),你要顯示每張照片的作者,會有多少次查詢:1,合并照片和作者,或者在檢索照片后對每張照片進行查詢以獲取作者?或者兩次,第二次查詢 ids 中的 user.id,一次獲取所有作者,然后重新設置他們的照片屬性。

N+1 查詢通常優先使用數據庫解決:比如將 N+1 查詢改為單個查詢,會帶來明顯的性能優化。我們有很多方法來嘗試和解決這些問題:你可以編寫 SQL,并嘗試使用 CTE 和 JOIN 在單個查詢中完成大量工作,就像我們在 Observable 中所做的那樣,或者使用像 ActiveRecord 這樣的 ORM 層將 N+1 查詢轉換為可預測查詢的快速方法。

Juniper 是一個用于 Rust 應用程序的 GraphQL 服務。GraphQL 基本上都是由前端應用程序定義查詢,而不是后端。給它一系列可以查詢的東西,然后應用程序(React 或其它)將任意查詢發送到后端。

這會讓后端變得復雜。任何 SQL 級別的優化都不可能做到——你的服務器正在編寫動態 SQL,優化只能依賴 GraphQL 服務,但它不會總是有效。例如:Juniper 默認情況下執行的是 N+1 查詢,解決方案 dataloader 還比較粗糙且需要單獨維護。因此,最終您將擁有一個非常快的應用程序層,但它所有的時間都花在了極其低效的數據庫查詢上。

總之,GraphQL 與 NoSQL 數據庫配合使用效果非常好,它可以快速為這些類型的請求提供服務。我確信 Facebook 內部有一些特定的數據庫與 GraphQL 結合在一起使用效果非常棒,但業內其他企業則非常依賴 Postgres 和同類產品。

一些注意事項

首先,本文提到的問題并不針對在通用場景使用 Rust,只針對將 Rust 用于特定目標和生態系統,簡單說就是 Web API。

  • 注意事項 1:一般情況下,你可以用任何編程語言搭建網站,還記得基于 C++ 實現的OkCupid 嗎?(譯者注,OkCupid 是美國一個大型線上交友網站)還有一個非常流行的 星象應用程序,Co-star,它全部是用 Haskell 編寫的。如果你擅長其它編程語言,或者可以招聘到擅長這些編程語言的工程師,你一樣可以取得成功。
  • 注意事項 2:我試圖構建的是重 CRUD(增刪改查) 的 Web 應用程序 API。它可能不算是一個 Web“服務”——主要是快速、無數次地執行同一個操作,而是一個 Web“應用程序”——執行了許多不同的操作,包含了相當多的業務邏輯。如果你要開發的東西跟我在做的不一樣,那我的建議可能就不適合你。如果你需要的是快速執行一兩個操作,比如你正在寫一個支付網關或語音消息應用程序,那 Rust 可能效果還是不錯的。
  • 注意事項 3:這篇文章寫于 2021 年 1 月,如果接下來社區繼續發展,Rust 將得到持續的改進,會變得更好并更易于 Web 應用程序開發。

總而言之,我真的很喜歡使用 Rust,這是一門美麗的編程語言,有很多很酷的想法。希望很快,Rust 會成為能用來構建我想做的東西的最合適的工具。不過,現在我想做的很多東西都要采用不同特性的編程語言才能更好地運行。

 

責任編輯:趙寧寧 來源: 前端之巔
相關推薦

2022-11-07 10:20:20

useEffects

2015-03-12 13:39:48

Hadoop場景大數據

2013-08-16 10:00:45

VMwareOpenStack

2024-10-06 13:00:05

2018-07-29 07:58:34

物聯網IOT物聯網產品

2009-01-15 18:30:11

服務器虛擬化VMware

2011-03-28 13:05:38

MeeGo諾基亞英特爾

2010-07-20 09:56:53

VDI部署

2022-07-12 14:04:19

Kafka

2013-12-09 10:16:03

Android firAndroid開發移動創業

2012-03-13 15:28:47

Kindle Fire傲游

2013-08-13 14:33:17

程序員

2016-11-04 09:41:48

容器Docker

2015-07-23 11:26:35

虛擬化負載類型

2025-10-10 09:07:44

2019-08-26 00:37:19

WiFi 65GWi-Fi

2012-06-25 14:09:58

2009-01-08 17:15:29

服務器虛擬化高性能計算

2024-03-14 08:00:51

獨立開發程序員編程

2013-05-31 11:29:06

點贊
收藏

51CTO技術棧公眾號

成a人片国产精品| 在线中文字幕亚洲| 91成人网在线| 一区二区三区四区在线视频| 精品人妻伦一二三区久久| 精品成人久久| 亚洲人成伊人成综合网久久久| 日韩免费高清在线| 污污的视频在线观看| 久久夜色精品一区| 亚洲自拍欧美色图| 亚洲av无码精品一区二区| 91av精品| 国产亚洲精品日韩| jjzz黄色片| 免费视频观看成人| 精品久久久久久久久久久| 亚洲一区二区三区精品动漫| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 可以免费看不卡的av网站| 欧美另类第一页| 婷婷色一区二区三区| 136福利精品导航| 欧美视频你懂的| 久久久久久久久久网| 欧美96在线| 国产亚洲欧洲一区高清在线观看| 成人av蜜桃| 国产欧美日韩综合精品一区二区三区| 亚洲专区一区| 午夜精品久久久久久久久久久久久| 阿v天堂2014| 日韩欧美四区| 亚洲国产精品中文| 欧美高清精品一区二区| 欧美大片网站| 欧洲人成人精品| 丰满少妇被猛烈进入高清播放| 欧美aaa免费| 亚洲欧美日韩国产综合在线| 色一情一乱一伦一区二区三区| 婷婷在线免费观看| 国产福利电影一区二区三区| 91精品国产综合久久香蕉922| 中文字幕国产在线观看| 亚洲高清av| 久久久亚洲精品视频| 裸体武打性艳史| 99久久www免费| 中文字幕日韩有码| 亚洲最大成人综合网| 久久不卡国产精品一区二区| 亚洲毛片在线免费观看| 亚洲男人在线天堂| 欧美尿孔扩张虐视频| 精品久久久久99| 久久久久99人妻一区二区三区| 国产成人免费av一区二区午夜| 欧美美女视频在线观看| 午夜精品久久久久久久99热影院| 99久久er| 在线成人高清不卡| 91丝袜超薄交口足| 欧美日韩午夜电影网| 欧美videos大乳护士334| 在线观看欧美一区二区| 哺乳一区二区三区中文视频| 亚洲第一中文字幕在线观看| 波多野结衣影院| 男男gay无套免费视频欧美| 日韩精品视频三区| 久久精品—区二区三区舞蹈| 成人av国产| www日韩欧美| 欧美人妻精品一区二区三区| 亚洲国产一区二区三区a毛片| 亚州精品天堂中文字幕| 无码人妻av免费一区二区三区| 日本免费在线视频不卡一不卡二| 国产精品免费看久久久香蕉 | 日韩欧美中字| 久久色免费在线视频| 国产真人真事毛片| 亚洲综合国产| 91精品国产综合久久香蕉| 精品黑人一区二区三区在线观看| 成人国产精品免费观看动漫| 欧美一级二级三级九九九| 在线免费观看黄色| 亚洲精品伦理在线| 美女日批免费视频| 日韩国产91| 欧美精品一区二区三区蜜桃视频| 无码h肉动漫在线观看| 91日韩在线| 久久久亚洲国产| 在线观看国产精品入口男同| 丁香六月综合激情| 少妇特黄a一区二区三区 | 亚洲美女区一区| 欧美视频在线观看网站| 欧美jizz18| 日韩av在线网页| 国产精品免费人成网站酒店| 国产情侣一区| 91在线视频精品| 亚洲欧美日韩免费| 亚洲视频一二三区| 日韩视频在线免费看| 日韩黄色av| 一区二区三区动漫| 日韩精品国产一区二区| 激情五月激情综合网| 鲁丝一区二区三区免费| 一区二区三区伦理| 欧美日本免费一区二区三区| 亚洲国产精品自拍视频| 欧美日韩亚洲一区在线观看| 国产精品毛片a∨一区二区三区|国| 亚洲成人第一区| 国产精品久久久久久久久久久免费看 | 黄色美女网站在线观看| 亚洲一区av在线| 污污视频网站在线| 成人情趣视频网站| 国产成人av网| 天堂а√在线8种子蜜桃视频| 亚洲色图在线视频| 中文字幕亚洲欧洲| 欧美艳星介绍134位艳星| 97视频免费观看| 亚洲精品久久久久久动漫器材一区| 国产精品成人一区二区艾草 | 一区二区三区欧美在线| 台湾佬成人网| 亚洲欧美日韩久久久久久| 日本一区二区免费在线观看| 国产成人av一区二区| 最新欧美日韩亚洲| 欧美激情福利| 日韩在线小视频| 一级黄色a毛片| 国产精品久久久久久久蜜臀| 国产精品免费成人| 国产精品亚洲二区| 国产精品大陆在线观看| 六十路在线观看| 色婷婷综合视频在线观看| www.久久国产| 丝袜美腿亚洲一区| 日韩福利视频| 国产精品99精品一区二区三区∴| 在线看日韩欧美| 中文字幕 欧美激情| 国产精品女主播av| www.国产福利| 99精品网站| 超碰国产精品久久国产精品99| 性爱视频在线播放| 精品国产伦一区二区三区免费| 久久午夜无码鲁丝片午夜精品| 国产精品91一区二区| 国产精品久久国产| 日本中文字幕在线一区| 日韩av免费在线| 午夜视频在线观看网站| 91麻豆精品91久久久久久清纯| 波多野结衣家庭教师| 国产jizzjizz一区二区| 日韩中字在线观看| 久久91成人| 国产在线一区二区三区| 亚洲丝袜精品| 精品一区电影国产| 特级西西444www高清大视频| 亚洲免费观看视频| 奇米777第四色| 日韩高清不卡在线| 日本女人高潮视频| 欧美综合精品| 国产精品一区二区三区免费视频| 26uuu亚洲电影在线观看| 精品福利一二区| 探花视频在线观看| 亚洲欧美另类在线| 精品久久久久久中文字幕人妻最新| 日本不卡视频在线观看| 激情六月天婷婷| 啪啪亚洲精品| 国产精品一区二区三区在线| 亚洲精品粉嫩美女一区| 欧美日韩成人在线观看| 国产免费视频在线| 欧美成人伊人久久综合网| 无码人妻久久一区二区三区不卡| 日韩毛片视频在线看| 无码人妻精品一区二区三区温州| 精品一区二区三区视频在线观看 | 奇米精品一区二区三区在线观看一 | 婷婷国产v国产偷v亚洲高清| 一级免费黄色录像| 99精品国产视频| aaaaaaaa毛片| 日韩综合小视频| 丰满的少妇愉情hd高清果冻传媒 | 日韩视频在线观看免费| 香蕉av在线播放| 日韩欧美在线观看一区二区三区| 午夜精品一区二| 精品国产福利视频| 人妻久久一区二区| 国产精品区一区二区三| 五十路六十路七十路熟婆 | 欧美人成免费网站| 亚洲综合久久网| 午夜精品久久久久久| 老湿机69福利| 国产精品午夜免费| 中国毛片在线观看| 99久久精品一区二区| 午夜影院免费观看视频| 美腿丝袜在线亚洲一区| 国内外免费激情视频| 一区二区福利| 青草青青在线视频| 欧美三级网页| 黄色一级片国产| 亚洲女同一区| 91手机视频在线| 日韩视频在线观看| 亚洲精品成人自拍| 精品国产91| 日韩久久不卡| 国产欧美日韩视频在线| 免费99视频| 免费看日本一区二区| 欧美激情第六页| 私拍精品福利视频在线一区| 久久国产欧美精品| 天天做夜夜做人人爱精品| 九色综合日本| 亚洲a级精品| 久久久久久国产精品一区| 欧美亚视频在线中文字幕免费| 国产激情美女久久久久久吹潮| 日韩在线视频一区二区三区| 超碰97国产在线| 美女一区二区在线观看| 久久久久久久久久久久久9999| 日韩三级毛片| 日韩三级电影免费观看| 久久国产成人精品| 一区二区三区av在线| 亚洲网色网站| a级黄色小视频| 亚洲免费激情| 久久久久久香蕉| 麻豆精品蜜桃视频网站| 女同激情久久av久久| 国产精品一区二区你懂的| 国产一级二级av| av电影在线观看完整版一区二区| 一出一进一爽一粗一大视频| 久久久影视传媒| 摸摸摸bbb毛毛毛片| 国产精品久久久久久福利一牛影视 | 男插女视频网站| youjizz久久| 免费观看a级片| 亚洲欧洲日韩在线| 欧美精品videos极品| 天天综合日日夜夜精品| 成人免费视频国产免费| 欧美精品v国产精品v日韩精品 | 国产成人综合视频| 91精品小视频| 国产蜜臀av在线一区二区三区| 久久久久人妻一区精品色| 一区二区国产视频| 天堂网一区二区| 日韩亚洲欧美中文三级| 亚洲欧美日韩免费| 日韩一区二区久久久| 黑人极品ⅴideos精品欧美棵| 欧美最顶级的aⅴ艳星| 欧美亚洲黄色| 精品久久蜜桃| 日本一区二区在线看| 中文字幕日韩精品无码内射| 老鸭窝91久久精品色噜噜导演| 一区二区免费av| 成人午夜视频福利| 丁香六月激情综合| 婷婷中文字幕综合| 国产精品九九九九| 亚洲乱码av中文一区二区| 在线欧美三级| 国产狼人综合免费视频| 欧美色图婷婷| 97在线免费视频观看| 久久久人人人| 国产精品成人免费一区久久羞羞| 国产欧美精品一区二区色综合 | 亚洲欧美日韩国产| www.日本久久| 国产精品色在线| 久久免费激情视频| 日韩视频在线观看一区二区| 国产午夜视频在线观看| 国模精品视频一区二区| 国产高清亚洲| 亚洲精品一区二区三区四区五区 | 国产精品一区=区| 日韩三级视频| 欧美无砖专区免费| 卡一卡二国产精品 | 牛夜精品久久久久久久99黑人| 欧美日韩亚洲第一| 成人av午夜电影| www.av视频| 51久久夜色精品国产麻豆| wwwxxx在线观看| 国产成人在线一区二区| 农村少妇一区二区三区四区五区 | 久久久久久久久久久久久9999| 国产精品jizz在线观看美国| 国产美女18xxxx免费视频| 国产女同互慰高潮91漫画| 天天综合天天干| 亚洲成avwww人| 污视频网站在线免费| 91九色对白| 在线看片不卡| 一区二区三区四区影院| 亚洲激情综合网| 精品国产av 无码一区二区三区| 色婷婷成人综合| 国产精品久久乐| 亚洲一区精彩视频| 麻豆精品视频在线观看| 日本黄色录像视频| 欧美老肥妇做.爰bbww| av中文字幕一区二区三区| 国产成人精品免费视频| 久久不见久久见免费视频7| 黄色片视频在线播放| 久久久精品国产免大香伊| 一级黄色在线视频| 亚洲午夜色婷婷在线| 外国电影一区二区| 在线观看欧美一区| 国产综合久久久久久鬼色 | b站大片免费直播| 欧美性精品220| 欧美视频观看一区| 日韩精品美女| 欧美精品欧美精品| 久久亚洲综合| 欧洲美熟女乱又伦| 欧美日韩的一区二区| 麻豆av免费在线观看| 亚洲最大成人在线| 一区在线免费| 可以直接看的无码av| 欧美性生交片4| 黄色网址在线免费| 国产成人av一区二区三区| 99精品视频免费观看| 亚洲欧美日韩国产精品| 国产成人精品一区二区三区在线 | 欧美搞黄网站| 无码人妻一区二区三区免费n鬼沢| 亚洲国产日日夜夜| 美女做暖暖视频免费在线观看全部网址91 | 久久精品国产精品亚洲毛片| 久久久久久久久久久久久国产| 丁香一区二区三区| 樱花视频在线免费观看| 久久艹在线视频| 日韩一级电影| 制服丝袜中文字幕第一页| 亚洲国产综合色| 成人资源www网在线最新版| 1卡2卡3卡精品视频| 国产美女一区| 天天鲁一鲁摸一摸爽一爽| 亚洲精品av在线| 97久久中文字幕 | 精品一区二区综合| 成人www视频在线观看| 久久99精品久久久久久欧洲站| 欧美成人一区二区三区片免费 | 久久久久这里只有精品| 久久av中文| 国产高潮失禁喷水爽到抽搐| 欧洲一区二区av| 久久久123| 综合视频免费看| 国产欧美综合在线观看第十页| 黄色成人一级片|