缓存监控治理在游戏业务的实践和探索

3 月 20 日
阅读 13 分钟
257
作者:来自 vivo 互联网服务器团队- Wang Zhi通过对 Redis 和 Caffeine 的缓存监控快速发现和定位问题降低故障的影响面。一、缓存监控的背景游戏业务中存在大量的高频请求尤其是对热门游戏而言,而应对高并发场景缓存是一个常见且有效的手段。游戏业务中大量的采用远程缓存(Redis)和本地缓存(Caffeine)组合方式来应...

基于three.js的虚拟人阴影渲染优化方案

3 月 13 日
阅读 5 分钟
365
在3D网页应用中,高质量的阴影渲染对于营造场景的真实感至关重要。作为广泛采用的 WebGL 框架之一,three.js 为开发者提供了多种阴影渲染选项,使得创建生动逼真的光影效果成为可能。然而,实现这些视觉上的增强往往伴随着性能开销,尤其在处理复杂场景或运行于低端设备时更为明显。因此,在确保画面质量的同时优化阴影...

vivo 大规模容器集群运维平台实践

3 月 6 日
阅读 8 分钟
373
容器平台已经成为支持应用运维和部署的重要基础设施,当前 vivo 内部容器平台共有20+生产集群,管理数万物理机节点,运维管理难度不断增大。为提升运维效率和稳定性,容器团队开发了北斗运维管理平台用于解决大规模集群运维问题。北斗容器运维管理平台包含资源管理,集群扩缩容,巡检,事件中心,监控中心等功能。通过这...

百万级群聊的设计实践

2 月 27 日
阅读 8 分钟
818
本文介绍了服务端在搭建 Web 版的百万人级别的群聊系统时,遇到的技术挑战和解决思路,内容包括:通信方案选型、消息存储、消息有序性、消息可靠性、未读数统计。

vivo HTTPDNS 端到端体验优化实践

2 月 20 日
阅读 9 分钟
503
在信息时代,用户的手机应用访问量日益增多,DNS 解析作为连接互联网的关键环节,也被提出了更高要求。这一背景下,HTTPDNS 域名解析服务凭借防劫持、精准调度、实时解析生效等特性,逐渐成为行业主流解决方案。我们构建了 vivo HTTPDNS 端到端的一体化解决方案,通过对 HTTPDNS SDK、HTTPDNS 服务端、统一调度网关和全...

vivo 互联网技术 2024年度盘点

2 月 18 日
阅读 3 分钟
470
欢迎来到一年一度的盘点时刻。在刚刚过去的2024年,vivo互联网技术:累计发布44篇原创技术文章,并在公众号及各大技术社区与技术同行分享和交流;累计参与了19场技术演讲,涉及云原生、前后端技术、研发效能、平台工程、AI、大数据、安全、存储与数据库等技术领域;积极参与开源生态贡献,加入Linux/CNCF/TODO Group/CCF...

NLLB 与 ChatGPT 双向优化:探索翻译模型与语言模型在小语种应用的融合策略

2 月 14 日
阅读 15 分钟
610
本文探讨了 NLLB 翻译模型与 ChatGPT 在小语种应用中的双向优化策略。首先介绍了 NLLB-200 的背景、数据、分词器和模型,以及其与 LLM(Large Language Model)的异同和协同关系。接着列举了实战与应用的案例,包括使用 ChatGPT 生成的样本微调 NLLB-200 和使用 NLLB-200 的翻译结果作为 LLM 的 prompt 等。通过本文的研...

前端 TypeError 错误永久消失术

2 月 13 日
阅读 9 分钟
527
在 JS 中当获取引用对象为空值的属性时,程序会立即终止运行并报错:TypeError: Cannot read properties of ...

Redis 持久化原理分析和使用建议

2 月 11 日
阅读 8 分钟
1.4k
Redis 为了保证性能,会将所有数据存放在内存中,这极大的提高了 Redis 的响应速度,但是这也引入了一个十分严重的问题:一旦服务器宕机,内存中的数据将全部丢失。这对于一款数据库产品来说是不能接受的。要避免数据丢失,最好将内存数据持久化到磁盘等永久存储介质上。服务重启时,先加载磁盘文件内的数据到内存,完成...

主打一个“小巧灵动”:Vite + Svelte

