As time flies, 2021 has come to an end. In the past year, Vivo Internet technology pushed a total of 107 articles, covering server, front-end, database and other technologies.

Today, we take a look at our 25 most popular articles of 2021, filtered by number of views and likes.

1

MongoDB’s Practice in Reviewing the Middle Stage

As companies grow and users grow, many projects are building their own comment features, and the business shape of reviews is similar. At that time, each project was designed and realized independently, and there was a lot of repetitive workload. In addition, there are islands of data between different services, making it difficult to contact each other. Therefore, we decided to build a corporate-level review service center to provide quick access to review services for all business parties. This paper mainly describes the technical exploration and practice of Vivo Review center in database design.

2

Apache Dubbo SPI implementation mechanism

This paper mainly analyzes the implementation method and related principles of SPI mechanism in Dubbo, analyzes the implementation details by interpreting the source code of the core class ExtensionLoader, and shows and summarizes the details of the process of using the extended class in each use scenario.

3

Cross-platform Solutions for Rich Text and Editors

This article will introduce the value of cross-platform and how to achieve cross-platform by focusing on rich text cross-platform and editor cross-platform. Through the introduction of some schemes and trample sharing, I hope to bring some help to partners who have cross-platform requirements of rich text editor.

4

How to improve the mode of design vivo marketing automation business extensibility | engine 01″

Marketing business itself is extremely complex and changeable, especially with the booming trend of digital marketing, different marketing strategy decisions will be made in different periods of the market, different stages of the company’s development, different user groups and continuous effect fluctuation iteration. This paper analyzes in detail how design patterns and related applications help marketing automation business to improve system scalability, as well as the thinking and summary in the practice process.

5

New High Availability Solutions for MySQL -MGR

MGR(MySQL Group Replication) is a new high availability and high scale solution released by Oracle MySQL in December 2016 with the release of MySQL 5.7.17. This article introduces the basic principles, technical evolution and installation experience of MySQL Group Replication.

6

Spring WebFlux in Depth

WebFlux is an asynchronous, non-blocking Web framework. The internal Reactor base can improve system throughput without expanding hardware resources. This applies to IO – intensive services.

7

How to get your Caffeine Cache Silky smooth

User-oriented back-end services such as recommendation systems usually require a multi-level caching scheme, which is accelerated by a local-distributed cache-database approach. Caffeine Cache is a high-performance local Cache component based on JAVA8, which has been integrated with Spring Boot 2.0 to replace Google Guava Cache due to its more efficient elimination algorithm and ease of use. This article, based on the get method and the source code, gives a detailed description of the various problems encountered in the process of Caffeine Cache.

8

The Redis client Lettuce: Real Fragrance

Jedis is the Redis JAVA client commonly used in the industry. And Lettuce is an asynchronous client based on Netty, which not only gradually covers various functions of Jedis, but also makes great progress in reliability, ease of use, scalability and maintainability. Due to the needs of the project, the author changes to Lettuce development in some scenarios, and hopes to improve the performance of batch query like Jedis pipeline. After studying and stepping on Lettuce, I will summarize the key points in the process and share them with you.

9

“JVM Tuning Practices in High Concurrency Scenarios”

JVM tuning is one of the most important means of system performance optimization, and one of the most popular technologies for back-end engineers. There is a wealth of information available on the web, but most of it tends to be theoretical, and there are no step-by-step details. This paper focuses on practice, and introduces the process of JVM tuning landing of a core service step by step, hoping to provide readers with ideas and referable and practical solutions for JVM tuning.

10

In-depth Analysis of Consensus-based Algorithms Raft

Distributed consensus is the most basic problem in distributed systems, which is used to ensure the reliability and fault tolerance of a distributed system. Paxos was the standard for distributed consistency algorithms until Raft came along. Paxos is hard to understand and even harder to implement. Raft’s design goal is to simplify Paxos so that the algorithm is both easy to understand and easy to implement.

TOP 11-25

In-depth understanding of Netty- Netty traffic control through occasional outages

Netty is a high-performance network IO framework. Based on a real case of online long connection, this paper deeply describes the flow control principle of Netty and the thinking and steps of problem solving.

Hystrix experience sharing

Hystrix is an open source Netlifx fault-resistant framework that protects against avalanches, including service degradation, service meltdown, dependency isolation, and monitoring (Hystrix Dashboard). This article summarizes and shares the use experience of Hystrix from the author’s personal development perspective.

