vivo互联网技术

分享 vivo 互联网技术干货与沙龙活动,推荐最新行业动态与热门会议。

  • 博客(18)
  • 收藏
  • 关注

原创 深入浅出 ZooKeeper

ZooKeeper 是一个分布式协调服务,由 Apache 进行维护。ZooKeeper 可以视为一个高可用的文件系统。ZooKeeper 可以用于发布/订阅、负载均衡、命令服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能 。一、ZooKeeper 简介1.1 ZooKeeper 是什么ZooKeeper 是 Apache 的顶级项目。ZooKeeper 为分布式应用提供了高效且可靠的分布式协调服务,提供了诸如统一命名服务、配置管理和分布式锁等分布式..

2020-12-29 09:12:29 153

原创 vivo 互联网业务就近路由技术实战

一、问题背景在vivo互联网业务高速发展的同时,支撑的服务实例规模也越来越大,然而单个机房能承载的机器容量是有限的,于是同城多机房甚至多地域部署就成为了业务在实际部署过程中不得不面临的场景。一般情况下,同一个机房内部的网络调用平均时延在0.1ms左右,同城多个机房之间的平均时延在1ms左右,跨地域机房之间的网络时延则更大,例如北京到上海的平均时延达到了30ms以上。在业务多机房部署场景中,内部服务如果存在大量的跨机房、甚至跨地域的网络调用,则请求时延会显著加大,会直接影响到服务质量,甚至是用户体

2020-12-28 10:04:56 431

原创 vivo 全球商城:订单中心架构设计与实践

一、背景随着用户量级的快速增长,vivo 官方商城 v1.0 的单体架构逐渐暴露出弊端:模块愈发臃肿、开发效率低下、性能出现瓶颈、系统维护困难。从2017年开始启动的 v2.0 架构升级,基于业务模块进行垂直的系统物理拆分,拆分出来业务线各司其职,提供服务化的能力,共同支撑主站业务。订单模块是电商系统的交易核心,不断累积的数据即将达到单表存储瓶颈,系统难以支撑新品发布和大促活动期间的流量,服务化改造势在必行。本文将介绍 vivo 商城 订单系统建设的过程中遇到的问题和解决方案,分享架构设计经

2020-12-28 10:03:16 1379 2

原创 发布会直播技术及业务实践

一、背景随着直播行业的近年来的发展,直播技术现已日趋成熟。本文主要介绍目前主流的直播技术原理,以及在直播在发布会场景下的应用以及过程中遇到的问题及解决方案。二、直播原理2.1 流媒体技术2.1.1 流媒体简介目前在网络中传输音视频的多媒体信息主要有两种方式——下载方式和流式传输。下载方式很好理解,用户需要将一个音视频完全下载后才可以进行播放;流式传输指将音视频通过服务器向客户端进行连续的实时传输。基于流式传输的特点,就不难理解流媒体的定义——流媒体(streaming media)是在由

2020-12-23 10:33:19 389

原创 vivo 商城架构升级-SSR 实战篇

一、前言在前面几篇文章中,相信大家对vivo官网商城的前端架构演变有了一定的了解,从稳步推进前后端分离到小程序多端探索实践,团队不断创新尝试。在本文中,我们来分享一下vivo官网商城在Node 服务端渲染(Server Side Rendering, SSR)方面的实战经验。本文主要围绕以下几个方面进行阐述:CSR与SSR的对比 性能优化 自动化部署 容灾、降级 日志、监控二、背景vivo官网商城目前前后端分离采用的是SPA单页模式,SPA会把所有 JS 整体打包,无法忽视的问题就

2020-12-22 09:13:01 1172

原创 vivo 微服务 API 网关架构实践

一、背景介绍网关作为微服务生态中的重要一环,由于历史原因,中间件团队没有统一的微服务API网关,为此准备技术预研打造一个功能齐全、可用性高的业务网关。二、技术选型常见的开源网关按照语言分类有如下几类:Nginx+Lua:OpenResty、Kong 等; Java:Zuul1/Zuul2、Spring Cloud Gateway、gravitee-gateway、Dromara Soul 等; Go:janus、GoKu API Gateway 等; Node.js:Express G