2024-12-26
阅读 8 分钟
589
在研发小型项目时,传统的 Vue、React 显得太“笨重”。本文主要针对开发小型项目的场景,谈谈 Vite+Svelte 是如何让项目变得“小巧灵动”,并横向对比 Svelte 和 Vue 的性能表现,对二者的加载流程做详细分析。

Kafka Streams 在监控场景的应用与实践

2024-12-19
阅读 12 分钟
624
在当今大数据时代,实时数据处理变得越来越重要,而监控数据的实时性和可靠性是监控能力建设最重要的一环。随着监控业务需求的变化和技术的发展,需要能够实时处理和分析庞大的数据流。作为一种流式处理平台,Kafka Streams 为处理实时数据提供了强大的支持。本文将重点介绍如何利用 Kafka Streams 进行实时数据处理,包...

RocksDB 内存超限问题剖析

2024-12-12
阅读 7 分钟
514
在使用 RocksDB 存储引擎的过程中,有部分开发者遇到了内存使用超出预期的情况。本文针对这一问题展开了深入分析,从内存使用原理、RocksDB 内存管理机制、常见内存使用问题等方面进行了详细探讨,并提出了相应的解决方案和优化建议,希望能够帮助开发者更好地理解和优化 RocksDB 的内存使用情况,提升系统性能和稳定性。

OceanBase 的探索与实践

2024-12-05
阅读 7 分钟
593
本文总结了目前我们遇到的痛点问题并通过 OceanBase 的技术方案解决了这些痛点问题,完整的描述了 OceanBase 的实施落地,通过迁移到 OceanBase 实践案例中遇到的问题与解决方案让大家能更好的了解 OceanBase 功能与特性,最后总结了 OceanBase 优缺点与展望。

分布式锁的实现原理

2024-11-28
阅读 17 分钟
616
分布式锁,顾名思义,就是在分布式环境下使用的锁。众所周知,在并发编程中,我们经常需要借助并发控制工具,如 mutex、synchronized 等,来保障线程安全。但是,这种线程安全仅作用在同一内存环境中。在实际业务中,为了保障服务的可靠性,我们通常会采用多节点进行部署。在这种分布式情况下,各实例间的内存不共享,线...

vivo 企业云盘服务端实现简介

2024-11-25
阅读 6 分钟
383
vivo 企业云盘是一个企业级文件数据管理服务,解决办公数据的存储、共享、审计等文件管理需求;同时便于团队成员快速共享、管理文件,帮助集中管理企业数字资产,提升办公效率,实现内部数据资源的共享以及与外部客户之间的文件安全交换。

vivo 游戏中心包体积优化方案与实践

2024-11-14
阅读 7 分钟
566
安装包大小与下载转化率的关系大致是成反比的,即安装包越大,下载转换率就越差。Google 曾在 2019 的谷歌大会上给出过一个统计结论,包体积体大小每上升 6MB,应用下载转化率就会下降 1%,在不同地区的表现可能会有所差异。

glibc 内存分配与释放机制详解

2024-11-07
阅读 10 分钟
596
本文以一次线上故障为基础介绍了使用 glibc 进行内存管理可能碰到问题,进而对库中内存分配与释放机制进行分析,最后提供了相应问题的解决方案。

浅谈TiKV集群运维问题排查与修复——磁盘空间占用问题

2024-10-31
阅读 7 分钟
9.3k
在业务快速扩张的年代,vivo 内部的很多业务为了可以快速上线,给现网功能提供支撑,在 KV 类型的选型下许多场景都选用了轻量快速的 Redis 集群。但是随着业务的不断发展与稳定,当数据量级达到一定程度的时候,数据性质开始发生变化:有的历史 Redis 集群热度下沉,但是依然基于 Redis 集群作为载体进行 KV 存储。这种...

浅谈活动中台系统技术债管理实践

2024-10-24
阅读 6 分钟
545
在项目研发过程中,由于时间、能力等因素往往会出现设计方案没有做到最好或最优、编码质量不够好等问题,技术债的出现是不可避免的,并且随着时间的推移,技术债对系统的影响会越来越大,同时使得对代码和架构设计的更改越来越困难,想要进一步提升效能必须要对技术债进行管理,本文通过在活动中台系统的技术债实践经验...

游戏推荐业务中基于 sentinel 的动态限流实践