The past life of the Redis threading model

Why should Redis thread model be designed so, what advantages and disadvantages, what ideas can be used for reference… This paper starts from the history of NETWORK IO, Reactor model and design of Redis thread model.

Source code interpretation Dubbo layered design ideas

Dubbo is an excellent distributed service framework, which is widely used in China and officially became an Apache top-level project in 2018. In this article you will learn about the overall hierarchical design of Dubbo, the meaning of each layer, and the Dubbo initialization process and RPC Invocation process involved in the domain model Protocol, Invoker, Invocation, Result, URL, etc. The feature of this article is to introduce the practical significance of each layer in detail with the source code.

Kafka trillion level messaging combat

This article mainly summarizes what capabilities we need to ensure high availability, high reliability, high performance, high throughput, and safe operation of Kafka clusters when the traffic reaches trillionth records/day or ten trillionth records/day or higher. This summary focuses on Kafka version 2.1.1.

Are you holding your cards right? — Detailed discussion on the level sub-database sub-table

With the increasing storage scale of back-end database and user access traffic, it is unavoidable for us to carry out the operation of database and table of OLTP database, so it is very important to select a horizontal database and table scheme. This paper introduces in detail some common mistakes in the horizontal database and table, as well as some common techniques to help identify possible problems and avoid detachments.

The history of my battle with Redis under billion traffic

This paper records the process of solving an online service and slow interface alarm, including the emergency plan and thinking of analyzing problems encountered online, mainly focusing on the analysis and solution when Redis responds slowly. Through the summary of the problem solving process, I hope to give you some reference.

Vivo Global Mall: Design and practice of coupon system architecture

Coupon is a common marketing means of e-commerce, with flexible characteristics, can be used as a carrier of promotional activities, but also an important entrance to drainage. This paper mainly introduces the development process of Vivo mall coupon business, architecture design ideas and practice to deal with various business scenarios.

Redis large cluster capacity expansion performance optimization practice

In the live network environment, some services that use Redis cluster often need to perform node expansion as the service volume increases. This paper introduces the performance problems, troubleshooting and optimization process of a large-scale Redis cluster expansion operation.

Dubbo coding and decoding all that stuff

One of the advantages of Dubbo, as the RPC framework of the Java language, is that it shields the call details and can invoke remote services as if they were local methods. Based on practical problems, this paper combs dubbo codec link and Hessian2 framework serialization logic. Helps improve learning, use, and troubleshooting of the Dubbo framework.

Java multithreaded context delivery practices in complex scenarios

Overseas shopping malls start from India, and gradually there will be demands from other countries. At this time, we need to make a transformation for the current shopping mall, which can support shopping malls in multiple countries. There will be many problems, such as multi-language, multi-country, multi-time zone, localization and so on. This paper describes vivo overseas mall in the process of development in order to adapt to the mall system development of many countries, how to identify the national information in the system to pass down, and solve the problems of multi-threading, timing tasks and other scenarios.

How does Lucene implement lightweight full-text indexing

Lucene is an open source full text search engine toolkit, providing a complete query engine and indexing engine, partial language text analysis engine. This article introduces the relevant experience of Using Lucene, the content covers the index generation, management and search functions and I in lightweight data search, in-depth analysis of Lucene how to achieve full-text index.

An in-depth look at the RocketMQ source code – message storage module

Message queue is an asynchronous communication mode between services, which is widely used in decoupling, asynchronous, peak clipping and other scenarios in microservice architecture design. Messages are stored on queues until they are processed and deleted. RocketMQ is the third generation of distributed messaging middleware opened source by Alibaba in 2012. This article mainly describes how to design RocketMQ storage module from the perspective of source code.

Design and practice of 100 million user center

User center is the most basic core system of the Internet. With the growth of business and users, it is bound to bring constant challenges. How to ensure the high availability, high performance and high security of the system under the condition of hundreds of millions of levels, this article can give you a set of practical schemes.

Vivo unified alarm platform construction and practice

In the context of unified monitoring services, the sinking of alarm convergence capability becomes inevitable. In the process of platform construction, how to solve the pain points of previous services and fully release the universal capability of unified alarm service requires in-depth analysis to better extract the universal capability. This paper introduces the construction and practice of unified alarm platform by taking alarm convergence as the main line and going deep layer by layer.

In 2022, we will continue to keep an open and free mind, export more original technical content, and enhance the technical depth and practical experience of articles. We hope to communicate and exchange ideas with you.