2020-12-21 10:47:41 1195 1

原创 SPI 在 Dubbo中 的应用

通过本文的学习,可以了解 Dubbo SPI 的特性及实现原理,希望对大家的开发设计有一定的启发性。一、概述SPI 全称为 Service Provider Interface,是一种模块间组件相互引用的机制。其方案通常是提供方将接口实现类的全名配置在classPath下的指定文件中,由调用方读取并加载。这样需要替换某个组件时,只需要引入新的JAR包并在其中包含新的实现类和配置文件即可,调用方的代码无需任何调整。优秀的SPI框架能够提供单接口多实现类时的优先级选择,由用户指定选择哪个实现。得益于

2020-12-16 09:25:29 378

原创 领域驱动设计(DDD)实践之路(四):领域驱动在微服务设计中的应用

这是“领域驱动设计实践之路”系列的第四篇文章,从单体架构的弊端引入微服务,结合领域驱动的概念介绍了如何做微服务划分、设计领域模型并展示了整体的微服务化的系统架构设计。结合分层架构、六边形架构和整洁架构的思想,以实际使用场景为背景,展示了一个微服务的程序结构设计。一、单体架构的弊端单体结构示例(引用自互联网)一般在业务发展的初期,整个应用涉及的功能需求较少,相对比较简单,单体架构的应用比较容易部署、测试,横向扩展也比较易实现。然而,随着需求的不断增加, 越来越多的人加入开发团队,代码库也在

2020-12-15 10:22:30 1251 1

原创 Sentinel 是如何做限流的

限流是保障服务高可用的方式之一,尤其是在微服务架构中,对接口或资源进行限流可以有效地保障服务的可用性和稳定性。之前的项目中使用的限流措施主要是Guava的RateLimiter。RateLimiter是基于令牌桶流控算法,使用非常简单,但是功能相对比较少。而现在,我们有了一种新的选择,阿里提供的Sentinel。Sentinel 是阿里巴巴提供的一种限流、熔断中间件,与RateLimiter相比,Sentinel提供了丰富的限流、熔断功能。它支持控制台配置限流、熔断规则,支持集群限流,并可以将.

2020-12-15 10:21:26 1879

原创 vivo 全球商城:从 0 到 1 代销业务的融合之路

代销是 vivo 商城已经落地的成熟业务,本文提供给各位读者 vivo 商城代销业务中两个异构系统业务融合的对接经验和架构思路。一、业务背景近两年,内销商城业务的发展十分迅速,vivo 商城系统的架构也完成了从单体往分布式的演进。我们在 vivo 商城服务化方向做了很多的努力,基础服务的能力逐渐沉淀下来。2019年我们也开始在产品功能上玩起了多元化的营销业务。目前手机品类仍是我们销售的主力,但是非手机品类的sku单品数量还是很少,巧妇难为无米之炊。为了解决非手机品类商品丰富度问题,运营考虑和

2020-12-14 10:14:13 247

原创 vivo 全球商城:架构演进之路

本文讲述 vivo 官方商城从单体应用到具备综合能力电商平台的演进,系统架构往服务化、中台化的变迁历程。一、前言vivo官方商城,是vivo官方的线上电商平台,主营vivo手机及专属配件。经过几年发展,已经完成了从单体应用到具备综合能力电商平台的演进,整体系统架构也逐步往服务化、中台化变迁。我们在这条系统架构升级的道路中,实践出了一些系统架构经验。通过本篇文章,可以让对电商感兴趣的小伙伴们,更为全面地了解最基础的电商业务模式,了解电商体系具备的技术和架构,了解系统在不同时期的架构演进。二、架

2020-12-14 10:11:56 1320

原创 当我们谈前端性能的时候,我们谈的是什么

本文结合谷歌官方工具 Lighthouse,分析了最新的前端页面性能评分标准,帮助大家更好地理解各项性能指标,以提升并优化相关的前端项目。一、前端页面性能及其分析工具前端页面的性能,一直都是大家持续关注的一个领域,因为用户的留存率和页面加载性能息息相关。根据google做出的数据统计,页面访问时长从1s增加到3s,用户跳出率增加32%。对于前端页面性能的评估,一般是两种形式:一种是使用性能分析工具,在线对网页各项指标进行打分评估;一种是使用性能监控,通过 performance api 或者自定