2024-10-17
阅读 7 分钟
454
随着互联网的发展及业务的增长,系统的流量和请求量越来越大,针对高并发系统,如果不对请求量进行限制,在流量突增时可能会导致系统崩溃或者服务不可用,影响用户体验。因此,系统需要引入限流来控制请求的流量,保证系统的可用性和稳定性。当前推荐业务使用公司vsentinel 限流工具,主要使用 QPS 限流和热点参数限流。

一次基于AST的大规模代码迁移实践

2024-09-26
阅读 14 分钟
674
在研发项目过程中,我们经常会遇到技术架构迭代更新的需求,通过技术的迭代更新,让项目从新的技术特性中受益,但由于很多新的技术迭代版本并不能完全向下兼容,包含了很多非兼容性的改变(Breaking Changes),因此我们需要设计一款工具,帮助我们完成大规模代码自动迁移问题。本文简单阐述了基于 AST 的代码迁移概念和...

vivo 全链路多版本开发测试环境落地实践

2024-09-19
阅读 7 分钟
497
软件系统中全链路指的是从用户请求发起,到最终返回响应的整个过程中所涉及到的所有环节和组件。在微服务软件架构风格盛行的今天,因为微服务独立部署、松耦合等特性,往往一个业务系统由数目较多的服务组成,较多的服务往往带来一系列操作上的复杂性。

Redis集群slot迁移改造实践

2024-09-12
阅读 6 分钟
478
Redis 集群经常需要进行在线水平扩缩容,实际操作过程中发现迁移期间服务时延剧烈抖动,业务侧感知明显,为了应对以上问题对原生 Redis 集群 slot 迁移功能进行优化改造。

Cookie的secure属性引起循环登录问题分析及解决方案

2024-09-05
阅读 4 分钟
975
单点登录作为公共组件,在各个公司内部被各个系统所广泛使用,但是在使用过程中我们会遇到各种各样的问题,其中循环登录问题就是一个比较经典的问题。本文主要分析单点登录和权限系统设计的基本原理,然后结合实际案例来分析循环登录的原因,并给出具体的解决办法。

TimeWheel算法介绍及在应用上的探索

2024-08-29
阅读 9 分钟
522
本文从追溯时间轮算法的出现,介绍了时间轮算法未出现前,基于队列的定时任务实现,以及基于队列的定时任务实现所存在的缺陷。接着我们介绍了时间轮算法的算法思想及其数据结构,详细阐述了三种时间轮模型的数据结构和优劣性。

MySQL 亿级数据平滑迁移实战

2024-08-22
阅读 9 分钟
1.3k
预约业务是 vivo 游戏中心的重要业务之一。由于历史原因,预约业务数据表与其他业务数据表存储在同一个数据库中。当其他业务出现慢 SQL 等异常情况时,可能会直接影响到预约业务,从而降低系统整体的可靠性和稳定性。为了尽可能提高系统的稳定性和数据隔离性,我们迫切需要将预约相关数据表从原来的数据库中迁移出来,单...

高性能无锁队列 Disruptor 核心原理分析及其在i主题业务中的应用

2024-08-15
阅读 22 分钟
865
本文首先介绍了 Disruptor 高性能内存队列的基本概念、使用 Demo、高性能原理及源码分析,最后通过两个例子介绍了 Disruptor 在i主题业务中的应用。

MySQL 5.7 DDL 与 GH-OST 对比分析

2024-08-08
阅读 5 分钟
496
本文首先介绍MySQL 5.7 DDL以及GH-OST的原理,然后从效率、空间占用、锁阻塞、binlog日志产生量、主备延时等方面,对比GH-OST和MySQL5.7 DDL的差异。

缓存框架 Caffeine 的可视化探索与实践

2024-07-26
阅读 16 分钟
450
Caffeine缓存是一个高性能、可扩展、内存优化的 Java 缓存库,基于 Google 的 Guava Cache演进而来并提供了接近最佳的命中率。

基于 Three.js 的 3D 模型加载优化

2024-07-19
阅读 4 分钟
825
作为一个3D的项目,从用户打开页面到最终模型的渲染需要经过多个流程,加载的时间也会比普通的H5项目要更长一些,从而造成大量的用户流失。为了提升首屏加载的转化率,需要尽可能的降低loading的时间。这里就分享一些我们在模型加载优化方面的心得。