工作流引擎在vivo营销自动化中的应用实践 | 引擎篇03

2022-07-19
阅读 5 分钟
2k
本文是《vivo营销自动化技术解密》的第4篇文章,分析了在营销自动化业务引入工作流技术的背景和工作流引擎的介绍,同时介绍了几种业界流行的开源工作流引擎特点,以及在项目自研开发过程中的设计思路和总结思考。

vivo官网APP全机型UI适配方案

2022-07-18
阅读 13 分钟
2.9k
日益新增的机型,给开发人员带来了很多的适配工作。代码能不能统一、apk能不能统一、物料如何选取、样式怎么展示等等都是困扰开发人员的问题,本方案就是介绍不同机型的共线方案,打消开发人员的疑虑。

RocketMQ之消费者启动与消费流程

2022-07-12
阅读 19 分钟
1.8k
RocketMQ是由阿里巴巴开源的分布式消息中间件,支持顺序消息、定时消息、自定义过滤器、负载均衡、pull/push消息等功能。RocketMQ主要由 Producer、Broker、Consumer 、NameServer四部分组成,其中Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。NameServer充当名字路由服务,整体架构图如下所示:

CSS Houdini:用浏览器引擎实现高级CSS效果

2022-07-11
阅读 13 分钟
2.8k
Houdini被称之为Magic of styling and layout on the web,看起来十分神秘,但实际上,Houdini并非什么神秘组织或者神奇魔法,它是一系列与CSS引擎相关的浏览器API的总称。

Lepton 无损压缩原理及性能分析

2022-07-05
阅读 5 分钟
1.7k
作者:vivo 互联网数据库团队- Li Shihai本文主要介绍无损压缩图片的概要流程和原理,以及Lepton无损压缩在前期调研中发现的问题和解决方案。一、从一个游戏开始1.1 游戏找茬请拿出你的秒表计时,在15秒时间内找出下面图片的差异。时间到了,你发现两张图片的差异了吗?二、智者的成长在上面的游戏中,你可能你并没有发...

从0到1建设智能灰度数据体系:以vivo游戏中心为例

2022-07-04
阅读 7 分钟
1.8k
本文介绍了vivo游戏中心在灰度数据分析体系上的实践经验,从“实验思想-数学方法-数据模型-产品方案”四个层面提供了一套较为完整的智能灰度数据解决方案,以保障版本评估的科学性、项目进度以及灰度验证环节的快速闭环。该方案的亮点在于,指标异动根因分析方法的引入和全流程自动化产品方案的设计。

一种跳板机的实现思路

2022-06-28
阅读 7 分钟
2k
vivo 互联网运维团队- Yang Lei 本文介绍了一种跳板机实现思路,阐述了基本原理,并讲解了特点和相对优势。一、 跳板机思路简介本文所描述的跳板机(下文称为“jmp”)支持:Linux服务器Windows服务器其他终端(MySQL终端、Redis终端、网络设备终端 等等)有别于市面上常见的jumpserver方案,使用本文所搭建的跳板机将不会...

Elasticsearch 在地理信息空间索引的探索和演进

2022-06-27
阅读 17 分钟
1.7k
本文梳理了Elasticsearch对于数值索引实现方案的升级和优化思考,从2015年至今数值索引的方案经历了多个版本的迭代,实现思路从最初的字符串模拟到KD-Tree,技术越来越复杂,能力越来越强大,应用场景也越来越丰富。从地理位置信息建模到多维坐标,数据检索到数据分析洞察都可以看到Elasticsearch的身影。

剖析 SPI 在 Spring 中的应用

2022-06-21
阅读 29 分钟
1.7k
SPI(Service Provider Interface),是Java内置的一种服务提供发现机制,可以用来提高框架的扩展性,主要用于框架的开发中,比如Dubbo,不同框架中实现略有差异,但核心机制相同,而Java的SPI机制可以为接口寻找服务实现。SPI机制将服务的具体实现转移到了程序外,为框架的扩展和解耦提供了极大的便利。

vivo 容器集群监控系统架构与实践

2022-06-20
阅读 5 分钟
2k
从容器技术的推广以及 Kubernetes成为容器调度管理领域的事实标准开始,云原生的理念和技术架构体系逐渐在生产环境中得到了越来越广泛的应用实践。在云原生的体系下,面对高度的弹性、动态的应用生命周期管理以及微服务化等特点,传统的监控体系已经难以应对和支撑,因此新一代云原生监控体系应运而生。

