【K8S】微服務不香了?單體化改造悄然興起!!

微服務一直以來是服務治理的基本盤之一,落地到云原生上,往往是每個 K8s pods 部署一個服務,獨立迭代、獨立運維。

但是在快速部署的時候,有時候,我們可能需要一些宏服務的優勢。有沒有一種方法,能夠 “既要又要” 呢?本文基于 tRPC-Go 服務,提出并最終實踐了一種經驗證可行的方法。

一、微服務的優劣

微服務是云原生的大潮流,它的優勢非常明顯:

  • 微服務大大降低了模塊間的耦合。當某個模塊 / 微服務需要變更時,只需要調整這個微服務即可,其他服務無感知;

  • 微服務化使得模塊的更新能夠平滑過渡,避免了停機更新的問題,也適合大型團隊或多個團隊間合作構建;

  • 微服務模塊的輸入 / 輸出定義很明確,非常適合融合 DDD 理念進行設計;

  • 問題排查時,能夠快速定位出現問題的模塊,對運維也很友好。

然而微服務也存在劣勢:

  • 當系統趨向復雜時,隨著微服務的拆分、功能的繁雜和細化,微服務越來越多,一窺系統全貌的難度越來越大;

  • 模塊間通信通過 RPC 實現,RPC 帶來了時間和網絡流量的開銷;

  • 依賴于完備的服務治理體系,對小團隊而言,部署成本較高;

  • 多租戶隔離部署時,運維難度也成倍增加。

二、遇到的問題

我們是心悅俱樂部首頁 Feeds 流推薦系統的開發團隊。但我們推薦系統也接入了其他業務,比如我們在接入游戲知幾項目的一個功能后,全量發布前的壓測中發現 CPU 開銷大到難以接受。

1.分析

我們的系統是簡單按照 “業務 → 分流 → 重排 → 精排 → 召回” 的推薦系統微服務化部署,沒有做編排化:

圖片

觀察壓測數據,我們會發現,在分流層前后的服務,網絡開銷非常大:

圖片

分流服務是推薦系統的總入口,它沒有很強的業務屬性,而是在整個推薦系統的前面、在業務數據的基礎上,加入 A/B Test 參數,供整個推薦系統使用。所以它對于業務負載基本是透傳的。

很明顯,業務服務發給推薦系統的數據流量非常大,而作為透明傳輸業務數據的分流服務,入參需要反序列化,出參需要重新序列化,這些都是無謂的算力消耗。

三、解決方案

從代碼上看,占流量大頭的數據結構,在整個調用鏈路上都是一致的,我們自然想到&#x

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208372.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208372.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208372.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從互聯網到云計算再到 AI 原生,百度智能云數據庫的演進

1 數據庫行業發展概述 如果說今年科技圈什么最火,我估計大家會毫不猶豫選擇 ChatGPT。ChatGPT 是 2022 年 11 月 30 日由 OpenAI 發布的聊天應用。它創造了有史以來用戶增長最快的紀錄:自 11 月 30 日發布起,5 天就擁有了 100 萬活躍用戶&am…

靜態HTTP和動態HTTP的混合使用:最佳實踐

在當今的互聯網環境中,靜態HTTP和動態HTTP各有其優勢和局限。靜態HTTP具有速度快、安全性高和易于維護的特點,而動態HTTP則能夠實現動態交互和處理大量動態數據。為了充分利用兩者的優勢,越來越多的網站開始采用靜態HTTP和動態HTTP混合使用的…

計算機的存儲規則

計算機存儲 計算機采用二進制來存儲數據和程序 原因主要有: (1) 物理上容易實現 (2) 運算規則非常簡單 (3) 可靠性強 (4) 易于實現邏輯運算和邏輯判斷 計算機中存儲器的分類及特點 根據存儲器在計算機系統中所起的作用 分為內存儲器和外存儲器 (1) 內存用來…

大數據畢業設計之前端02:架構布局和aside的設計

前言 上一篇主要講了我學習前端的一個經歷,以及為什么選擇BuildAdmin作為深入前端學習的原因.同事也大致聊了一下學習前端需要使用哪些技術棧。 本篇文章來拆解一下BuildAdmin的前端代碼結構,和布局實現的細節。 前端代碼結構 必須先了解項目的結構&…

leetcode每日一題37

92.反轉鏈表II 這道題需要1.找到位置left 2.在位置left開始,一前一后兩個指針反轉鏈表,代碼同206.反轉鏈表,直到后一個指針指向right 3.把反轉后的頭節點鏈接到left-1后面,把反轉后的鏈表尾節點指向right1位置的節點 因為可能會反…

數據結構——二叉樹的鏈式結構

個人主頁:日刷百題 系列專欄:〖C語言小游戲〗〖Linux〗〖數據結構〗 〖C語言〗 🌎歡迎各位→點贊👍收藏??留言📝 ? 一、二叉樹的創建 這里我們使用先序遍歷的思想來創建二叉樹,這里的內容對于剛接觸二…

iClient3D 加載天地圖服務

