Large and High PerformanceASP. NETSystem Architecture Design
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.
SeriesArticleLink:
Build high performanceASP. NETSite Opening
Build high performanceASP. NETOne site Analyze the page processing process (front-end)
Build high-performance ASP. Net Site 2 optimize HTTP requests (front-end)
Building a high-performance ASP. Net site depends on the three details
Building a high-performance ASP. Net Site Chapter 5-Performance Tuning Overview (previous)
Design of large-scale high-performance ASP. NET System Architecture
Building a high-performance ASP. Net Site Chapter 5-Performance Tuning Overview (Part 1)
Building a high-performance ASP. Net Site Chapter 5-Performance Tuning Overview (Part II)
Building a high-performance ASP. Net Site Chapter 6-performance bottleneck diagnosis and preliminary optimization (Part 1)-identifying performance bottlenecks
Build a high-performance ASP. Net Site Chapter 6-performance bottleneck diagnosis and preliminary optimization (next article)-simple Optimization Measures
Building a high-performance ASP. Net Site Chapter 6-performance bottleneck diagnosis and preliminary optimization (next article)-reducing unnecessary requests
Building a high-performance ASP. Net Site Chapter 7 how to solve memory problems (previous article)-Managed Resource Optimization-in-depth analysis of the garbage collection mechanism
Building a high-performance ASP. Net Site Chapter 7 how to solve memory problems (previous article)-Managed Resource Optimization-monitor CLR Performance
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
WebFront-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.
TheWebFront-end system based onIIS/ASP. NETProvidesPHPProgramRunning 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. High Hardware load balancing efficiency, but expensive, suchF5. The software Server Load balancer system is cheaper or free, 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 higher or higher traffic, suchLVS, nginx. Most websites use hardware and software Load Balancing systems.
Database Cluster System
BecauseWebThe front-end adopts the Server Load balancer cluster structure to improve the service validity and scalability. Therefore, 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)UseSQLDatabase, consideringWebThe application database has the features of reading, writing, and less data. We mainly optimize the read database and provide a dedicated read database and write database, read operations and write operations are performed in the application to access different databases respectively.
2)UseSynchronizationMechanism to quickly migrate 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 issues 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 from databaseBigipLoad balancing.
Cache System
Cache can be divided into File Cache, memory cache, and database cache. In largeWebThe memory cache is the most used and most efficient in applications. The most common memory cache tool isMemcachd. Using the correct cache system can achieve the following goals:
1The cache system improves access efficiency, server throughput, and user experience.
2Reduces the access pressure on databases and storage set servers.
3,MemcachedThere are multiple servers to avoid spof, provide high reliability and scalability, and improve performance.
Distributed Storage System
WebThe storage requirements on the 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)Server Load balancerClusterEach node in 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, it is not an independent data resource.
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.)
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 idealCfengine. It can group servers. Different Groups can customize system configuration files, scheduled tasks, and other configurations.
It is based onC/SAll server configuration and management scripts are stored inCfengine ServerAnd the managed server is runningCfengine ClientProgram,Cfengine ClientPassSSLEncrypted connections regularly send requests to the server to obtain the latest configuration files and management commands, script programs, patch installation, and other tasks.
WithCfengineWith this centralized server management tool, we can efficiently implement large-scale server cluster management, managed servers andCfengine ServerIt can be distributed anywhere and can be quickly and automatically managed as long as the network can be connected.
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)Production Environment servers provide services by means 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)We need to implement internal development, internal testing, production environment testing, production environment release4Development stage management, the publishing system can be involved in the code release of each stage.
3)We need to implementSource codeManagement and version control,SVNThis requirement can be fulfilled.
Common tools can be used hereRsyncTo implement Code Synchronization and distribution between server clusters by developing corresponding script tools.