最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【活動回顧】Rust:構(gòu)建新時代基礎設施的首選語言 @Qcon

2023-09-19 18:24 作者:Databend  | 我要投稿


以「啟航 ? AIGC 軟件工程變革」為主題的 QCon 全球軟件開發(fā)大會北京站于 9 月 5 日在北京富力萬麗酒店圓滿落幕!此次大會包含向量數(shù)據(jù)庫、云原生、異構(gòu)計算、面向 AI 的存儲、微服務架構(gòu)治理、FinOps 等近?30 個精彩專題。Databend Labs 作為深耕云原生數(shù)據(jù)庫領域的科技公司受邀參與。

9月3日下午,Databend 研發(fā)工程師 - 邰翀作為「構(gòu)建未來軟件的編程語言」專題的演講嘉賓參與本次分享。

主題: 「Rust:構(gòu)建新時代基礎設施的首選語言」

演講嘉賓: 邰翀

嘉賓介紹: Databend 研發(fā)工程師

本次分享聚焦于數(shù)據(jù)庫和 AI 領域,從跨云數(shù)據(jù)訪問和向量數(shù)據(jù)庫的現(xiàn)實需求談起,闡述為什么 Rust 是適合于新時代基礎設施的編程語言,并分析 Rust 在新時代基礎設施下的新機遇。本次分享主要分為三個部分:

  • Rust 新時代基礎設施的最佳選擇

  • All in Rust 為 Databend 帶來了什么

  • Rust 如何成為構(gòu)建 Vector Embeddings 的關鍵語言

  • Rust 的機遇與挑戰(zhàn)

Rust?新時代基礎設施的最佳選擇

在此前,當我們談論基礎設施時,首先可能會想到服務器、Oracle 等。而近些年來,我們談論基礎設施已經(jīng)離不開云和構(gòu)建在云上的各種服務。

新時代基礎設施是指:可以在云上自由部署、與云完美融合的基礎設施。在這個新時代中,Databend 和一些數(shù)據(jù)庫同行都選擇了 Rust 作為首選語言。我們可以觀察到 amazom、 微軟、Firefox、飛書、TiKV、云數(shù)倉 Databend、OpenDAL 等公司或者項目在使用 Rust?。

Rust 的發(fā)展時間線

  • 2006 年, Graydon Hoare 著手設計和實現(xiàn) Rust 語言,此時,還只是他的個人項目。

  • 2009 年,Mozilla 開始贊助這個項目,并成立團隊支持 Rust 的開發(fā)。

  • 2010 年,Rust 首次公開,并在一年后實現(xiàn)了編譯器自舉,到 2015 年發(fā)布了第一個穩(wěn)定版本。

  • 2021 年,Rust 基金會成立,為 Rust 語言帶來更廣闊的發(fā)展前景。

Rust 與內(nèi)存安全

Rust 的創(chuàng)始人 Graydon Hoare 曾經(jīng)說過:“Rust是一種采用過去的知識解決將來的問題的技術。”

在我的理解中,Rust 的主要目標之一就是解決內(nèi)存安全問題。


下面列出一些常見的內(nèi)存安全問題:

  • Out-Of-Bound 假設有兩個線程,其中一個線程在訪問鏈表,另一個線程在進行刪除,這個時候可能會產(chǎn)生越界問題。

  • Use After Free 指針指向了堆上一塊內(nèi)存,但是這塊內(nèi)存因為擴容或者其他原因?qū)е轮胤峙洌o了惡意代碼修改并且執(zhí)行被釋放內(nèi)存的機會。

通用手法

針對內(nèi)存安全問題,不同的編程語言都會提出自己的一套解決方案,目前通用的方式包括:

  • 垃圾回收(Garbage Collection,GC) :設立專門的垃圾回收機制來檢測內(nèi)存。由于回收機制的時間不固定,這種方式可能會導致內(nèi)存不可控。對于數(shù)據(jù)庫軟件而言,如果在做大量數(shù)據(jù)的聚合相加,可能會導致內(nèi)存飆升,并且很長時間無法釋放,容易誘發(fā) OOM 。

  • 自動引用計數(shù)(Automatic Reference Counting,ARC) :可以自動地跟蹤和管理對象的引用計數(shù),從而避免了手動管理內(nèi)存的繁瑣和容易出錯的問題,算是一種比較好的方式。

  • 手動管理內(nèi)存(Manualy Handle Memory) :開發(fā)者自行管理分配和釋放,對程序開發(fā)功底要求比較高。

Rust 怎么做

