Building Scalable Network Services
Contents
Introduction
The human society has been entering a network-centered information era, in which users need access faster, more reliable and functional network services. The increasing popularity of the World Wide Web leads to an exponential growth in the Internet usage. More and more network sites have attracted traffic at an unprecedented scale, they often worry about how to scale up their systems over time to meet this increasing demand, and how their systems remain 24x7 available. Future applications will need higher throughput, interaction and security, which requires service platform provide more processing power and higher availability. Therefore, there is a need to provide a feasible framework and some design methodologies for constructing high-performance, highly scalable and highly available network services.
Architecture
The general system architecture of scalable network service is illustrated in the following figure:
It includes multiple layers of components:
- Global load balancing is used to distribute traffic to the nearest and/or fastest response node at edge layer
- Edge layer can have geographically distributed cache clusters to speed up content delivery
- Application layer can web clusters to process different web logics
- Memory cache layer can be used to speed up access of persistent data from database
- Storage layer can have database cluster and file storage cluster to store different types of persistent data.
Load Balancing
Global load balancing can use DNS-based approach to resolve domain name to the IP address of the nearest node among the geographically distributed nodes. See DNS load balancing for how to use bind 9 to do global load balancing.
Local load balancing can be used to build network service clusters at one physical location, such as web cluster and cache cluster. IPVS is an advanced load balancing solution in open source for this purpose.
Cache Layer
Application Layer
Persistent Data Layer
Conclusion
References
- LiveJournal's Backend: A history of scaling
- Wikimedia's (Cache) Network, http://www.nedworks.org/~mark/presentations/hd2006/
- Wikipedia network ideas, http://www.aulinx.de/oss/code/wikipedia/
- Scalable PHP with phpa, memcached and LVS (Part 1)
- Scalable PHP with APC, memcached and LVS (Part 2)
"Building Scalable Network Services" is a technology related stub. You can help LVSKB by expanding it |