博客 / 列表

vivo互聯網技術 - Full GC 頻率優化實戰

作者:vivo 互聯網服務器團隊- Li Gang 本文介紹了遊戲業務使用MAT和GC日誌等工具對 Full GC頻率進行優化的過程。 一、背景 遊戲業務面對用户端的某個工程,每天Full GC頻率達到120次,業務高峯期每7分鐘就會有一次Full GC。為了避免情況持續變差,最大程度減少對系統響應時間的負面影響,需要對該工程的Full GC頻率進行優化。 該項目JDK版本為1.8,老年代使用

垃圾回收 , JAVA , 優化 , 後端

vivo互聯網技術 - 純前端實現圖片偽3D視差效果

作者:vivo 互聯網前端團隊- Su Ning 本文通過depth-anything獲取圖片的深度圖,同時基於pixi.js,通過着色器編程,實現了通過深度圖驅動的偽3D效果。該方案支持鼠標/手勢與手機陀螺儀雙模式交互,在保證性能的同時,為不同終端用户提供沉浸式的視覺體驗。 本文提供配套演示代碼,可下載體驗: Github | vivo-parallax 一、引言 在當今的網頁設計與交互

pixi.js , webgl , 前端

vivo互聯網技術 - 號碼生成系統的創新實踐:遊戲週週樂幸運碼設計

作者: vivo 互聯網服務器團隊- Zhang Jing 本文以遊戲週週樂的幸運碼為切入點,針對其生成過程中涉及的隨機性、唯一性及高併發等特點,設計了一種基於號段+子碼的創新架構。該方案不僅在生成速度上表現突出,還顯著提升了存儲效率,同時降低了擴容成本,為類似的號碼生成系統提供了設計上的新思路和啓發。 文章太長?1分鐘看圖抓住核心觀點👇 一、業務背景 用户可通過完成相關任務獲取週週樂幸運碼,

redis , 高併發 , 架構 , 後端

vivo互聯網技術 - 百萬級羣聊的設計實踐

作者:來自 vivo 互聯網服務器團隊- Cai Linfeng 本文介紹了服務端在搭建 Web 版的百萬人級別的羣聊系統時,遇到的技術挑戰和解決思路,內容包括:通信方案選型、消息存儲、消息有序性、消息可靠性、未讀數統計。 一、引言 現在IM羣聊產品多種多樣,有國民級的微信、QQ,企業級的釘釘、飛書,還有許多公司內部的IM工具,這些都是以客户端為主要載體,而且羣聊人數通常都是有限制,微信正常羣人數

im , websocket , MySQL , nosql , JAVA

vivo互聯網技術 - Android 架構模式如何選擇

作者:vivo 互聯網客户端團隊-Xu Jie Android架構模式飛速演進,目前已經有MVC、MVP、MVVM、MVI。到底哪一個才是自己業務場景最需要的,不深入理解的話是無法進行選擇的。這篇文章就針對這些架構模式逐一解讀。重點會介紹Compose為什麼要結合MVI進行使用。希望知其然,然後找到適合自己業務的架構模式 一、前言 不得不感嘆,近些年android的架構演進速度真的是飛快,拿筆者工

解耦 , mvp , mvvm , mvc

vivo互聯網技術 - vivo 低代碼平台【后羿】的探索與實踐

作者:vivo 互聯網前端團隊- Wang Ning 本文根據王寧老師在“2022 vivo開發者大會"現場演講內容整理而成。公眾號回覆【2022 VDC】獲取互聯網技術分會場議題相關資料。 本文主要從前後端分離的低代碼方案、自研高性能渲染引擎、高效的可視化配置方案、千億級內容投放、低代碼如何與傳統開發共存等五個維度vivo在低代碼平台方面的實踐經驗,其中也會涉及到動態交互如何運用低代碼來

渲染 , 低代碼 , 前後端分離

vivo互聯網技術 - Sharding-JDBC源碼解析與vivo的定製開發

作者:vivo IT 平台團隊 - Xiong Huanxin Sharding-JDBC是在JDBC層提供服務的數據庫中間件,在分庫分表場景具有廣泛應用。本文對Sharding-JDBC的解析、路由、改寫、執行、歸併五大核心引擎進行了源碼解析,並結合業務實踐經驗,總結了使用Sharding-JDBC的一些痛點問題並分享了對應的定製開發與改造方案。 本文源碼基於Sharding-JDBC 4.1.

sharding-jdbc , 源碼分析

vivo互聯網技術 - 分佈式任務調度內的 MySQL 分頁查詢優化

作者:vivo 互聯網數據庫團隊-Qiu Xinbo 本文主要通過圖示介紹了用主鍵進行分片查詢的過程,介紹了主鍵分頁查詢存在SQL性能問題,如何去創建高效的索引去優化主鍵分頁查詢的SQL性能問題 對於數據分佈不均如何發現,提供了一些SQL查詢案例來進行參考,對MySQL Index Condition Pushdown優化算法做了一些簡單介紹。 一、背景介紹 最近在線上環境發現了一條執行較慢的分頁

分佈式任務 , mysql優化 , 主鍵

