2021年vivo互联网技术最热门文章时光荏苒,岁月如梭,转眼2021年就结束了。一年来,vivo互联网科技共推送文章107篇,涉及服务器、前端、数据库等技术。今天,小编就带大家回顾一下我们2021年最受欢迎的25篇文章(根据阅读量和点赞数评选)。1《MongoDB在评论中台的实践》随着公司业务的发展和用户规模的增加,很多项目都在打造自己的评论功能,评论的业务形态基本大同小异。当时每个项目都是独立设计和实施的,重复性工作量很大;并且不同业务之间存在数据孤岛,很难建立连接。因此,我们决定搭建公司级审核业务平台,为各业务方提供审核业务的快速接入。本文主要介绍vivo点评平台在数据库设计方面的技术探索与实践。2《详解Apache Dubbo的SPI实现机制》本文主要分析了Dubbo中SPI机制的实现及相关原理,通过解读核心类ExtensionLoader的源码分析了实现细节,展示总结了每次使用中使用扩展类的过程细节设想。3《富文本及编辑器的跨平台方案》本文将围绕富文本跨平台和编辑器跨平台两部分介绍跨平台的价值以及如何实现跨平台。通过一些解决方案的介绍和陷阱的分享,希望能给有富文本编辑器跨平台相关需求的朋友们带来一些帮助。4《设计模式如何提升 vivo 营销自动化业务扩展性 | 引擎篇01》营销业务本身极其复杂多变,尤其是随着数字营销的蓬勃发展趋势,在市场的不同时期,公司发展的不同阶段,针对不同的用户群体和持续的效果波动迭代,都会有不同的效果营销战略决策。本文详细分析了设计模式及相关应用如何帮助营销自动化业务提升系统扩展性,以及在实践过程中的思考与总结。5《带你走进MySQL全新高可用解决方案-MGR》MGR(全称MySQLGroupReplication[MySQLGroupReplication])是OracleMySQL于2016年12月发布MySQL5.7.17推出的全新高可用、高扩展性解决方案,本文主要介绍基本原理和技术MySQLGroupReplication(组复制)技术的演化历史,以及新特性的安装体验。6《深入剖析 Spring WebFlux》WebFlux是一个异步和非阻塞的网络框架。内部基于Reactor库,无需扩展硬件资源即可提升系统吞吐量。适用于IO密集型服务。7《如何把 Caffeine Cache 用得如丝般顺滑》推荐系统等面向用户的后端服务通常需要多级缓存方案,通过本地分布式缓存数据库的方式进行缓存加速。CaffeineCache是??一个基于JAVA8的高性能本地缓存组件。由于其更有效的淘汰算法和良好的易用性,在SpringBoot2.0的后续版本中被GoogleGuavaCache集成和替代。本文从最常用的get方法入口入手,结合源码,详述笔者在使用CaffeineCache过程中遇到的各种坑和思考,分享给大家,作为闭坑攻略。8《初探 Redis 客户端 Lettuce:真香》Jedis是业界常用的RedisJAVA客户端。Lettuce是一个基于Netty的异步客户端,不仅逐步涵盖了Jedis的各项功能,而且在可靠性、易用性、可扩展性和可维护性等方面都有了长足的进步。由于项目需要,笔者在部分场景切换到Lettuce进行开发,希望能提升类似Jedispipeline的批量查询性能。笔者在学习和踩Lettuce之后,将过程中遇到的各种关键点总结成一篇文章分享给大家。9《高并发场景下JVM调优实践之路》JVM调优是系统性能优化的重要手段之一,也是后端工程师最津津乐道的技术沉淀之一。网上已经有很多资料,但大多偏向于理论,并没有一步一步的落地细节。本文以实践为主,一步步介绍某线上核心服务的JVM调优实现过程,希望能为读者提供JVM调优的思路和解决方案,可以参考和实施。10《深入剖析共识性算法 Raft》分布式共识(distributedconsensus)是分布式系统中最基本的问题,用来保证分布式系统的可靠性和容错性。在Raft出现之前,Paxos是分布式共识算法的标准。Paxos很难理解,更难实现。Raft的设计目标是简化Paxos,使算法既易于理解又易于实现。TOP11-25从偶尔宕机深入理解Netty-Netty流控Netty是一个高性能的网络IO框架。本文结合长期在线连接的真实案例,深入描述Netty的流量控制原理和解决问题的思路和步骤。.Hystrix实战经验分享Hystrix是Netlifx的容错开源框架,防雪崩工具,具有服务降级、服务熔断、依赖隔离、监控(HystrixDashboard)等功能。本文从笔者个人开发的角度总结分享了使用Hystrix的心得,希望大家有所收获。Redis线程模型的前世今生Redis线程模型为什么要这样设计,有什么优缺点,有什么思路可以借鉴...本文从网络IO的历史说起,历史Reactor模型的设计,以及Redis线程模型的设计。深沉,缓缓。Dubbo分层设计思想源码解读Dubbo是一个非常优秀的分布式服务框架,在国内应用非常广泛。2018年正式成为Apache顶级项目。看完这篇文章,你将了解Dubbo整体的分层设计,每一层的含义,以及Dubbo的初始化过程和RPC调用过程。这个过程涉及到的领域模型Protocol、Invoker、Exporter、Invocation、Result、URL等。本文的特点是结合源码详细介绍每一层的实际含义。Kafka的万亿级消息实战这篇文章主要总结了我们需要具备哪些能力来保证集群高可用、高可靠、高性能、高吞吐、安全运行。这里的总结主要针对Kafka2.1.1版本。你的分库分表姿势正确吗?——详谈水平分库分表随着后端数据库存储级别和用户访问流量的提升,我们不可避免的需要对OLTP数据库进行分库分表操作,所以选择水平分库和表格分割方案变得非常重要。本文详细介绍了横向分库分表的一些常见误区,以及一些常用的方法,帮助识别可能出现的问题,少走弯路。亿级流量下,我与Redis小延迟的战斗史。本文记录一个在线服务和一个接口慢的告警解决过程,包括在线问题的应急预案和分析问题的思路,主要针对Redis响应慢时的分析和解决,通过问题解决过程的总结,希望能给大家一些参考。vivo全球商城:优惠券体系架构设计与实践优惠券是电子商务常用的营销手段,具有灵活的特点,可以作为促销活动的载体和吸引流量的重要入口。本文主要介绍了vivo商城优惠券业务的发展历程、架构设计思路以及应对各种业务场景的实践。Redis大集群扩容性能优化实践在现网环境中,一些使用Redis集群的业务随着业务量的增加,往往需要进行节点扩容操作。本文介绍了在大规模Redis集群扩容操作中遇到的性能问题、排查和优化过程。Dubbo作为Java语言的RPC框架的优势之一就是屏蔽了调用的细节,可以像调用本地方法一样调用远程服务。本文结合实际问题,梳理了hessian2框架的dubbo编解码链接和序列化逻辑。有助于提高Dubbo框架的学习、使用和故障排查。复杂场景下Java多线程上下文传递的实践海外商城从印度开始,逐渐会有其他国家的需求。这个时候就需要对现在的商城进行改造,可以支持多个国家的商城。这里会涉及到多个问题,多语言,多国家,多时区,本地化等等。本文介绍vivo海外商城开发过程中,为了适应多国商城系统的开发,如何将识别出的国家信息传递给系统,解决多线程、定时等多种场景下的问题任务。深入分析Lucene如何实现轻量级全文索引Lucene是一个开源的全文搜索引擎工具包,提供了完整的查询引擎和索引引擎,以及一些语言的文本分析引擎。本文介绍了使用Lucene的相关经验,涵盖了索引生成、管理和搜索功能等,深入分析了Lucene如何在轻量级数据搜索中实现全文索引。RocketMQ源码深入分析——消息存储模块消息队列是一种服务间的异步通信方式,广泛应用于微服务架构设计中的解耦、异步、调峰等场景。消息存储在队列中,直到它们被处理和删除。RocketMQ是阿里巴巴于2012年开源的第三代分布式消息中间件,本文主要从源码的角度介绍如何设计RocketMQ存储模块。亿级用户中心的设计与实践用户中心是互联网最基础的核心系统。随着业务和用户的增长,必然会带来持续的挑战。如何在亿级的情况下保证系统的高可用、高性能和高安全性,本文可以给大家提供一套切实可行的解决方案。vivo统一告警平台建设与实践在统一监控服务的背景下,告警收敛能力的降低是必然的。在平台建设过程中,如何解决以往服务的痛点,充分释放统一告警服务的通用能力,需要深入分析,才能更好地提取通用能力。文章以告警汇聚为主线,层层深入,介绍了统一告警平台的搭建与实践。2021年,我们仍将保持开放自由的态度,输出更多原创技术内容,加强文章在技术深度和实战经验方面的沉淀,希望与大家交流学习。
