岁月流转,时光飞逝,转眼2021年已经画上句号。过去一年,vivo 互联网技术共推送了107篇文章,涉及服务器、前端、数据库等技术。

今天小编就带大家回顾一下2021年我们最受欢迎的25篇文章(根据阅读量和点赞筛选)。

1

《MongoDB在评论中台的实践》

随着公司业务发展和用户规模的增多,很多项目都在打造自己的评论功能,而评论的业务形态基本类似。当时各项目都是各自设计实现,存在较多重复的工作量;并且不同业务之间数据存在孤岛,很难产生联系。因此我们决定打造一款公司级的评论业务中台,为各业务方提供评论业务的快速接入能力。本文主要讲述 vivo 评论中台在数据库设计上的技术探索和实践。

2

《详解Apache Dubbo的SPI实现机制》

本文主要分析Dubbo中对 SPI机制实现方式及相关原理,以核心类ExtensionLoader的源码解读来将实现细节进行分析,并对各使用场景使用扩展类的流程细节进行展示和总结。

3

《富文本及编辑器的跨平台方案》

本文将围绕富文本跨平台和编辑器跨平台两个部分介绍跨平台的价值,以及如何实现跨平台。通过一些方案介绍和踩坑分享,希望能给有富文本编辑器跨平台相关需求的小伙伴带来一些帮助。

4

《设计模式如何提升 vivo 营销自动化业务扩展性 | 引擎篇01》

营销业务本身极具复杂多变性,特别是伴随着数字化营销蓬勃发展的趋势,在市场的不同时期、公司发展的不同阶段、面向不同的用户群体以及持续效果波动迭代,都会产生不同的营销策略决策。本文详细解析设计模式和相关应用如何帮助营销自动化业务提升系统扩展性,以及实践过程中的思考和总结。

5

《带你走进MySQL全新高可用解决方案-MGR》

MGR(全称 MySQL Group Replication 【MySQL 组复制】)是Oracle MySQL于2016年12月发布MySQL 5.7.17推出的一个全新高可用和高扩展的解决方案。本文主要介绍MySQL Group Replication(组复制)技术的基本原理和技术演进史以及安装体验新特性。

6

《深入剖析 Spring WebFlux》

WebFlux 是一个异步非阻塞式的web框架 。内部以Reactor库为基础,可以在不扩充硬件资源的前提下提高系统吞吐量。适用于IO密集型的服务。

7

《如何把 Caffeine Cache 用得如丝般顺滑》

推荐系统等面向用户的后端服务通常需要多级缓存方案,通过本地-分布式缓存-数据库方式进行缓存加速。而 Caffeine Cache 正是基于 JAVA8 的高性能本地缓存组件,因其更有效的淘汰算法和良好的易用性,已被 Spring Boot 2.0 后续版本集成并替代了 Google Guava Cache。本文从最常用的 get 方法入口,结合源代码,细数作者使用 Caffeine Cache 过程中遇到的各种坑和思考,作为闭坑指南分享给各位看官。

8

《初探 Redis 客户端 Lettuce:真香》

Jedis 是业界常用的 Redis JAVA 客户端。而 Lettuce 是一款基于 Netty 实现的异步客户端,不但逐步覆盖了 Jedis 的各种功能,还在可靠性、易用性、可扩展性、可维护性等方面都有长足发展。笔者因项目需要,在一些场景下切换成 Lettuce 进行开发,并且希望能类似 Jedis pipeline 一样提升批量查询的性能。在对 Lettuce 进行了学习和踩坑后,笔者将过程中遇到的各种关键点总结成文章分享给大家。

9

《高并发场景下JVM调优实践之路》

JVM调优是系统性能优化的重要手段之一,也是最为后端工程师津津乐道的技术沉淀之一,网络上已经有非常丰富的资料,不过大都偏向于理论,且没有一步一步落地的细节。本文着重于实践,一步一步介绍线上某核心服务的JVM调优落地过程,希望能给读者提供JVM调优的思路和可参考、可落地的方案。

10

深入剖析共识性算法 Raft

分布式一致性 (distributed consensus) 是分布式系统中最基本的问题,用来保证一个分布式系统的可靠性以及容错能力。Raft 出现之前,Paxos 一直是分布式一致性算法的标准。Paxos 难以理解,更难以实现。Raft 的设计目标是简化 Paxos,使得算法既容易理解,也容易实现。

TOP 11-25

深入理解Netty-从偶现宕机看Netty流量控制

Netty是一款高性能网络IO框架,本文结合线上长连接真实案例,深入讲述Netty的流量控制原理以及问题解决的思路和步骤。

Hystrix实战经验分享

Hystrix是Netlifx开源的一款容错框架,防雪崩利器,具备服务降级,服务熔断,依赖隔离,监控(Hystrix Dashboard)等功能。本文从作者个人开发实战角度,总结分享Hystrix的使用经验,希望大家能有所收获。

Redis线程模型的前世今**生 **

Redis线程模型为什么要这么设计,有什么优点和缺点,有哪些思想是可以借鉴的...本文从网络IO的历史、Reactor模型的历史、到Redis线程模型的设计由浅入深,慢慢道来。

