Years go by, time flies, and 2021 has come to an end. In the past year, vivo Internet Technology has published a total of 107 articles, involving server, front-end, database and other technologies.
Today, I will take you to review our 25 most popular articles in 2021 (filtered by reading volume and likes).
1
"The Practice of MongoDB in the Commentary Center"
With the development of the company's business and the increase in the number of users, many projects are creating their own comment functions, and the business forms of comments are basically similar. At that time, each project was designed and implemented by itself, and there was a lot of repetitive workload; and there were isolated islands of data between different businesses, making it difficult to connect. Therefore, we decided to build a company-level review service center to provide quick access to review services for all business parties. This article mainly describes the technical exploration and practice of database design in vivo review platform.
2
"Explanation of Apache Dubbo's SPI Implementation Mechanism"
This paper mainly analyzes the implementation method and related principles of the SPI mechanism in Dubbo, analyzes the implementation details by interpreting the source code of the core class ExtensionLoader, and displays and summarizes the process details of using the extension class in each usage scenario.
3
"Cross-platform solutions for rich text and editors"
This article will focus on the rich text cross-platform and editor cross-platform two parts to introduce the value of cross-platform, and how to achieve cross-platform. Through some program introductions and sharing, I hope to bring some help to friends who have cross-platform requirements for rich text editors.
4
"How Design Patterns Improve the Scalability of vivo Marketing Automation Business | Engine 01"
The 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 company development, different user groups, and continuous effect fluctuations. . This article analyzes in detail how design patterns and related applications help marketing automation businesses improve system scalability, as well as the thinking and summary in the practice process.
5
"Take you into MySQL's new high availability solution-MGR"
MGR (full name MySQL Group Replication) is a new high-availability and high-expansion solution launched by Oracle MySQL in December 2016 with MySQL 5.7.17. This article mainly introduces the basic principles and technology evolution history of MySQL Group Replication (group replication) technology, as well as the new features of installation experience.
6
"In-depth analysis of Spring WebFlux"
WebFlux is an asynchronous non-blocking web framework. Internally based on the Reactor library, it can improve system throughput without expanding hardware resources. Suitable for IO-intensive services.
7
"How to use Caffeine Cache as smooth as silk"
User-oriented back-end services such as recommender systems usually require a multi-level caching scheme, and cache acceleration is performed through a local-distributed cache-database approach. Caffeine Cache is a high-performance local cache component based on JAVA8. Because of its more effective elimination algorithm and good ease of use, it has been integrated and replaced by Google Guava Cache in subsequent versions of Spring Boot 2.0. From the entry of the most commonly used get method, combined with the source code, this article breaks down the various pits and thoughts encountered by the author in the process of using Caffeine Cache, and shares it with you as a pit-closing guide.
8
Redis Client Lettuce: True Fragrance"
Jedis is a commonly used Redis JAVA client in the industry. Lettuce is an asynchronous client based on Netty. It not only gradually covers various functions of Jedis, but also has made great progress in reliability, ease of use, scalability, and maintainability. Due to the needs of the project, the author switches to Lettuce for development in some scenarios, and hopes to improve the performance of batch queries like the Jedis pipeline. After learning and stepping on Lettuce, the author summarizes the various key points encountered in the process into articles to share with you.
9
"The Road to JVM Tuning Practice in High Concurrency Scenarios"
JVM tuning is one of the important means of system performance optimization, and it is also one of the most talked about technical precipitations by back-end engineers. There is already a wealth of information on the Internet, but most of them tend to be theoretical, and there is no detailed implementation step by step. This article focuses on practice, and introduces step by step the JVM tuning and landing process of a core online service, hoping to provide readers with JVM tuning ideas and solutions that can be referenced and implemented.
10
" depth Analysis of Consensus Algorithm 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. Before Raft, Paxos was the standard for distributed consensus algorithms. Paxos is hard to understand and even harder to implement. The design goal of Raft is to simplify Paxos so that the algorithm is both easy to understand and easy to implement.
TOP 11-25
depth understanding of Netty - Netty flow control from occasional downtime
Netty is a high-performance network IO framework. This article combines the real case of online long connection to describe Netty's flow control principle and the ideas and steps for problem solving in depth.
Hystrix is a fault-tolerant framework open sourced by Netlifx, an anti-avalanche weapon, with functions such as service degradation, service fuse, dependency isolation, and monitoring (Hystrix Dashboard). This article summarizes and shares the experience of using Hystrix from the perspective of the author's personal development. I hope everyone can gain something.
The past and present of the Redis threading model Birth
Why is the Redis thread model designed this way, what are the advantages and disadvantages, and what ideas can be used for reference... This article starts from the history of network IO, the history of the Reactor model, and the design of the Redis thread model. .
source code interpretation of Dubbo layered design idea
Dubbo is a very good distributed service framework, which is widely used in China. In 2018, it officially became the top Apache project. After reading this article, you will understand the overall layered design of Dubbo, the meaning of each layer, as well as the initialization process and RPC calling process of Dubbo. The domain models involved in this process are Protocol, Invoker, Exporter, Invocation, Result, URL, etc. The characteristic of this article is to introduce the actual meaning of each layer in detail in combination with the source code.
Kafka trillion-level message combat
This article mainly summarizes what capabilities we need to ensure the high availability, high reliability, high performance, high throughput, and safe operation of the cluster when the Kafka cluster traffic reaches one trillion records/day or ten trillion records/day or even higher. . The summary here is mainly for the Kafka 2.1.1 version.
your posture of sub-library and sub-table correct? about horizontal sub-database sub-table 161e4dbbad81b7
As the storage level of the back-end database and the access traffic of users are increasing, we inevitably need to perform database and table partitioning operations on the OLTP database, so it is very important to choose a horizontal database and table partitioning scheme. This article introduces in detail some common misunderstandings in horizontal sub-database and sub-table, as well as some commonly used methods to help identify possible problems and avoid detours.
battle history with Redis's small
This article records an online service, the solution process for slow interface alarms, including emergency plans for online problems, and ideas for analyzing problems. It mainly focuses on the analysis and solutions when Redis responds slowly. In conclusion, I hope it can give you some reference.
Vivo Global Mall: coupon system architecture design and practice
Coupons are a common marketing tool for e-commerce. They are flexible and can be used both as a carrier for promotional activities and as an important entry point for traffic flow. This article mainly introduces the development process, architecture design ideas and practices of dealing with various business scenarios in vivo mall coupon business.
Redis large cluster expansion performance optimization practice
In the existing network environment, some businesses using Redis cluster often need to perform node expansion operations as the business volume increases. This article introduces the performance problems, troubleshooting and optimization process encountered in a large-scale Redis cluster expansion operation.
As an RPC framework in the Java language, one of the advantages of Dubbo is that it shields the call details and can call remote services just like calling local methods. Based on practical problems, this article sorts out the dubbo codec link and the serialization logic of the Hessian2 framework. Helps improve learning, usage, and troubleshooting of the Dubbo framework.
Java multi-threading context transfer in complex scenarios
Overseas malls start from India, and gradually there will be some demands from other countries. At this time, we need to make a transformation for the current malls, which can support malls in multiple countries. There will be multiple issues, multiple languages, and multiple countries. , multiple time zones, localization, and more. This article describes how vivo overseas malls can pass the identified country information in the system in order to adapt to the development of mall systems in multiple countries in the development process, and solve problems in various scenarios such as multi-threading and timed tasks.
depth analysis of how Lucene implements lightweight full-text indexing
Lucene is an open source full-text search engine toolkit that provides a complete query engine and indexing engine, as well as a text analysis engine for some languages. This article introduces the relevant experience of Lucene, covering the generation, management and search functions of the index, and my in-depth analysis of how Lucene implements full-text indexing in lightweight data search.
depth analysis of RocketMQ source code - message storage module
Message queue is an asynchronous communication method between services, which is widely used in scenarios such as decoupling, asynchrony, and peak shaving in microservice architecture design. Messages are stored on the queue until they are processed and deleted. RocketMQ is the third-generation distributed message middleware open sourced by Alibaba in 2012. This article mainly describes how to design the RocketMQ storage module from the perspective of source code.
The design and practice of the 100 million-level user
The 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 in the case of 100 million level, this article can give you a set of practical solutions.
Vivo unified platform for building alarms and practice
Under the background of unified monitoring service, it is inevitable that the alarm convergence ability will sink. In the process of platform construction, how to solve the pain points of the previous service and fully release the general capabilities of the unified alarm service requires in-depth analysis to better isolate it. general ability. This article takes the alarm convergence as the main line, and goes deep into it layer by layer, and introduces the construction and practice of the unified alarm platform.
In 2021, we will still maintain an open and free mentality, output more original technical content, and strengthen the accumulation of technical depth and practical experience in the article. We hope to communicate and learn from everyone.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。