Recently read this book, memory is not good, so generally remember a few pens. This book is relatively simple, and a lot of content has been used in the project basically:
Chapter II Architectural Level:
System tiering (business layer, service tier, data tier)
Business cutting (such as cutting search, advertising, forums independently, and even continuing to cut the search)
Distributed: Distributed applications and services (such as systems Cut above), distributed static resources (dynamic separation), distributed data and storage (e.g. NoSQL products), distributed computing, Distributed file systems, distributed locks, distributed configurations, etc.
Clustering: To ensure high availability
Caching: CDN, reverse proxy, application local cache, distributed cache (Redis, memcached)
Async: Own common activemq, improve usability (hang up and nothing), improve response speed (customer feel no delay), eliminate peak (because the queue one by one consumption)
Redundancy: Master-Slave, dual-machine hot-standby, offsite disaster preparedness (offsite disaster preparedness has not done)
Automation: Automated failover is implemented with Nginx or zookeeper, and Jenkins automates build, test, publish, and mail notifications. Consider upgrading the log system to automated monitoring and alerting. More advanced are automated demotion, allocation of resources, automated security scans (these few have not been done).
Security: Do password, cell phone verification Code, verification code, Xss/csrf/sql injection and so on, encryption of wind control.
Chapter III
Performance:
Browser cache, compress, layout, reduce COOKIE,CDN, server use cache, async, cluster, multi-threading, optimized memory, SQL, index, NoSQL
Availability of:
Is nothing more than caching, real-time synchronization, session sharing
Flexibility:
Application server (into stateless session sharing, support unlimited scaling), cache server (can be used consistent hash), database (this is not very familiar, the source of the original relational database is difficult to achieve large-scale cluster scalability, must be implemented outside the database, A cluster of servers deploying multiple databases by means of soft-routing partitioning, NoSQL (MongoDB can shard shards and clusters)
Scalability:
This has been considered relatively small, generally only the decoupling of the various modules are considered. "The main means of the web's extensibility architecture are event-driven and distributed services," says the source, "event-driven, such as JMS, which transparently increases consumers and producers." Distributed services separate the business and reusable services, and are called through the Distributed service framework. New products can implement their own business logic by invoking reusable services (much like ESB services), while reusable service upgrades can be transparently upgraded by version number without forcing existing applications to synchronize changes (this is obviously an ESB).
Security: This water is deep, transmission, encryption, forgery, theft, attack, all levels.
Read the core principles and case studies of large web site technology architecture