Due to the advent of distributed systems, high concurrency (High Concurrency) usually refers to ensuring that the system can process many requests in parallel at the same time through design. In layman's terms, high concurrency means that at the same point in time, many users access the same API interface or URL address at the same time. It often occurs in business scenarios with a large number of active users and a high concentration of users.
The business logic for handling high concurrency is:
Front end: asynchronous request for resources after static cdn
End: request queue polling distribution load balancing shared cache
Data layer: redis cache data table write queue
Storage: raid array hot backup
Network: dns polling DDOS attack protection
Video course recommendation→:"Ten million-level data concurrency solution (theoretical and practical)"
php's method of dealing with high concurrency issues
1. Separation of applications and static resources
Place static resources (js, css, pictures, etc.) in a dedicated server .
2. Page caching
Caching the pages generated by the application can save a lot of CPU resources. For some pages that frequently change data, you can use ajax to process it.
3. Cluster and distributed
Cluster, multiple servers have the same functions and mainly play the role of diversion. Distributed, putting different businesses on different servers. Multiple servers may be needed to process a request, thereby increasing the processing speed of a request. It is further divided into static resource cluster and application cluster. The latter is more complicated, and issues such as session synchronization often need to be considered.
4. Reverse proxy
The server that the client directly accesses is not the server that directly provides services. It obtains resources from other servers and then returns the results to the user.
Proxy server and reverse proxy server:
The proxy server accesses resources on our behalf and then returns the results. For example, access the proxy server of the external network. The reverse proxy server is when we normally access a server, the server itself calls other servers.
We actively use the proxy server to serve us and do not need to have its own domain name; the reverse proxy is used by the server itself, and we do not know that it has its own domain name.
5. CDN
CDN is a special cluster page cache server. Compared with multiple page cache servers in an ordinary cluster, the main difference is: its storage location and allocation request method are different. .
CDN servers are distributed across the country. After receiving a request, it will be assigned to the most appropriate CDN server node to obtain the data. Each of its CDN nodes is a page caching server.
Distribution method:
is not an ordinary load balancing, but is allocated by a specialized CDN domain name resolution server when resolving the domain name.
The general approach is: ISP uses CNAME to resolve the domain name to a specific domain name, and then uses a dedicated CDN server to resolve the resolved domain name (return to the browser, and then access it) to the corresponding domain name. CDN node. Each node may also be clustered with multiple servers.
Recommended learning: PHP tutorial
The above is the detailed content of How does php handle high concurrency issues?. For more information, please follow other related articles on the PHP Chinese website!