上面的三種通用手法是通過管理引用來處理內(nèi)存安全問題的,而 Rust 則選擇通過限制引用行為來解決內(nèi)存安全問題。 更具體地,Rust 引入了所有權(quán)、借用檢查和生命周期這三個重要的概念。

  • 所有權(quán)(Ownership) :每個值只能有一個所有者。

  • 借用檢查(Borrow Check) :幫助管理所有權(quán)的一套規(guī)則,能夠處理內(nèi)存分配和釋放,防止數(shù)據(jù)競爭。

  • 生命周期(Lifetimes) :程序中每個變量都有一個固定的作用域,當超出變量的作用域以后,變量就會被銷毀。變量在作用域中從初始化到銷毀的整個過程稱之為生命周期。

Rust :最受程序員推崇的語音

正因為 Rust 語言表現(xiàn)力、卓越的性能以及自己獨有一套的內(nèi)存管理方式,蟬聯(lián)八屆 Stack Overflow Developer Survey 最受程序員推崇的語言。

All in Rust??為 Databend?帶來了什么

Databend Labs 成立于 2021 年 3 月,是一家開源 Data Cloud 服務商,致力于為大數(shù)據(jù)生態(tài)提供堅實可靠的基礎設施。我們的核心團隊成員來自 ClickHouse 社區(qū)、谷歌 Anthos、阿里云等國內(nèi)外知名互聯(lián)網(wǎng)和云計算公司,團隊在云原生數(shù)據(jù)庫領域有著豐富的工程經(jīng)驗,同時也是數(shù)據(jù)庫開源社區(qū)活躍貢獻者。

我們在用 Rust 做什么?

Databend是一款使用 Rust 研發(fā)、開源、彈性、低成本,基于對象存儲也可以做實時分析的新式數(shù)倉,具有即時擴縮容能力,能在數(shù)分鐘內(nèi)增加數(shù)百倍的算力,為企業(yè)提供了一個用于存儲、管理和分析大量數(shù)據(jù)的集中式平臺,從而助力企業(yè)更準確地洞察業(yè)務、制定戰(zhàn)略。

除了 Databend 之外,我們也使用 Rust 開發(fā)和維護了大量項目:

  • OpenRaft 是在 tokio 之上實現(xiàn)的異步 Raft 框架,在 leadership 上做了大量優(yōu)化,性能非常強勁。

  • BendSQL 是基于 Databend HTTP API 和 Arrow Flight API 設計和實現(xiàn)的原生客戶端。

  • AskBend 是一款知識庫智能問答系統(tǒng),基于 OpenAI 的 API 并且利用 Databend 內(nèi)置的一系列 SQL 函數(shù)(AI Functions)打造。訪問鏈接:https://ask.databend.rs 即可體驗。

  • OpenDAL 提供一個統(tǒng)一、簡單、高效、可靠、可觀察的數(shù)據(jù)訪問層,讓開發(fā)者可以無縫地使用不同的存儲服務,并享受到最佳的用戶體驗。今年 3 月份的時候已經(jīng)移交到 Apache 軟件基金會孵化器中進行孵化。

Rust 給我們帶來了什么?

數(shù)據(jù)庫本身就是計算機科學皇冠上的一顆明珠,是一個龐大而又復雜的系統(tǒng)。而在 Databend 的設計和實現(xiàn)中,我們還從目前市場上最優(yōu)秀的數(shù)倉中借鑒了一些經(jīng)驗。例如,我們參考了 Clickhouse 的向量化設計,以提高單機的性能。同時,我們也借鑒了 Snowflake 的集群優(yōu)點,以增強分布式計算能力。

選擇 Rust 作為這樣一個復雜系統(tǒng)開發(fā)的首選語言,我們收獲了這些:

  • 高效 的研發(fā) 雖然 Databend 從第一版發(fā)布至今只有 2 年多,但從開源到文章撰寫時為止,已經(jīng)累計有 8000 多個 PR 。

  • 優(yōu)越 性能: Databend 在 Clickbench 基準測試中,數(shù)據(jù)導入性能排名第一,并且在 c6a.4xlarge 機型性能登頂,除了優(yōu)秀的設計和實現(xiàn)之外,Rust 功不可沒。

  • 活躍的 社區(qū): 得益于 Rust 語言的流行和社區(qū)的持續(xù)關注,到文章撰寫時為止已有超過 200 位貢獻者,收獲 6.5 k star ,是 Rust 社區(qū)中的明星項目之一。

Rust?如何成為構(gòu)建 Vector?Embeddings 的關鍵語言

同樣是數(shù)據(jù)庫領域,現(xiàn)在讓我們將目光轉(zhuǎn)向今年在 AI 上大放異彩的向量數(shù)據(jù)庫。

