岁月流转,时光飞逝,转眼2021年已经画上句号。过去一年,vivo 互联网技术共推送了107篇文章,涉及服务器、前端、数据库等技术。
今天小编就带大家回顾一下2021年我们最受欢迎的25篇文章(根据阅读量和点赞筛选)。
1
随着公司业务发展和用户规模的增多,很多项目都在打造自己的评论功能,而评论的业务形态基本类似。当时各项目都是各自设计实现,存在较多重复的工作量;并且不同业务之间数据存在孤岛,很难产生联系。因此我们决定打造一款公司级的评论业务中台,为各业务方提供评论业务的快速接入能力。本文主要讲述 vivo 评论中台在数据库设计上的技术探索和实践。
2
本文主要分析Dubbo中对 SPI机制实现方式及相关原理,以核心类ExtensionLoader的源码解读来将实现细节进行分析,并对各使用场景使用扩展类的流程细节进行展示和总结。
3
本文将围绕富文本跨平台和编辑器跨平台两个部分介绍跨平台的价值,以及如何实现跨平台。通过一些方案介绍和踩坑分享,希望能给有富文本编辑器跨平台相关需求的小伙伴带来一些帮助。
4
《设计模式如何提升 vivo 营销自动化业务扩展性 | 引擎篇01》
营销业务本身极具复杂多变性,特别是伴随着数字化营销蓬勃发展的趋势,在市场的不同时期、公司发展的不同阶段、面向不同的用户群体以及持续效果波动迭代,都会产生不同的营销策略决策。本文详细解析设计模式和相关应用如何帮助营销自动化业务提升系统扩展性,以及实践过程中的思考和总结。
5
MGR(全称 MySQL Group Replication 【MySQL 组复制】)是Oracle MySQL于2016年12月发布MySQL 5.7.17推出的一个全新高可用和高扩展的解决方案。本文主要介绍MySQL Group Replication(组复制)技术的基本原理和技术演进史以及安装体验新特性。
6
WebFlux 是一个异步非阻塞式的web框架 。内部以Reactor库为基础,可以在不扩充硬件资源的前提下提高系统吞吐量。适用于IO密集型的服务。
7
推荐系统等面向用户的后端服务通常需要多级缓存方案,通过本地-分布式缓存-数据库方式进行缓存加速。而 Caffeine Cache 正是基于 JAVA8 的高性能本地缓存组件,因其更有效的淘汰算法和良好的易用性,已被 Spring Boot 2.0 后续版本集成并替代了 Google Guava Cache。本文从最常用的 get 方法入口,结合源代码,细数作者使用 Caffeine Cache 过程中遇到的各种坑和思考,作为闭坑指南分享给各位看官。
8
Jedis 是业界常用的 Redis JAVA 客户端。而 Lettuce 是一款基于 Netty 实现的异步客户端,不但逐步覆盖了 Jedis 的各种功能,还在可靠性、易用性、可扩展性、可维护性等方面都有长足发展。笔者因项目需要,在一些场景下切换成 Lettuce 进行开发,并且希望能类似 Jedis pipeline 一样提升批量查询的性能。在对 Lettuce 进行了学习和踩坑后,笔者将过程中遇到的各种关键点总结成文章分享给大家。
9
JVM调优是系统性能优化的重要手段之一,也是最为后端工程师津津乐道的技术沉淀之一,网络上已经有非常丰富的资料,不过大都偏向于理论,且没有一步一步落地的细节。本文着重于实践,一步一步介绍线上某核心服务的JVM调优落地过程,希望能给读者提供JVM调优的思路和可参考、可落地的方案。
10
分布式一致性 (distributed consensus) 是分布式系统中最基本的问题,用来保证一个分布式系统的可靠性以及容错能力。Raft 出现之前,Paxos 一直是分布式一致性算法的标准。Paxos 难以理解,更难以实现。Raft 的设计目标是简化 Paxos,使得算法既容易理解,也容易实现。
TOP 11-25
Netty是一款高性能网络IO框架,本文结合线上长连接真实案例,深入讲述Netty的流量控制原理以及问题解决的思路和步骤。
Hystrix是Netlifx开源的一款容错框架,防雪崩利器,具备服务降级,服务熔断,依赖隔离,监控(Hystrix Dashboard)等功能。本文从作者个人开发实战角度,总结分享Hystrix的使用经验,希望大家能有所收获。
Redis线程模型为什么要这么设计,有什么优点和缺点,有哪些思想是可以借鉴的...本文从网络IO的历史、Reactor模型的历史、到Redis线程模型的设计由浅入深,慢慢道来。
Dubbo是一款非常优秀的分布式服务框架,国内使用非常的广泛,2018年正式成为apache顶级项目。阅读本文你将了解到Dubbo的整体分层设计,每一层的意义,以及Dubbo的初始化流程和RPC调用过程,在这个过程涉及到的领域模型Protocol、Invoker、Exporter、Invocation、Result、URL等。本文的特点在于结合源码详细的介绍每一层的实际意义。
本文主要总结当Kafka集群流量达到 万亿级记录/天或者十万亿级记录/天 甚至更高后,我们需要具备哪些能力才能保障集群高可用、高可靠、高性能、高吞吐、安全的运行。这里总结内容主要针对Kafka2.1.1版本。
随着后端数据库的存储量级和用户的访问流量越来越大,我们免不了需要对OLTP数据库进行分库分表操作,那么选取一个的水平分库分表方案就显得非常重要。本文详细介绍在水平分库分表中常见的一些误区,以及一些常用的手法,以帮助识别可能存在的问题、少走弯路。
本文记录了一次线上服务,慢接口报警的解决流程,包括遇到线上问题的应急方案、分析问题的思路,主要集中在Redis响应比较慢时的分析和解决方案,通过对问题解决过程的总结,希望可以给大家一些参考。
优惠券是电商常见的营销手段,具有灵活的特点,既可以作为促销活动的载体,也是重要的引流入口。本文主要介绍vivo商城优惠券业务发展历程、架构设计思路及应对各种业务场景的实践。
在现网环境,一些使用Redis集群的业务随着业务量的上涨,往往需要进行节点扩容操作。本文介绍了一次大规模的Redis集群进行扩容操作遇到的性能问题,排查以及优化过程。
Dubbo作为Java语言的RPC框架,优势之一在于屏蔽了调用细节,能够像调用本地方法一样调用远程服务。本文基于实际问题,梳理dubbo编解码链路,以及Hessian2框架的序列化逻辑。有助于提高对于Dubbo框架的学习、使用和问题排查。
海外商城从印度做起,慢慢的会有一些其他国家的诉求,这个时候需要我们针对当前的商城做一个改造,可以支撑多个国家的商城,这里会涉及多个问题,多语言,多国家,多时区,本地化等等。本文描述了vivo海外商城在发展过程中为了适应多个国家的商城系统开发 ,如何把识别出来的国家信息在系统中传递下去,并且解决多线程,定时任务等多种场景下的问题。
Lucene是一个开放源码的全文检索引擎工具包,提供了完整的查询引擎和索引引擎,部分语种文本分析引擎。本文介绍了Lucene的相关使用心得,内容涵盖索引的生成、管理及搜索功能等内容和本人在轻量级的数据搜索中,深度解析Lucene如何实现全文索引。
消息队列是一种服务间异步通信方式,广泛应用于微服务架构设计中的解耦、异步、削峰等场景。消息在被处理和删除之前一直存储在队列上。RocketMQ 是 2012 年阿里巴巴开源的第三代分布式消息中间件,本文主要从源码角度讲述 RocketMQ 存储模块如何设计。
用户中心是互联网最为基础的核心系统,随着业务和用户的增长,势必会带来不断的挑战。如何在亿级的情况下保证系统的高可用,高性能以及高安全,本文能够给你一套实践方案。
在监控服务统一的大背景下,告警收敛能力下沉就成为必然,平台建设过程中,如何解决以前服务的痛点,充分释放统一告警服务的通用能力,需要经过深入的分析才能更好的抽离通用能力。文章以告警收敛为主线,逐层深入,介绍了统一告警平台的建设和实践。
2021年,我们依旧保持开放自由的心态,输出更多的原创技术内容,加强文章在技术深度、实践经验上的沉淀,希望能与大家一起交流、切磋。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。