vivo互聯網技術 - 慢SQL優化實戰:從一例線上慢SQL探究執行引擎工作過程

作者: vivo 互聯網服務器團隊- Li Xin 本文通過一個線上慢SQL案例,介紹了Join的兩種算法和Order by的工作原理,並通過Explain和Optimizer_trace工具完整推演了慢SQL的執行過程。基於對原理和執行過程的分析,本文給出一種“引導執行引擎選擇效率更高的算法”的方案,從而使查詢性能得到大幅提升。 1、線上慢 SQL 背景 慢 SQL 會影響用户使用體驗,

索引 , 算法 , join , 數據庫 , mysql優化

vivo互聯網技術 - vivo HTTPDNS 端到端體驗優化實踐

作者:來自 vivo 互聯網運維團隊- Zhang Qianqian 在信息時代,用户的手機應用訪問量日益增多,DNS 解析作為連接互聯網的關鍵環節,也被提出了更高要求。這一背景下,HTTPDNS 域名解析服務憑藉防劫持、精準調度、實時解析生效等特性,逐漸成為行業主流解決方案。我們構建了 vivo HTTPDNS 端到端的一體化解決方案,通過對 HTTPDNS SDK、HTTPDNS 服務端、統一

移動端 , dns , 運維 , 網絡

vivo互聯網技術 - 前端 TypeError 錯誤永久消失術

