博客 / 列表

vivo互聯網技術 - Redis集羣slot遷移改造實踐

作者:來自 vivo 互聯網存儲團隊- Xu Xingbao Redis 集羣經常需要進行在線水平擴縮容,實際操作過程中發現遷移期間服務時延劇烈抖動,業務側感知明顯,為了應對以上問題對原生 Redis 集羣 slot 遷移功能進行優化改造。 一、背景介紹 Redis 集羣服務在互聯網公司被廣泛使用,眾所周知服務集羣化可以突破單節點的能力瓶頸,帶來規模、可用性、擴展性等多方面的收益。在實際使用 Re

redis集羣

vivo互聯網技術 - TimeWheel算法介紹及在應用上的探索

作者:來自 vivo 互聯網服務器團隊- Li Fan 本文從追溯時間輪算法的出現,介紹了時間輪算法未出現前,基於隊列的定時任務實現,以及基於隊列的定時任務實現所存在的缺陷。接着我們介紹了時間輪算法的算法思想及其數據結構,詳細闡述了三種時間輪模型的數據結構和優劣性。 再次,我們介紹時間輪算法在 Dubbo 框架中的應用,並給出了它在 Dubbo 中的主要實現方式。 最後,我們以項目中的某個服務架構

dubbo

vivo互聯網技術 - 揭露 FileSystem 引起的線上 JVM 內存溢出問題

作者:來自 vivo 互聯網大數據團隊-Ye Jidong 本文主要介紹了由FileSystem類引起的一次線上內存泄漏導致內存溢出的問題分析解決全過程。 內存泄漏定義(memory leak):一個不再被程序使用的對象或變量還在內存中佔有存儲空間,JVM不能正常回收改對象或者變量。一次內存泄漏似乎不會有大的影響,但內存泄漏堆積後的後果就是內存溢出。 內存溢出(out of memory):

jvm , 內存泄漏 , oom , 內存溢出

vivo互聯網技術 - Java 8 內存管理原理解析及內存故障排查實踐

作者:vivo 互聯網服務器團隊- Zeng Zhibin 介紹Java8虛擬機的內存區域劃分、內存垃圾回收工作原理解析、虛擬機內存分配配置,介紹各垃圾收集器優缺點及場景應用、實踐內存故障場景排查診斷,方便讀者面臨內存故障時有一個明確的思路和方向。 一、背景 Java是一種流行的編程語言,可以在不同的操作系統上運行。它具有跨平台、面向對象、自動內存管理等特點,Java程序在運行時需要使用內存來存儲

性能優化 , 內存管理 , java8

vivo互聯網技術 - Hudi 在 vivo 湖倉一體的落地實踐

作者:vivo 互聯網大數據團隊 - Xu Yu 在增效降本的大背景下,vivo大數據基礎團隊引入Hudi組件為公司業務部門湖倉加速的場景進行賦能。主要應用在流批同源、實時鏈路優化及寬表拼接等業務場景。 一、Hudi 基礎能力及相關概念介紹 1.1 流批同源能力 與Hive不同,Hudi數據在Spark/Flink寫入後,下游可以繼續使用Spark/Flink引擎以流讀的形式實時讀取數據。同一份H

大數據 , 效率 , 數據湖

vivo互聯網技術 - Dubbo 路由及負載均衡性能優化

作者:vivo 互聯網中間件團隊- Wang Xiaochuang 本文主要介紹在vivo內部針對Dubbo路由模塊及負載均衡的一些優化手段,主要是異步化+緩存,可減少在RPC調用過程中路由及負載均衡的CPU消耗,極大提升調用效率。 一、概要 vivo內部Java技術棧業務使用的是Apache Dubbo框架,基於開源社區2.7.x版本定製化開發。在海量微服務集羣的業務實踐中,我們發現Dubbo有

dubbo , 負載均衡 , 路由

vivo互聯網技術 - JVM 內存大對象監控和優化實踐

作者:vivo 互聯網服務器團隊 - Liu Zhen、Ye Wenhao 服務器內存問題是影響應用程序性能和穩定性的重要因素之一,需要及時排查和優化。本文介紹了某核心服務內存問題排查與解決過程。首先在JVM與大對象優化上進行了有效的實踐,其次在故障轉移與大對象監控上提出了可靠的落地方案。最後,總結了內存優化需要考慮的其他問題。 一、問題描述 音樂業務中,core服務主要提供歌曲、歌手等元數據與用

內存 , 監控 , 故障 , 優化

vivo互聯網技術 - vivo 場景下的 H5無障礙適配實踐