vivo大规模 Kubernetes 集群自动化运维实践

2022-06-14
阅读 6 分钟
2.2k
随着vivo业务迁移到K8s的增长,我们需要将K8s部署到多个数据中心。如何高效、可靠的在数据中心管理多个大规模的K8s集群是我们面临的关键挑战。kubernetes的节点需要对OS、Docker、etcd、K8s、CNI和网络插件的安装和配置,维护这些依赖关系繁琐又容易出错。

如何在 Vue 项目中,通过点击 DOM 自动定位VSCode中的代码行?

2022-06-13
阅读 7 分钟
3k
现在大型的 Vue项目基本上都是多人协作开发,并且随着版本的迭代,Vue 项目中的组件数也会越来越多,如果此时让你负责不熟悉的页面功能开发,甚至你才刚刚加入这个项目,那么怎么样才能快速找到相关组件在整个项目代码中的文件位置呢?想必大家都有采取过以下这几种方法:

探究Presto SQL引擎(3)-代码生成

2022-06-07
阅读 21 分钟
2.1k
探究Presto SQL引擎 系列:第1篇《探究Presto SQL引擎(1)-巧用Antlr》介绍了Antlr的基本用法以及如何使用Antlr4实现解析SQL查询CSV数据,在第2篇《探究Presto SQL引擎(2)-浅析Join》结合了Join的原理,以及Join的原理,在Presto中的思路。

Kafka 负载均衡在 vivo 的落地实践

2022-06-06
阅读 10 分钟
2.3k
副本迁移是Kafka最高频的操作,对于一个拥有几十万个副本的集群,通过人工去完成副本迁移是一件很困难的事情。Cruise Control作为Kafka的运维工具,它包含了Kafka 服务上下线、集群内负载均衡、副本扩缩容、副本缺失修复以及节点降级等功能。显然,Cruise Control的出现,使得我们能够更容易的运维大规模Kafka集群。 备...

C/C++ 单元自动化测试解决方案实践

2022-05-31
阅读 5 分钟
2.8k
C/C++ 开发效率一直被业内开发人员诟病,单元测试开发效率也是如此,以至于开发人员不愿花时间来写单元测试。那么我们是不是可以通过改善编写单元测试的效率来提升项目的测试用例覆盖率?

理“ Druid 元数据”之乱

2022-05-30
阅读 11 分钟
2k
vivo 互联网大数据团队-Zheng Xiaofeng一、背景Druid 是一个专为大型数据集上的高性能切片和 OLAP 分析而设计的数据存储系统。由于Druid 能够同时提供离线和实时数据的查询,因此Druid最常用作为GUI分析、业务监控、实时数仓的数据存储系统。此外Druid拥有一个多进程,分布式架构,每个Druid组件类型都可以独立配置和扩...

Android 子线程 UI 操作真的不可以?

2022-05-24
阅读 19 分钟
3.6k
我们以水平移动的方块模拟App正在进行的动效(如:页面切换);可以看出,在Snackabr 弹窗弹出时,方块动效有明显的卡顿(移动至约1/3处)。

Kafka 万亿级消息实践之资源组流量掉零故障排查分析

2022-05-23
阅读 4 分钟
1.3k
为了让读者能与小编在后续的问题分析中有更好的共鸣,小编先与各位读者朋友对齐一下我们 Kafka 集群的部署架构及服务接入 Kafka 集群的流程。

层层剖析一次 HTTP POST 请求事故

2022-05-17
阅读 7 分钟
2.6k
vivo 互联网服务器团队- Wei Ling本文主要讲述的是如何根据公司网络架构和业务特点,锁定正常请求被误判为跨域的原因并解决。一、问题描述某一个业务后台在表单提交的时候,报跨域错误,具体如下图:从图中可看出,报错原因为HTTP请求发送失败,由此,需先了解HTTP请求完整链路是什么。HTTP请求一般经过3个关卡,分别为D...

vivo 万台规模 HDFS 集群升级 HDFS 3.x 实践

