Underlying system architecture of high-traffic and high-concurrency websites

Source: Internet
Author: User

 

Dynamic applications refer to dynamic applications based on C/C ++, PHP, Java, Perl, and ,. net and other network application software developed in server languages, such as forums, online albums, dating, and blogs. Dynamic application systems are often inseparable from database systems, cache systems, and distributed storage systems.

The large-scale dynamic application system platform is mainly designed for the underlying system architecture of Large-stream and high-concurrency websites. The operation of large Websites requires a reliable, secure, scalable, and easy-to-maintain application system platform to ensure the stable operation of website applications.

Large Dynamic application systems can be divided into several subsystems:

L Web Front-end system

L Load Balancing System

L data base cluster system

L slow Storage System

L Distributed Storage System

L Distributed Server Management System

L Code Generation Distribution System

Web Front-end system

Structure:

 

 

To share servers of different applications, avoid spof, centralized management, and unified configuration, all servers are used in a unified manner instead of servers, each server can provide services for multiple applications. When the access volume of some applications increases, the performance of the entire server cluster can be improved by adding server nodes, which also benefits applications. The Web Front-end system is based on a virtual host platform such as Apache, Lighttpd, and eg.pdf, and provides a PHP program running environment. The server is transparent to developers and does not require developers to intervene in server management.

Server Load balancer System

 

 

 

Server Load balancer systems are divided into hardware and software. Hardware load balancing is efficient, but expensive, such as F5. The software Server Load balancer system is cheaper or free of charge, and the efficiency is lower than that of the hardware Server Load balancer system. However, the software Server Load balancer system is sufficient for websites with medium or higher traffic, such as LVS and nginx. Most websites use hardware and software Load Balancing systems.

Database Cluster System

Structure:

 

 

 

Because the Web Front-end adopts the Server Load balancer cluster structure to improve the service validity and scalability, the database must be highly reliable to ensure the high reliability of the entire service system, how to build a highly reliable database system that can provide large-scale concurrent processing?

We can use the following solution:

1) when using the MySQL database, taking into account the characteristics of the database for Web applications that read more and write less, we mainly optimized the read database and provided a dedicated read database and write database, read operations and write operations are performed in the application to access different databases respectively.

2) use the MySQL replication mechanism to quickly copy the database of the master database (write database) to the slave database (read database ). A master database corresponds to multiple slave databases, and data in the master database is synchronized to the slave database in real time.

3) There are multiple write databases, each of which can be used by multiple applications. This can solve the performance bottleneck and spof problems of the write database.

4) there are multiple read databases, and load balancing is achieved through the load balancing device, so as to achieve high performance, high reliability and high scalability of the read database.

5) The database server and Application Server are separated.

6) Use bigip for Load Balancing from the database.

Cache System

 

 

 

Cache can be divided into File Cache, memory cache, and database cache. Memory Cache is the most frequently used and efficient in large web applications. The most common memory cache tool is memcachd. Using the correct cache system can achieve the following goals:

1. Using a cache system can improve access efficiency, server throughput, and user experience.

2. ease access pressure on databases and storage set servers

3. There are multiple memcached servers to avoid spof, provide high reliability and scalability, and improve performance.

Distributed Storage System

Structure:

 

 

 

The storage requirements on the web system platform have the following two features:

1) the storage capacity is large, which often reaches the scale that a single server cannot provide, such as photo albums, videos, and other applications. Therefore, a professional large-scale storage system is required.

2) each node in the Server Load balancer cluster may access any data object, and each node's data processing can also be shared by other nodes, therefore, the data to be operated by these nodes can only be a whole logically, rather than independent data resources.

Therefore, a high-performance distributed storage system is an important part of large-scale website applications. (A brief introduction to a distributed storage system is required here .)

Distributed Server Management System

Structure:

 

 

 

As Website access traffic increases, most network services provide external services in the form of a server Load balancer cluster. As a result, the scale of clusters expands, in the past, the single-host server management model could not meet our needs. New requirements must be centralized, grouped, batch, and automated for server management, execution Plan tasks that can be quantified.

There are some excellent software in the distributed server management system software, one of which is the cfengine. It can group servers. Different Groups can customize system configuration files, scheduled tasks, and other configurations. It is based on the C/S structure. All server configuration and management scripts are stored on the cfengine server, and the managed server runs the cfengine client program, cfengine client regularly sends requests to the server through SSL encrypted connections to obtain the latest configuration files and management commands, script programs, patch installation, and other tasks.

With cfengine, a centralized server management tool, we can efficiently implement large-scale server cluster management. The managed servers and cfengine servers can be distributed anywhere, as long as the network can be connected, quick and automatic management can be achieved.

Code Publishing System

Structure:

 

 

As Website access traffic increases, most network services provide external services in the form of a server Load balancer cluster. As a result, the scale of clusters expands, to meet the batch distribution and update of program code in the cluster environment, we also need a program code publishing system.

This release system can help us achieve the following goals:

1) servers in the production environment provide services in the form of virtual hosts, without the need for developers to intervene in maintenance and direct operations. The publishing system can deliver programs to the target server without logging on to the server.

2) to manage the four development stages of internal development, internal testing, production environment testing, and production environment release, the release system can be involved in code release at each stage.

3) We need to implement source code management and version control. SVN can achieve this requirement.

You can use common tools rsync to develop script tools for Code Synchronization and distribution between Server clusters.

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.