作者:來自 vivo 互聯網大前端團隊- Sun Maobin 通過開發 Babel 插件,打包時自動為代碼添加 可選鏈運算符(?.),從而有效避免 TypeError 的發生。 一、背景介紹 在 JS 中當獲取引用對象為空值的屬性時,程序會立即終止運行並報錯:TypeError: Cannot read properties of ... 在ECMAScript 2020新增的可選鏈運算符(?.

typeerror , babel , 前端

vivo互聯網技術 - 從頻繁告警到平穩發佈:服務冷啓動 CPU 風暴優化實踐

作者:vivo 互聯網服務器團隊- Xie Xiaopeng 本文針對服務啓動後幾分鐘內 CPU 持續處於高峯狀態的問題,提出了自己的分析思路與解決方案。最終線上效果比較顯著,成功解決了每次發版過程中頻繁告警、業務受損以及用户體驗不佳的問題,為服務的高可用性增添了一道重要保障。本文的重點在於問題的發現、分析及解決思路。對於 CPU 相關的問題,火焰圖和 Arthas 是非常有效的工具,建議大

性能優化 , 服務器 , arthas , cpu過高 , 後端

vivo互聯網技術 - 微信小程序端智能項目工程化實踐

作者: vivo 互聯網大前端團隊- You Chen 本文介紹可以在微信小程序上應用的端智能技術方案,聚焦TensorFlow.js推理和微信原生推理,詳細講解這兩種方案在項目中的應用過程,為小程序開發者提供可複用的端智能技術選型策略與工程化解決方案。 1分鐘看圖掌握核心觀點👇 本文提供配套演示代碼,可下載體驗: Github |weixin-mini-ai 一、背景 隨着AI浪潮的

微信小程序 , 人工智能 , 前端

vivo互聯網技術 - Redis key 消失之謎

作者:vivo 互聯網存儲團隊 - Lin Haiwen、Xu Xingbao 本文從一次生產環境業務服務報錯,逐步對問題進行定位,深入分析之後發現導致問題的原因,給出相應的優化方法,提升業務可用性。 1分鐘看圖掌握核心觀點👇 一、問題描述 1.1 報錯信息 應用服務報錯,通過監控日誌發現凌晨2點的時候,應用報錯獲取不到Redis key。 1.2 告警與監控信息 首先想到是否由於內存

redis , 數據庫 , 抓包解密

vivo互聯網技術 - Cookie的secure屬性引起循環登錄問題分析及解決方案

作者:來自 vivo 互聯網服務器團隊- Wang Fei 單點登錄作為公共組件,在各個公司內部被各個系統所廣泛使用,但是在使用過程中我們會遇到各種各樣的問題,其中循環登錄問題就是一個比較經典的問題。本文主要分析單點登錄和權限系統設計的基本原理,然後結合實際案例來分析循環登錄的原因,並給出具體的解決辦法。 一、單點登錄簡單介紹 1.1 基本概念 一個公司內部可能存在多個系統,如果每一個人在使用不同

單點登錄 , HTTPS , cookie

vivo互聯網技術 - vivo 前端三劍客發展歷程及原理揭秘

作者: vivo 互聯網前端團隊- Han Xuejian、Zhang Hao 異地協作模式,給開發和測試間的問題溝通及定位帶來了諸多挑戰。本文從前端開發視角出發, 闡述在這過程中遇到的痛點,探索解決的思路,並在過程中成功孵化出技術工具“前端三劍客”,文章深入解析了“前端三劍客”技術的實現原理及應用場景。 1分鐘看圖掌握核心觀點👇 一、背景 隨着公司業務的不斷髮展,異地協作成為一種常態

工具 , 遠程調試 , 錄製屏幕 , 抓包解密 , 前端

vivo互聯網技術 - vivo Pulsar萬億級消息處理實踐(1)-數據發送原理解析和性能調優

作者:vivo 互聯網大數據團隊- Quan Limin 本文是vivo互聯網大數據團隊《vivo Pulsar萬億級消息處理實踐》系列文章第1篇。 文章以Pulsar client模塊中的Producer為解析對象,通過對Producer數據發送原理進行逐層分析,以及分享參數調優實戰案例,幫助讀者理解與使用好Producer,並體會到Producer對消息中間件系統穩定性以及處理性能所起

服務器 , 大數據 , JAVA , 消息隊列 , 後端

vivo互聯網技術 - vivo 互聯網研發效能關鍵技術與實踐

作者: vivo 互聯網研發效能團隊 Yang Peng、Huang Fengjin 本文介紹了vivo互聯網研發效能平台建設與最佳實踐的話題,將分為4個部分與大家分享,分別是研發效能提升的背景與挑戰、關鍵場景技術,以及在項目案例中的實踐與效果,最後也將和大家探討未來在研發效能提升上的一些規劃與思考。 一、互聯網研發挑戰與方案 隨着互聯網業務的快速發展,業務規模和用户體量在不斷擴張,在如

項目開發 , devops , cicd , 測試工具 , 效能工具

vivo互聯網技術 - Spark on K8s 在vivo大數據平台的混部實戰

作者:vivo 互聯網大數據團隊- Qin Yehai 在離線混部可以提高整體的資源利用率,不過離線Spark任務部署到混部容器集羣需要做一定的改造,本文將從在離線混部中的離線任務的角度,講述離線任務是如何進行容器化、平台上的離線任務如何平滑地提交到混部集羣、離線任務在混部集羣中如何調度的完整實現以及過程中的問題解決。 一、在離線業務差異 互聯網數據業務服務一般可以分為在線服務和離線任務兩

spark , 容器 , 大數據

vivo互聯網技術 - 深度剖析 StarRocks 讀取 ORC 加密文件背後的技術

作者:vivo 互聯網大數據團隊 - Zheng Xiaofeng 本文介紹了StarRocks數據庫如何讀取ORC加密文件,包括基礎概念以及具體實現方案。深入探討了利用ORC文件的四層結構和三層索引機制,實現高效查詢加密數據。希望通過本文對ORC加密文件讀取功能的實現細節的剖析,讓讀者更加深刻理解ORC文件,同時瞭解StarRocks支持加解密數據分析的方案。 一、背景 為了提升對敏感數據的

大數據 , 加密解密 , 數據庫

vivo互聯網技術 - vivo 互聯網技術 2024年度盤點

歡迎來到一年一度的盤點時刻。在剛剛過去的2024年,vivo互聯網技術: 累計發佈44篇原創技術文章,並在公眾號及各大技術社區與技術同行分享和交流; 累計參與了19場技術演講,涉及雲原生、前後端技術、研發效能、平台工程、AI、大數據、安全、存儲與數據庫等技術領域; 積極參與開源生態貢獻,加入Linux/CNCF/TODO Group/CCF等組織/基金會; 截至目前有超過7萬技術同行在關

技術 , 互聯網 , 總結

vivo互聯網技術 - RocksDB 內存超限問題剖析

作者:來自 vivo 互聯網服務器團隊- Zeng Luobin 在使用 RocksDB 存儲引擎的過程中,有部分開發者遇到了內存使用超出預期的情況。本文針對這一問題展開了深入分析,從內存使用原理、RocksDB 內存管理機制、常見內存使用問題等方面進行了詳細探討,並提出了相應的解決方案和優化建議,希望能夠幫助開發者更好地理解和優化 RocksDB 的內存使用情況,提升系統性能和穩定性。 一、背景

內存管理 , 內存分配 , RocksDB , glibc

vivo互聯網技術 - 分佈式鎖的實現原理

作者:來自 vivo 互聯網服務器團隊- Xu Yaoming 介紹分佈式鎖的實現原理。 一、分佈式鎖概述 分佈式鎖,顧名思義,就是在分佈式環境下使用的鎖。眾所周知,在併發編程中,我們經常需要藉助併發控制工具,如 mutex、synchronized 等,來保障線程安全。但是,這種線程安全僅作用在同一內存環境中。在實際業務中,為了保障服務的可靠性,我們通常會採用多節點進行部署。在這種分佈式情況下,

redis , 分佈式鎖 , zookeeper

vivo互聯網技術 - glibc 內存分配與釋放機制詳解

作者:來自 vivo 互聯網存儲團隊- Wang Yuzhi 本文以一次線上故障為基礎介紹了使用 glibc 進行內存管理可能碰到問題,進而對庫中內存分配與釋放機制進行分析,最後提供了相應問題的解決方案。 一、引言 內存對象的分配與釋放一直是後端開發人員代碼設計中需要考慮的問題,考慮不周極易造成內存泄漏、內存訪問越界等問題。在發生內存異常後,開發人員往往花費大量時間排查用户管理層代碼,而忽視了C運

內存管理 , 內存泄漏 , glibc , 開源