源码解读Dubbo分层设计思想

Dubbo是一款非常优秀的分布式服务框架,国内使用非常的广泛,2018年正式成为apache顶级项目。阅读本文你将了解到Dubbo的整体分层设计,每一层的意义,以及Dubbo的初始化流程和RPC调用过程,在这个过程涉及到的领域模型Protocol、Invoker、Exporter、Invocation、Result、URL等。本文的特点在于结合源码详细的介绍每一层的实际意义。

Kafka万亿级消息实战

本文主要总结当Kafka集群流量达到 万亿级记录/天或者十万亿级记录/天  甚至更高后,我们需要具备哪些能力才能保障集群高可用、高可靠、高性能、高吞吐、安全的运行。这里总结内容主要针对Kafka2.1.1版本。

你分库分表的姿势对么?—详谈水平分库分表

随着后端数据库的存储量级和用户的访问流量越来越大,我们免不了需要对OLTP数据库进行分库分表操作,那么选取一个的水平分库分表方案就显得非常重要。本文详细介绍在水平分库分表中常见的一些误区,以及一些常用的手法,以帮助识别可能存在的问题、少走弯路。

十亿级流量下,我与Redis时延小突刺的战斗史

本文记录了一次线上服务,慢接口报警的解决流程,包括遇到线上问题的应急方案、分析问题的思路,主要集中在Redis响应比较慢时的分析和解决方案,通过对问题解决过程的总结,希望可以给大家一些参考。

vivo 全球商城:优惠券系统架构设计与实践

优惠券是电商常见的营销手段,具有灵活的特点,既可以作为促销活动的载体,也是重要的引流入口。本文主要介绍vivo商城优惠券业务发展历程、架构设计思路及应对各种业务场景的实践。

Redis大集群扩容性能优化实践

在现网环境,一些使用Redis集群的业务随着业务量的上涨,往往需要进行节点扩容操作。本文介绍了一次大规模的Redis集群进行扩容操作遇到的性能问题,排查以及优化过程。

Dubbo 编解码那些事

Dubbo作为Java语言的RPC框架,优势之一在于屏蔽了调用细节,能够像调用本地方法一样调用远程服务。本文基于实际问题,梳理dubbo编解码链路,以及Hessian2框架的序列化逻辑。有助于提高对于Dubbo框架的学习、使用和问题排查。

Java 多线程上下文传递在复杂场景下的实践

海外商城从印度做起,慢慢的会有一些其他国家的诉求,这个时候需要我们针对当前的商城做一个改造,可以支撑多个国家的商城,这里会涉及多个问题,多语言,多国家,多时区,本地化等等。本文描述了vivo海外商城在发展过程中为了适应多个国家的商城系统开发 ,如何把识别出来的国家信息在系统中传递下去,并且解决多线程,定时任务等多种场景下的问题。

深度解析 Lucene 如何实现轻量级全文索引

Lucene是一个开放源码的全文检索引擎工具包,提供了完整的查询引擎和索引引擎,部分语种文本分析引擎。本文介绍了Lucene的相关使用心得,内容涵盖索引的生成、管理及搜索功能等内容和本人在轻量级的数据搜索中,深度解析Lucene如何实现全文索引。

深入剖析 RocketMQ 源码 - 消息存储模块

消息队列是一种服务间异步通信方式,广泛应用于微服务架构设计中的解耦、异步、削峰等场景。消息在被处理和删除之前一直存储在队列上。RocketMQ 是 2012 年阿里巴巴开源的第三代分布式消息中间件,本文主要从源码角度讲述 RocketMQ 存储模块如何设计。

亿级用户中心的设计与实践

用户中心是互联网最为基础的核心系统,随着业务和用户的增长,势必会带来不断的挑战。如何在亿级的情况下保证系统的高可用,高性能以及高安全,本文能够给你一套实践方案。

vivo统一告警平台建设与实践

在监控服务统一的大背景下,告警收敛能力下沉就成为必然,平台建设过程中,如何解决以前服务的痛点,充分释放统一告警服务的通用能力,需要经过深入的分析才能更好的抽离通用能力。文章以告警收敛为主线,逐层深入,介绍了统一告警平台的建设和实践。

2021年,我们依旧保持开放自由的心态,输出更多的原创技术内容,加强文章在技术深度、实践经验上的沉淀,希望能与大家一起交流、切磋。