作者:vivo 互聯網前端團隊- Zhang Li、Dai Wenkuan 隨着信息無障礙的建設越來越受重視,開發人員在無障礙適配中也遇到了越來越多的挑戰。本文是筆者在vivo開發H5項目做無障礙適配的實踐總結。本文主要介紹了在前端項目中常用的無障礙手勢和無障礙屬性,並且結合具體的開發案例為開發者真實展示了適配要點,提供組件適配思路。希望本文能為前端開發者帶來更多的參考和幫助。 一、背景 1.1

移動端適配 , 前端 , html5

vivo互聯網技術 - Tars-Java網絡編程源碼分析

作者:vivo 互聯網服務器團隊- Jin Kai 本文從Java NIO網絡編程的基礎知識講到了Tars框架使用NIO進行網絡編程的源碼分析。 一、Tars框架基本介紹 Tars是騰訊開源的支持多語言的高性能RPC框架,起源於騰訊內部2008年至今一直使用的統一應用框架TAF(Total Application Framework),目前支持C++、Java、PHP、Nodejs、Go語言。 該

網絡編程 , tars , nio

vivo互聯網技術 - Lepton 無損壓縮原理及性能分析

作者:vivo 互聯網數據庫團隊- Li Shihai 本文主要介紹無損壓縮圖片的概要流程和原理,以及Lepton無損壓縮在前期調研中發現的問題和解決方案。 一、從一個遊戲開始 1.1 遊戲找茬 請拿出你的秒錶計時,在15秒時間內找出下面圖片的差異。 時間到了,你發現兩張圖片的差異了嗎? 二、智者的成長 在上面的遊戲中,你可能你並沒有發現兩張圖片間有任何差異,而實際上它們一張是3.7MB的jpg

圖片壓縮 , 圖片存儲 , 存儲 , 對象存儲

vivo互聯網技術 - vivo 服務端監控架構設計與實踐

一、業務背景 當今時代處在信息大爆發的時代,信息藉助互聯網的潮流在全球自由的流動,產生了各式各樣的平台系統和軟件系統,越來越多的業務也會導致系統的複雜性。 當核心業務出現了問題影響用户體驗,開發人員沒有及時發現,發現問題時已經為時已晚,又或者當服務器的CPU持續增高,磁盤空間被打滿等,需要運維人員及時發現並處理,這就需要一套有效的監控系統對其進行監控和預警。 如何對這些業務和服務器進行監控和維護是

服務器端 , 架構設計 , 監控工具

vivo互聯網技術 - JavaMoney規範(JSR 354)與對應實現解讀

一、概述 1.1 當前現狀 當前JDK中用來表達貨幣的類為java.util.Currency,這個類僅僅能夠表示按照[ISO-4217]描述的貨幣類型。它沒有與之關聯的數值,也不能描述規範外的一些貨幣。對於貨幣的計算、貨幣兑換、貨幣的格式化沒有提供相關的支持,甚至連能夠代表貨幣金額的標準類型也沒有提供相關説明。JSR-354定義了一套標準的API用來解決相關的這些問題。 1.2 規範目的 JSR

服務器 , 虛擬 , 規範化 , API , JAVA

vivo互聯網技術 - 深入剖析 Spring WebFlux

一、WebFlux 簡介 WebFlux 是 Spring Framework5.0 中引入的一種新的反應式Web框架。通過Reactor項目實現Reactive Streams規範,完全異步和非阻塞框架。本身不會加快程序執行速度,但在高併發情況下藉助異步IO能夠以少量而穩定的線程處理更高的吞吐,規避文件IO/網絡IO阻塞帶來的線程堆積。 1.1 WebFlux 的特性 WebFlux 具有以下特

spring , flux , spingmvc , JAVA

vivo互聯網技術 - 計算機字符編碼的前世今生

一、前言 有人丟給你下面這張圖,如果你能清楚地説明它們之間的關係以及用途,那麼你對字符編碼的理解肯定過關了。 不知道看了上面這張圖,是否有混亂的感覺,本文試着給你梳理、講透這些孤立的幾個單詞之間聯繫...... 二、關於字符編碼,你所需要知道的 2.1 ASCII(寡頭壟斷時期) 計算機內部,所有信息最終都是一個二進制值。每一個二進制位(bit)有0和1兩種狀態,8個二進制位稱之為1個字節。把鍵

ascii , utf-8 , 字符編碼 , unicode , 字符集

vivo互聯網技術 - 如何編寫高質量的 JS 函數(4) --函數式編程[實戰篇]

本文首發於 vivo互聯網技術 微信公眾號 鏈接:https://mp.weixin.qq.com/s/ZoXYbjuezOWgNyJKmSQmTw 作者:楊昆 【編寫高質量函數系列】,往期精彩內容: 《如何編寫高質量的 JS 函數(1) -- 敲山震虎篇》介紹了函數的執行機制,此篇將會從函數的命名、註釋和魯棒性方面,闡述如何通過 JavaScript 編寫高質量的函數

函數式編程 , currying , Javascript