1 對國家天地圖,通過TiandituImageryProvider影像服務提供者加載地圖; var TiandituimageryLayernew Cesium.TiandituImageryProvider({ mapStyle: Cesium.TiandituMapsStyle[value],token: "4a00a1dc5387b8ed8adba3374bd87e5e"})viewer.imag…

nginx 的概念、高并發處理及詳細參數配置

NGINX是一個開源的高性能Web服務器,負載均衡器和反向代理服務器。它特別適用于高并發的Web應用,能夠有效地處理數千并發連接,同時具備低資源消耗和高性能的特點。在這里,我將重點介紹NGINX的高并發處理能力和參數配置。 高并發處…

云原生(Cloud Native)——概念,技術,背景,優缺點,實踐例子

云原生(Cloud Native)是一種構建和運行應用程序的方法,這些應用程序充分利用云計算的優勢。云原生應用程序通常設計為在現代、動態的環境中運行,如公共云、私有云和混合云。這種方法強調微服務架構、容器化、自動化、易于管理和可…

QT 信號與槽 connect 三種寫法

先看下示例: QPushButton *btn new QPushButton;// 方式一:老式寫法connect(btn, SIGNAL(clicked()), this, SLOT(close()));// 方式二:Qt5后新寫法connect(btn, &QPushButton::clicked, this, &MainWindow::close);// 方式三&#…

Word插件-好用的插件-一鍵設置字體--大珩助手

常用字體 整理了論文、公文常用字體 整理了常用的論文字體,可一鍵設置當前節或選擇的文字的字體 字體設置 包含字體選擇、字體顏色 特殊格式 包含首字下沉、段落分欄、統一寬度、雙行合一、上標切換、下標切換、轉為全角、轉為半角、挖詞填空、當前日期、大寫金…

LabVIEW開發遠程結構健康監測系統

LabVIEW開發遠程結構健康監測系統 工程師依賴于振動監測來評估建筑物、橋梁和其他大型結構的完整性。傳統的振動監測工具在數據收集上存在限制,無法長時間收集高保真波形。隨著內存存儲、處理器速度和寬帶無線通信技術的進步,出現了對能夠長時間收集并實…

Navicat 技術指引 | 適用于 GaussDB 分布式的查詢功能

Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式數據庫。GaussDB 分布式模式更適合對系統可用性和數據處理能力要求較高的場景。Navicat 工具不僅提供可視化數據查看和編輯功能,還提供強大的高階功能(如模型、結…

深入了解對象與內置構造函數

1. 深入對象 1.1 創建對象的三種方式 1.2 構造函數 語法約定: 總結 構造函數可以快速創建多個對象大寫字母開頭的函數使用new關鍵字將對象實例化構造函數不需要返回值自動返回新的對象 new實例化的執行過程 創建空對象this指向對象執行代碼,追加新…

使用wire重構商品微服務

一.wire簡介 Wire 是一個輕巧的Golang依賴注入工具。它由Go Cloud團隊開發,通過自動生成代碼的方式在編譯期完成依賴注入。 依賴注入是保持軟件 “低耦合、易維護” 的重要設計準則之一。 此準則被廣泛應用在各種開發平臺之中,有很多與之相關的優秀工…

使用pyftpdlib組件實現FTP文件共享

目錄 一、引言 二、技術背景 三、實現邏輯 1、創建FTP服務器: 2、實現文件共享: 3、設置用戶權限: 4、處理異常: 5、優化與擴展: 四、代碼實現 五、測試與評估 測試用例: 評估方法:…

React/Vue/Svelte 前端項目中開始使用TailwindCSS

背景 TailwindCSS 近年來在前端圈非常流行,它擺脫了原有的CSS限制,以靈活實用為賣點,用戶通過各種class組合即可構建出漂亮的用戶界面。對于初學者而言,可能需要一些上手成本,一旦掌握實用技巧后,Tailwind…

Unity中Batching優化的GPU實例化整理總結

文章目錄 前言一、GPU Instancing的支持1、硬件支持2、Shader支持3、腳本支持 二、我們來順著理一下GPU實例化的使用步驟1、GPU實例化前的C#代碼準備2、在 appdata 和 v2f 中定義GPU實例化ID3、在頂點著色 和 片元著色器 設置GPU Instance ID,使實例化對象頂點位置正…

Docker的資源控制

Docker的資源控制: 對容器使用宿主機的資源進行限制。 CPU 內存 磁盤I/O(讀寫性能) docker使用linux自帶的功能cgroup control groups是linux內核系統提供的一種可以限制,記錄,隔離進程組所使用的物理資源的一種機制。 docker借助這個機制…

go grpc高級用法

文章目錄 錯誤處理常規用法進階用法原理 多路復用元數據負載均衡壓縮數據 錯誤處理 gRPC 一般不在 message 中定義錯誤。畢竟每個 gRPC 服務本身就帶一個 error 的返回值,這是用來傳輸錯誤的專用通道。gRPC 中所有的錯誤返回都應該是 nil 或者 由 status.Status 產…