2022-05-16
阅读 17 分钟
3k
在HDFS方面,支持了Erasure Coding、More than 2 NameNodes、Router-Based Federation、Standby NameNode Read、FairCallQueue、Intra-datanode balancer 等新特性。这些新特性在稳定性、性能、成本等多个方面带来诸多收益,我们打算将HDFS集群升级到HDFS 3.x 版本。

用户行为分析模型实践(二)—— 漏斗分析模型

2022-05-06
阅读 12 分钟
3.7k
在《用户行为分析模型实践(一)—— 路径分析模型》中,讲述了基于平台化查询中查询时间短、需要可视化的要求,并结合现有的存储计算资源以及具体需求,我们在实现中将路径数据进行枚举后分为两次进行合并。

Redis 内存优化在 vivo 的探索与实践

2022-05-05
阅读 10 分钟
4k
使用过 Redis 的同学应该都知道,它基于键值对(key-value)的内存数据库,所有数据存放在内存中,内存在 Redis 中扮演一个核心角色,所有的操作都是围绕它进行。

FastDFS 海量小文件存储解决之道

2022-04-26
阅读 6 分钟
2.8k
支持 Linux、FreeBSD、AID 等Unix系统,解决了大容量的文件存储和高并发访问问题,文件存取实现了负载均衡,适合存储 4KB~500MB 之间的小文件,特别适合以文件为载体的在线服务,如图片、视频、文档等等。

Spark SQL 字段血缘在 vivo 互联网的实践

2022-04-25
阅读 8 分钟
2k
作者:vivo互联网服务器团队-Hao Guangshi一、背景字段血缘是在表处理的过程中将字段的处理过程保留下来。为什么会需要字段血缘呢?有了字段间的血缘关系,便可以知道数据的来源去处,以及字段之间的转换关系,这样对数据的质量,治理有很大的帮助。Spark SQL 相对于 Hive 来说通常情况下效率会比较高,对于运行时间、资...

高效压缩位图在推荐系统中的应用

2022-04-19
阅读 4 分钟
2.1k
用户在浏览游戏中心/应用商店的某些模块内容时,会进行一系列滑屏操作并多次请求游戏推荐业务来进行游戏推荐展示,这段时间我们称之为一个用户session。

探究Presto SQL引擎(2)-浅析Join

2022-04-18
阅读 11 分钟
2.9k
在《探究Presto SQL引擎(1)-巧用Antlr》中,我们介绍了Antlr的基本用法以及如何使用Antlr4实现解析SQL查询CSV数据,更加深入理解Presto查询引擎支持的SQL语法以及实现思路。

解析分布式系统的缓存设计

2022-04-12
阅读 13 分钟
4.9k
一、缓存简介1.1 什么是缓存缓存就是数据交换的缓冲区。缓存的本质是一个内存 Hash。缓存是一种利用空间换时间的设计,其目标就是更快、更近:极大的提高。将数据写入/读取速度更快的存储(设备);将数据缓存到离应用最近的位置;将数据缓存到离用户最近的位置。缓存是用于存储数据的硬件或软件的组成部分,以使得后续...

状态机引擎在vivo营销自动化中的深度实践 | 引擎篇02

2022-04-11
阅读 14 分钟
4.2k
营销自动化平台支持多种不同类型运营活动策略(比如:短信推送策略、微信图文推送策略、App Push推送策略),每种活动类型都有各自不同的执行流程和活动状态。比如短信活动的活动执行流程如下:
封面图

深入剖析 RocketMQ 源码 - 负载均衡机制

2022-04-07
阅读 22 分钟
2.6k
RocketMQ是一款优秀的分布式消息中间件,在各方面的性能都比目前已有的消息队列要好,RocketMQ默认采用长轮询的拉模式, 单机支持千万级别的消息堆积,可以非常好的应用在海量消息系统中。

vivo 短视频推荐去重服务的设计实践

2022-04-06
阅读 7 分钟
1.8k
vivo短视频在视频推荐时需要对用户已经看过的视频进行过滤去重,避免给用户重复推荐同一个视频影响体验。在一次推荐请求处理流程中,会基于用户兴趣进行视频召回,大约召回2000~10000条不等的视频,然后进行视频去重,过滤用户已经看过的视频,仅保留用户未观看过的视频进行排序,选取得分高的视频下发给用户。
封面图