草庐IT

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

作者|vivo互联网服务器团队-ChengWangrong本文分析了在营销自动化业务引入工作流技术的背景和工作流引擎的介绍,同时介绍了几种业界流行的开源工作流引擎特点,以及在项目自研开发过程中的设计思路和总结思考。一、业务背景营销自动化平台可以支持不同用户生命周期的活动旅程策略配置,根据用户触发的不同活动行为,进行差异化的营销触达方案。同时各种类型活动的具体执行过程中也有不同的业务处理流程(比如审批流程和业务流转)。业务流程复杂多样,需求变更频繁,项目开发过程中会有以下痛点:项目交付周期长:一个完整的业务流程需要从头开始按版本迭代,开发时间长,成本高。功能重复开发测试:业务之间会掺杂着很多共性

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

作者|vivo互联网服务器团队-ChengWangrong本文分析了在营销自动化业务引入工作流技术的背景和工作流引擎的介绍,同时介绍了几种业界流行的开源工作流引擎特点,以及在项目自研开发过程中的设计思路和总结思考。一、业务背景营销自动化平台可以支持不同用户生命周期的活动旅程策略配置,根据用户触发的不同活动行为,进行差异化的营销触达方案。同时各种类型活动的具体执行过程中也有不同的业务处理流程(比如审批流程和业务流转)。业务流程复杂多样,需求变更频繁,项目开发过程中会有以下痛点:项目交付周期长:一个完整的业务流程需要从头开始按版本迭代,开发时间长,成本高。功能重复开发测试:业务之间会掺杂着很多共性

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

一、概述1.1业务背景vivo短视频在视频推荐时需要对用户已经看过的视频进行过滤去重,避免给用户重复推荐同一个视频影响体验。在一次推荐请求处理流程中,会基于用户兴趣进行视频召回,大约召回2000~10000条不等的视频,然后进行视频去重,过滤用户已经看过的视频,仅保留用户未观看过的视频进行排序,选取得分高的视频下发给用户。1.2当前现状当前推荐去重基于RedisZset实现,服务端将播放埋点上报的视频和下发给客户端的视频分别以不同的Key写入RedisZSet,推荐算法在视频召回后直接读取Redis里对应用户的播放和下发记录(整个ZSet),基于内存中的Set结构实现去重,即判断当前召回视频是

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

一、概述1.1业务背景vivo短视频在视频推荐时需要对用户已经看过的视频进行过滤去重,避免给用户重复推荐同一个视频影响体验。在一次推荐请求处理流程中,会基于用户兴趣进行视频召回,大约召回2000~10000条不等的视频,然后进行视频去重,过滤用户已经看过的视频,仅保留用户未观看过的视频进行排序,选取得分高的视频下发给用户。1.2当前现状当前推荐去重基于RedisZset实现,服务端将播放埋点上报的视频和下发给客户端的视频分别以不同的Key写入RedisZSet,推荐算法在视频召回后直接读取Redis里对应用户的播放和下发记录(整个ZSet),基于内存中的Set结构实现去重,即判断当前召回视频是

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

作者|vivo互联网服务器团队-ZhangRong一、背景随着vivo业务迁移到k8s的增长,我们需要将k8s部署到多个数据中心。如何高效、可靠的在数据中心管理多个大规模的k8s集群是我们面临的关键挑战。kubernetes的节点需要对os、docker、etcd、k8s、cni和网络插件的安装和配置,维护这些依赖关系繁琐又容易出错。以前集群的部署和扩缩容主要通过ansible编排任务,黑屏化操作、配置集群的inventory和vars执行ansibleplaybook。集群运维的主要困难点如下:需要人工黑屏化集群运维操作,存在操作失误和集群配置差异。部署脚本工具没有具体的版本控制,不利于集群

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

作者|vivo互联网服务器团队-ZhangRong一、背景随着vivo业务迁移到k8s的增长,我们需要将k8s部署到多个数据中心。如何高效、可靠的在数据中心管理多个大规模的k8s集群是我们面临的关键挑战。kubernetes的节点需要对os、docker、etcd、k8s、cni和网络插件的安装和配置,维护这些依赖关系繁琐又容易出错。以前集群的部署和扩缩容主要通过ansible编排任务,黑屏化操作、配置集群的inventory和vars执行ansibleplaybook。集群运维的主要困难点如下:需要人工黑屏化集群运维操作,存在操作失误和集群配置差异。部署脚本工具没有具体的版本控制,不利于集群

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

作者|vivo互联网服务器团队-YouShuo副本迁移是Kafka最高频的操作,对于一个拥有几十万个副本的集群,通过人工去完成副本迁移是一件很困难的事情。CruiseControl作为Kafka的运维工具,它包含了Kafka服务上下线、集群内负载均衡、副本扩缩容、副本缺失修复以及节点降级等功能。显然,CruiseControl的出现,使得我们能够更容易的运维大规模Kafka集群。备注:本文基于Kafka2.1.1开展。一、 Kafka负载均衡1.1生产者负载均衡Kafka客户端可以使用分区器依据消息的key计算分区,如果在发送消息时未指定key,则默认分区器会基于roundrobin算法为每条

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

作者|vivo互联网服务器团队-YouShuo副本迁移是Kafka最高频的操作,对于一个拥有几十万个副本的集群,通过人工去完成副本迁移是一件很困难的事情。CruiseControl作为Kafka的运维工具,它包含了Kafka服务上下线、集群内负载均衡、副本扩缩容、副本缺失修复以及节点降级等功能。显然,CruiseControl的出现,使得我们能够更容易的运维大规模Kafka集群。备注:本文基于Kafka2.1.1开展。一、 Kafka负载均衡1.1生产者负载均衡Kafka客户端可以使用分区器依据消息的key计算分区,如果在发送消息时未指定key,则默认分区器会基于roundrobin算法为每条

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

作者|vivo互联网客户端团队-XuJie 日益新增的机型,给开发人员带来了很多的适配工作。代码能不能统一、apk能不能统一、物料如何选取、样式怎么展示等等都是困扰开发人员的问题,本方案就是介绍不同机型的共线方案,打消开发人员的疑虑。一、日益纷繁的机型带来的挑战1.1 背景科技是进步的,人们对美的要求也是逐渐提升的,所以才有了现在市面上形形色色的机型(1)比如vivoX60手机采用纤薄曲面屏设计,属于直板机型。(2)比如vivo折叠屏高端手机,提供更优质的视觉体验,属于折叠屏机型。(3)比如vivopad,拥有优秀的操作手感和高级的质感,属于平板机型。1.2 我们的挑战在此之前,我们主要是为直

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

作者|vivo互联网客户端团队-XuJie 日益新增的机型,给开发人员带来了很多的适配工作。代码能不能统一、apk能不能统一、物料如何选取、样式怎么展示等等都是困扰开发人员的问题,本方案就是介绍不同机型的共线方案,打消开发人员的疑虑。一、日益纷繁的机型带来的挑战1.1 背景科技是进步的,人们对美的要求也是逐渐提升的,所以才有了现在市面上形形色色的机型(1)比如vivoX60手机采用纤薄曲面屏设计,属于直板机型。(2)比如vivo折叠屏高端手机,提供更优质的视觉体验,属于折叠屏机型。(3)比如vivopad,拥有优秀的操作手感和高级的质感,属于平板机型。1.2 我们的挑战在此之前,我们主要是为直