2021年vivo互联网技术最受欢迎文章TOP25的更多相关文章

  1. 异构混排在vivo互联网的技术实践

    作者:vivo 互联网算法团队- Shen Jiyi 本文根据沈技毅老师在"2022 vivo开发者大会"现场演讲内容整理而成. 混排层负责将多个异构队列的结果如广告.游戏.自然量 ...

  2. vivo互联网机器学习平台的建设与实践

    vivo 互联网产品团队 - Wang xiao 随着广告和内容等推荐场景的扩展,算法模型也在不断演进迭代中.业务的不断增长,模型的训练.产出迫切需要进行平台化管理.vivo互联网机器学习平台主要业务 ...

  3. 内容分发网络CDN(互联网技术)

    内容分发网络(互联网技术)CDN的全称是Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更 ...

  4. GIAC全球互联网架构大会——互联网技术架构未来

    GIAC全球互联网架构大会是高可用架构技术社区推出的面向架构师.技术负责人及高端技术从业人员的技术架构大会.中国拥有全球最大的互联网用户及移动互联网用户,如何使用合适的架构来搭建互联网系统,是每一个互 ...

  5. gitc2016——打造互联网技术狂欢盛宴

    gitc2016全球互联网技术大会由麒麟会主办,iTech Club(互联网技术精英俱乐部)协办.网堤安全将作为云安全服务提供商应邀出席本届大会,gitc2016会有怎样的精彩内容?我们一起来一探究竟 ...

  6. 全球互联网技术大会GITC 2016 最炫酷技术盛宴

    2016年对于全球互联网产业来说,可谓是不折不扣的"创新爆发年",科技创新的更迭速度和多元化趋势都呈现出全所未见的增长态势.我们看到,云计算.大数据等在多年前萌发的技术创新正在快速 ...

  7. BAT解密:互联网技术发展之路(5)- 开发层技术剖析

    BAT解密:互联网技术发展之路(5)- 开发层技术剖析 1. 开发框架 在系列文章的第2篇"BAT解密:互联网技术发展之路(2)- 业务怎样驱动技术发展"中我们深入分析了互联网业务 ...

  8. 雷观(二十三)-IT互联网技术,不拼创新拼努力,特别低公平

    上次发表"雷观(二十二)"是在2015年3月7日,一转眼,就快到了11月.  前段时间,终于狠下心来,写了本篇,第二十三啦.  小雷同志,要加油了~  早日达到百篇雷观的里程碑~  ...

  9. 云南农业职业技术学院 / 互联网技术学院官网 HTML5+CSS3

    HTML学完后写了,有小组成员参与开发,我只写了主页,那就只贴主页的代码出来了. 作为初学者,代码写得不太好,写博客纯属记录!有问题望指导! 码云开源仓库地址:https://gitee.com/yn ...

  10. 互联网技术笔试总通不过?leetcode刷对了么

    https://36kr.com/p/5084645 Leetcode,绕都绕不过去的程序员刷题神器 编者按:本文来自逆行求职(ID:nixingjihua). 对所有求职技术岗位的童鞋来说,有这么一 ...

随机推荐

  1. String.trim()含义

    就是去除两端空格,目前只用到了这个.

  2. 【漏洞分析】Reflection Token 反射型代币攻击事件通用分析思路

    在本篇文章中,我将通过一个攻击事件引出 Reflection Token 攻击事件的一个通用分析思路. 关于 Reflection Token 的其他案例分析,可以参考BEVO代币攻击事件分析及复现一 ...

  3. 数据仓库主流开发语言——SQL

    数仓开发语言概述  SQL语言介绍 数仓与SQL 结构化数据 二维表结构 SQL语法分类

  4. 【问题解决】unable to do port forwarding: socat not found

    问题复现 前阵子应公司要求做华为云平台的调研,写了一篇文档包含将华为云CCE下载kuberctl配置及使用kubectl转发流量到本地的操作. 今天一早上同事就发来一个错误界面,说是Java远程调试转 ...

  5. AI浪潮下,大模型如何在音视频领域运用与实践?

    视频云大模型算法「方法论」. 刘国栋|演讲者 在AI技术发展如火如荼的当下,大模型的运用与实践在各行各业以千姿百态的形式展开.音视频技术在多场景.多行业的应用中,对于智能化和效果性能的体验优化有较为极 ...

  6. 安装华企盾DSC防泄密系统huawei Intel的电脑,加载驱动失败

    解决方法:从控制面板-[启用或关闭Windows功能]里面把[Hyper-V的功能]关闭 重启电脑再开启之后可以加密驱动则可以加载成功

  7. 为什么说数字孪生和GIS高度互补?它们各自从对方那里获得了什么?

    在数字化时代,数字孪生和GIS作为两项重要技术,它们的融合正日益受到人们的关注和认可.数字孪生是将实体世界与数字世界紧密结合的技术,可以创建实时的虚拟副本,对物理系统进行模拟.优化和预测.而GIS则是 ...

  8. C++ Qt开发:QSqlDatabase数据库组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QSqlDat ...

  9. 2024-01-03:用go语言,给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time, 分别表示给 n 堵不同的墙刷油漆需要的开销和时间。你有两名油漆匠, 一位需要 付费 的油漆匠

    2024-01-03:用go语言,给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time, 分别表示给 n 堵不同的墙刷油漆需要的开销和时间.你有两名油漆匠, 一位需要 付费 的油漆匠 ...

  10. JAVAAPI实现血缘关系Rest推送到DataHub V0.12.1版本

    DataHub 更青睐于PythonAPI对血缘与元数据操作 虽然开源源码都有Java示例和Python示例:但是这个API示例数量简直是1:100的差距!!不知为何,项目使用Java编写,示例推送偏 ...