Recently in Reading Li Zhihui montana << Large Web site technology architecture-core principles and case studies, the third section mentioned the core architectural elements of large web sites, the feeling of benefit, summed up very in place. After reading, immediately summed up, is also a book on their own, painting a summary of the end. In general, in addition to focusing on functional requirements, the architecture is more important to focus on non-functional requirements, such as performance, usability, scalability, scalability. And once the architecture is decided, it is generally difficult to change, so I am required to architect from the outset to design a performance, usability, scalability, scalability, architecture. Before this, you need to understand what is performance, availability, scalability, scalability. Many of these concepts and meanings are confusing. Below, the author on a popular science, what is the performance of the Web site system, availability, scalability, scalability.
Performance (performance)
Performance is the ability of a Web site to handle the performance of a user's request at the same time. Different vision, there are different forms of performance indicators usually include, response time, concurrency, throughput, and performance counters.
Where throughput and performance counters are more difficult to understand,
Throughput actually refers to the number of requests processed by the system during the unit time. TPS (number of transactions per second), HPS (number of HTTP requests per second), QPS (number of queries per second), and so on. Performance is generally resolved by caching. A performance counter that describes a set of metrics for a server or operating system, including the number of objects and threads, memory usage, CPU usage, disk and network I/O, and so on. Improve the performance of the site, a lot of means, such as browser access optimization, CDN acceleration, reverse proxy, distributed caching, using clustering, code and data structure optimization, storage performance optimization.
Availability (availability)
Usability is the probability or time share expectation that the system can run normally during a certain time of inspection. The study time is a specified moment, then it is called instantaneous usability; the time of the visit is the specified period, and the period availability is called. It is a measure of the equipment in use after the actual use of efficiency, is the equipment or system reliability, maintainability and maintenance of the integrated characteristics of support. In large Web application systems, metrics are generally used to denote the availability of services in several 9来.
High availability generally through load balancing, data backup, failure transfer, improve software quality, especially when the quality of the release to achieve and guarantee.
Scalability (scalability)
Scalability, is a software system calculation and processing capacity of the design indicators, high scalability represents a flexible, in the system expansion and growth process, the software can guarantee exuberant vitality, through little changes or even just hardware equipment, can achieve the entire system processing capacity of linear growth, Achieve high throughput and low latency performance.
Vertical scalability-adding resources to the same logical unit to improve processing power. Examples include adding CPUs to an existing server or adding a hard disk to an existing Raid/san store to increase the amount of storage. Horizontal scalability--add more resources to logical units and make them work like a unit. Most cluster scenarios, distributed file systems, and load balancing are helping you improve scalability across the landscape
Scalability, generally through DNS domain name resolution load balancing, reverse proxy load Balancing, IP load Balancing, data link layer load balancing, improve and improve the distributed caching algorithm, the use of NoSQL database scalability and so on. Scalability (Extensibility)
Scalability, which is often confused with scalability. In the software category, it is the property of the software system itself, or the attribute of the design, or the property of the code. Because we often say the scalability of the design, the scalability of the code. It can be said that the loose coupling of the system design.
Implementation: Generally through the event-driven architecture and distributed architecture to achieve a Web site system scalability.