向量嵌入(Vector Embeddings)可以將數(shù)據(jù)轉(zhuǎn)化為一個包含其實際含義的向量空間。而向量數(shù)據(jù)庫則致力于挖掘存儲和處理向量數(shù)據(jù)的能力,并提供高效的向量檢索功能。

為什么需要向量數(shù)據(jù)庫

對于 GPT 這樣的大模型而言,Tokens 大小限制了應用的進一步開發(fā),而引入向量數(shù)據(jù)庫之后,就可以利用向量檢索和向量索引能力,相似度更近的數(shù)據(jù)緊湊存放。這樣可以帶來兩個方面的好處:

  • 降低 GPT 的使用成本。

  • 維護長期記憶,幫助 AI 理解和執(zhí)行復雜任務。

Rust 如何進入向量數(shù)據(jù)庫

讓我們一起來看一下 Rust 是怎么進入到向量數(shù)據(jù)庫領域的:

  • 研發(fā)新的向量數(shù)據(jù)庫: 獲得知名投資機構(gòu) YC 的青睞的 LanceDB ?使用 Rust 設計了針對向量數(shù)據(jù)庫的存儲格式。

  • 重寫現(xiàn)有向量數(shù)據(jù)庫: Pinecone 將 C++ 和 Python 代碼庫使用 Rust 完全重寫。在今年 5 月份獲得 a16z 一億美元 B 輪投資。

  • 拓展舊有向量數(shù)據(jù)庫: Milvus 則計劃引入 OpenDAL(Rust 開發(fā)的存儲訪問層)的 C++ binding,以支持跨多云數(shù)據(jù)存儲能力。

  • 拓展現(xiàn)有其他數(shù)據(jù)庫: Databend 支持向量類型的存取與基本相似度查詢功能,并且提供 AI Functions ,能夠與 OpenAI API 進行交互。

  • 拓展舊有其他數(shù)據(jù)庫: AI 初創(chuàng)公司 tensorchord 使用 Rust 開發(fā) PostgreSQL 的向量處理拓展 pgvecto.rs 。

Rust 的機遇與挑戰(zhàn)

回顧 Databend Labs 使用 Rust 的研發(fā)歷程,并且結(jié)合業(yè)界其他公司的經(jīng)驗,我們認為,Rust 能夠成為構(gòu)建新時代基礎設施的首選語言的主要因素有以下幾點:

  • 內(nèi)存安全

  • 性能保障

  • 敏捷開發(fā)

機遇

Rust 在新時代中的機遇,其實可以和前面 Rust 如何進入向量數(shù)據(jù)庫結(jié)合起來看,這里同樣舉幾個典型的項目作為例子。

  • 新項目服務舊場景:

    • Polars 是 Pandas 的有力競爭者,團隊宣布種子輪收獲 400 萬美元融資,用于打造 OLAP 計算平臺。

    • HuggingFace 開源新的深度學習框架 Candle ,使用 Rust 編寫。

  • 新項目服務新場景

    • llmchain-rs 針對大模型工具鏈提供一站式解決方案。

    • mosec 針對大模型部署和服務開發(fā)提供高性能解決方案。

挑戰(zhàn)

  • 程序的可靠性仍然需要開發(fā)者自己去管理,并不能因為使用 Rust 就掉以輕心。一個有意思的段子是 “聲稱內(nèi)存安全的項目中,往往充斥著大量的 unsafe 代碼”。

  • 盡管生態(tài)已經(jīng)日趨完善,但在實際開發(fā)過程中,仍然少不了造輪子。而對于非系統(tǒng)編程,或者原型快速開發(fā)階段,使用 Rust 在開發(fā)工具和生態(tài)對接上相比 Java 、Python 等語言還存在一些問題。

  • 由于 Rust 本身的復雜性,新手仍然需要邁過門檻,而且 Rust 語言進入到項目以后在編譯時間、CI 流水線等方面都需要進行不同程度的調(diào)試與改造。


【活動回顧】Rust:構(gòu)建新時代基礎設施的首選語言 @Qcon的評論 (共 條)

分享到微博請遵守國家法律
同德县| 德钦县| 兴和县| 金寨县| 修武县| 交口县| 沈阳市| 洪洞县| 女性| 嘉峪关市| 裕民县| 巫山县| 招远市| 黑山县| 买车| 云龙县| 平度市| 无为县| 凌源市| 旅游| 临安市| 屏东市| 张家界市| 法库县| 临颍县| 巍山| 大方县| 绥棱县| 彝良县| 开化县| 贡觉县| 凤城市| 磐石市| 遵义市| 新巴尔虎左旗| 彩票| 栾川县| 安多县| 五台县| 郓城县| 拉孜县|