Three solutions to high concurrency are: 1. System splitting, splitting a system into multiple subsystems; 2. Cache, one of the important factors for high performance in all modern computer systems; 3. MQ (Message queue), a "first in, first out" data structure in the basic data structure.
The operating environment of this tutorial: Windows 7 system, Dell G3 computer.
1: System splitting, split a system into multiple subsystems, use dubbo to do it. Then each system is connected to a database, so there was originally one database, but now there are multiple databases, so that it can resist high concurrency.
2: Cache, you must use cache. Most high-concurrency scenarios involve more reading and less writing. Then you can write a copy in both the database and the cache, and then use the cache in large quantities when reading. After all, redis can easily run tens of thousands of concurrencies on a single machine. no problem. So you can consider how to use caching to resist high concurrency in scenarios that carry major read requests in your project.
Video Course Recommendation →: "Concurrency Solution for Tens of Millions of Data (Theoretical and Practical)"
3: MQ (Message Queue), MQ must be used. You may still encounter high-concurrency writing scenarios. For example, in a business operation, you need to frequently access the database dozens of times, adding, deleting, modifying, adding, deleting, and modifying. It's crazy. That high concurrency will definitely kill your system. If you use redis to host and write cache, it will definitely not work. The data will be LRU (the least frequently used ones are eliminated) at any time. The data format is extremely simple and there is no transaction support. So when you should use mysql, you have to use mysql. What should you do? Use MQ. A large number of write requests are poured into MQ, queued and played slowly. The system will then write slowly after consumption, and control it within the load range of mysql. So you have to consider how to use MQ to write asynchronously and improve concurrency in scenarios that carry complex writing business logic in your project. It is OK for a single MQ machine to withstand tens of thousands of concurrencies.
Extended information:
Another three methods for dealing with high concurrency
Sub-database and sub-table
Maybe at the final database level, it is still It is inevitable to resist high concurrency. Well, then split a database into multiple libraries to resist higher concurrency; then split a table into multiple tables, and the data volume of each table remains the same. A little less to improve the performance of sql running.
Separation of reading and writing
This means that most of the time the database may read more and write less. It is not necessary for all requests to be concentrated on one library. You can create a master-slave architecture, the main library Write, read from the library, and separate reading and writing. When there is too much read traffic, you can add more slave libraries.
solrCloud
SolrCloud (solr cloud) is a distributed search solution provided by Solr, which can solve distributed full-text retrieval of massive data. Because it has built a cluster, it has high availability features. Perform master-slave backup of data to avoid single point of failure. Data can be restored quickly. And new nodes can be added dynamically, and then the data can be balanced to achieve load balancing.
For more computer-related knowledge, please visit the FAQ column!
The above is the detailed content of What are the three solutions to high concurrency?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Zend Studio 13.0.1
Powerful PHP integrated development environment

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),
