Yandex 發布了 Userver 的源代碼,這是一個用 C++ 創建應用程序的框架

Yandex 已發布源代碼 框架的 用戶視圖,它允許您創建在異步模式下工作的高負載 C++ 應用程序。 框架 已在 Yandex 級別上傳測試 並用於 Yandex Go、Lavka、Delivery、Market 和金融科技項目等服務。

用戶視圖 它最適合開發具有微服務架構的應用程序. 最初,標記或為 Yandex Taxi 開發,在他的幫助下,團隊從單一應用程序轉變為允許您開發單獨的獨立組件(微服務)並在不同應用程序中使用它們的架構。

今天,我們宣布發布用於構建高負載應用程序的開源用戶框架。 對我們來說,這是分享我們積累的微服務開發經驗的重要方式。 這是 GitHub 存儲庫的鏈接,其中包含源代碼、文檔、示例、用於創建您自己的服務的模板(配置了 CI、構建和測試環境)以及動態配置服務。 所有這些都是在 Apache 2.0 許可下發布的。

微服務是自治的, 因此基於這種架構的應用程序很容易更新和添加新功能。 因此,用於為出租車訂單尋找司機的微服務可用於類似的任務,例如,尋找快遞員來完成 Yandex Delivery 訂單。 計算司機或快遞員的到達時間以及許多其他任務也可以做到這一點。

該框架最初的創建強調可靠性和便利性, 它內部提供了開發、診斷、監控、調試和實驗所需的一切。 例如,userver 建議如何在構建階段修復錯誤,知道如何使用不同的數據庫,動態更改參數等。

關於組成,提到了 包括用於與 DBMS 進行異步工作的驅動程序 (MongoDB、PostgreSQL、Redis、ClickHouse、MySQL)、為各種協議(HTTP、HTTPS、GRPC、TCP、UDP、TLS)異步工作的客戶端和服務器、管理同步和訪問系統功能的低級原語以及用於處理緩存、任務、分佈式鎖、跟踪、度量、統計和 JSON/YAML/BSON 格式的數據的高級組件,此外它還支持動態更改服務配置,而無需停止它。

至於缺點 在單體架構中,提到了以下內容:

  • 將所有代碼整合到一個整體中. 對於大型代碼庫,構建和測試可能需要數小時,而部署可能需要一整天。
  • 代碼不同部分的緊密交互. 您必須在代碼審查上花費大量精力,以便單體應用程序不同部分的接口不會變得一團糟。
  • 易碎性. 一個模塊的更改可能會破壞另一個模塊。
  • 職責範圍模糊。 在開發過程中,很多部分的代碼都泛化了,開始被不同的團隊使用,這很好。 但結果是,尚不清楚誰負責生成的模塊:第一作者; 編輯最多的人; 或者那些在代碼中最積極地使用模塊的人。

此前,Yandex 以開放項目的形式轉讓其其他關鍵技術,例如每秒可處理數百萬請求的 YDB 分佈式數據庫管理系統,以及 Yandex 在 Search 等中使用的 CatBoost 機器學習庫。服務。

終於 對於那些有興趣了解更多信息的人請注意,Userver 目前支持 Ubuntu、Debian、Fedora、Arch、Gentoo、macOS 系統、x86、x86_64、AArch64、Arm 架構、GCC 8+ 和 Clang 9+ 編譯器、C++17 標準、C++20、C ++23。

Userver 代碼是用 C++ 編寫的,並且 它是開放的 在 Apache 2.0 許可下,可以從 以下鏈接。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。