Designing High‑Concurrency Websites: Architecture, Load Balancing & Performance Tips
This article reviews the evolution of the Internet and presents practical strategies for designing high‑concurrency, high‑traffic website architectures, covering mirror sites, CDN, layer‑4 switching, server and cache optimization, web server choices, database selection, and scaling and fault‑tolerance techniques.
1 Introduction
The Internet has grown from a static, research‑oriented network to a global platform delivering massive multimedia and dynamic services, demanding high performance, scalability, and availability for modern web applications.
2 High‑Traffic Site Architecture
2.1 Mirror Sites
Mirror sites duplicate a website across multiple servers with separate URLs, providing redundancy when the primary site fails. While they improve availability, they require synchronized updates and user awareness of multiple URLs.
2.2 Content Delivery Network (CDN)
CDN places content on edge servers close to users, distributing load and reducing latency. It selects the optimal edge server based on IP, bandwidth, and proximity, but requires synchronization for infrequently updated content and can suffer from DNS cache delays.
2.3 Application‑Level Distributed Design
Sina Podcast uses an interface that returns the optimal mirror server for video files, combining CDN speed with fine‑grained control and minimal additional traffic.
3 Exchange Layer Architecture
3.1 Layer‑4 Switching Overview
Layer‑4 switches route traffic based on IP address and TCP/UDP port (socket), allowing virtual IPs (VIPs) to represent server groups and providing session persistence.
3.2 Hardware Implementation
Commercial hardware such as F5 or Alteon offers high performance and flexible management but at a high cost.
3.3 Software Implementation
Linux Virtual Server (LVS) provides a cost‑effective software alternative with heartbeat‑based failover and flexible VIP configuration.
4 Server Optimization
4.1 Overall Performance Considerations
Identify bottlenecks among network, disk, memory, and CPU, and balance load to fully utilize server resources.
4.2 Socket Optimization
Linux kernel parameters can be tuned to improve TCP/IP stack performance.
/proc/sys/net/ipv4/tcp_window_scaling 1
/proc/sys/net/ipv4/tcp_sack 1
/proc/sys/net/ipv4/tcp_timestamps 1
/proc/sys/net/ipv4/tcp_mem "24576 32768 49152"
/proc/sys/net/ipv4/tcp_wmem "4096 16384 131072"
/proc/sys/net/ipv4/tcp_westwood 14.3 Disk‑Level Caching (Squid)
Squid caches HTTP objects on disk, reducing backend load and achieving high hit rates; configuration can be tuned for static content and cache expiration.
4.4 Memory‑Level Caching (Memcached)
Memcached stores objects in RAM across multiple servers, dramatically reducing database load; it is fast but data is lost on restart and requires careful security handling.
4.5 CPU‑IO Balancing
Distribute CPU‑intensive and IO‑intensive tasks across servers to avoid resource imbalance and enable graceful degradation under load spikes.
4.6 Read‑Write Separation
Separate disks for reads and writes, using RAID‑0 for performance or RAID‑1/5/6 for fault tolerance, and choose appropriate filesystems (e.g., ReiserFS for many small files).
5 Application Layer Optimizations
5.1 Web Server Choice
Apache offers robustness but can be heavyweight; Lighttpd provides lightweight static content handling and can be placed in front of Squid and Apache for a multi‑tier architecture.
5.2 Database Choice
MySQL is a fast, multi‑threaded open‑source database widely used in large‑scale sites; it supports replication and clustering for high availability.
5.3 Server‑Side Script Choices
Common options include ASP/.NET (Windows only), PHP (cross‑platform, often paired with Apache/MySQL), and JSP (Java‑based). Other languages such as Python or Perl are also viable.
5.4 Configurability
Separate logic from presentation using templates (e.g., Smarty, JSTL), modularize configuration files, and enable hot‑reloading to avoid service restarts.
5.5 Encapsulation and Middleware
Adopt MVC or similar layered architectures, encapsulate database access, and use frameworks to improve maintainability and scalability.
6 Scaling and Fault Tolerance
6.1 Scaling
Design for future capacity growth by modularizing storage, using configuration‑driven video location, and adding servers behind virtual IPs without code changes.
6.2 Fault Tolerance
Employ redundancy (RAID, dual‑master DB, clustered L4 switches), distribute data across regions, and implement user‑friendly error handling (e.g., custom 404 pages) to maintain 24/7 availability.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
21CTO
21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
