Design of large-scale high-performance ASP. NET System Architecture
The large-scale dynamic application system platform is mainly designed for the underlying system architecture built for high-traffic 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:
Web Front-end system
Server Load balancer System
Database Cluster System
Cache System
Distributed Storage System
Distributed Server Management System
Code Distribution System
Web Front-end system
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 virtual host platforms such as IIS/ASP. NET 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
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 SQL databases, taking into account the features of the database of 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 synchronization 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
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
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 Distribution System
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.
From: http://www.cnblogs.com/yanyangtian/archive/2011/02/09/1950299.html