2020-12-09 09:31:32 540 1

原创 分布式搜索引擎Elasticsearch的架构分析

一、写在前面ES(Elasticsearch下文统一称为ES)越来越多的企业在业务场景是使用ES存储自己的非结构化数据,例如电商业务实现商品站内搜索,数据指标分析,日志分析等,ES作为传统关系型数据库的补充,提供了关系型数据库不具备的一些能力。ES最先进入大众视野的是其能够实现全文搜索的能力,也是由于基于Lucene的实现,内部有一种倒排索引的数据结构。本文作者将介绍ES的分布式架构,以及ES的存储索引机制,本文不会详细介绍ES的API,会从整体架构层面进行分析,后续作者会有其他文章对ES的使.

2020-12-08 09:47:51 397

原创 异步编程之事件循环机制

JavaScript 是一门单线程语言,我们可以通过异步编程的方式来实现实现类似于多线程语言的并发操作。本文着重讲解通过事件循环机制来实现多个异步操作的有序执行、并发执行;通过事件队列实现同级多个并发操作的先后执行顺序,通过微任务和宏任务的概念来讲解不同阶段任务执行的先后顺序,最后通过将浏览器和 Node 下的事件循环机制进行对比,对比其事件循环机制的不同之处,以及在 Node 端通过libuv引擎来实现多个异步任务的并发执行。一、前言我们知道JavaScript 是一门单线程语言,对于大多数人

2020-12-08 09:42:29 254

原创 Seata是什么?一文了解其实现原理

一、背景随着业务发展,单体系统逐渐无法满足业务的需求,分布式架构逐渐成为大型互联网平台首选。伴随而来的问题是,本地事务方案已经无法满足,分布式事务相关规范和框架应运而生。在这种情况下,大型厂商根据分布式事务实现规范,实现了不同的分布式框架,以简化业务开发者处理分布式事务相关工作,让开发者专注于核心业务开发。Seata就是这么一个分布式事务处理框架,Seata是由阿里开源,前身为Fescar,经过品牌升级变身Seata。二、分布式事务规范1.分布式事务相关概念事务:一个程序执行单元,.

2020-12-07 10:48:24 1796 2

原创 Canal 组件简介与 vivo 帐号实践

互联网应用随着业务的发展,部分单表数据体量越来越大,应对服务性能与稳定的考虑,有做分库分表、数据迁移的需要,本文介绍了vivo帐号应对以上需求的实践。一、前言Canal 是阿里巴巴开源项目,关于什么是 Canal?又能做什么?我会在后文为大家一一介绍。在本文您将可以了解到vivo帐号使用 Canal 解决了什么样的业务痛点,基于此希望对您所在业务能有一些启示。二、Canal介绍1. 简介Canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析

2020-12-07 10:41:55 268

原创 Java 8 Stream原理解析

说起 Java 8,我们知道 Java 8 大改动之一就是增加函数式编程,而 Stream API 便是函数编程的主角,Stream API 是一种流式的处理数据风格,也就是将要处理的数据当作流,在管道中进行传输,并在管道中的每个节点对数据进行处理,如过滤、排序、转换等。首先我们先看一个使用Stream API的示例,具体代码如下:code1 Stream example这是个很简单的一个Stream使用例子,我们过滤掉空字符串后,转成int类型并计算出最大值,这其中包括了三个操作:fi.

2020-12-03 09:23:58 325

原创 源码深度解析 Handler 机制及应用

本文以源码分析+实际应用的形式,详细讲解了 Handler 机制的原理,以及在开发中的使用场景和要注意的地方。一、基本原理回顾在 Android 开发中,Handler及相关衍生类的应用经常用到,Android的运行也是建立在这套机制上的,所以了解其中的原理细节,以及其中的坑对于每位开发者来说都是非常有必要的。Handler机制的五个组成部分:Handler、Thread(ThreadLocal)、Looper、MessageQueue、Message。1、Thread(ThreadL.

2020-12-02 09:15:35 481 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除