Many developers lack systematic thinking in software architecture design, and can only constantly explore and improve in trial and error and summary, which is painful and slow. Moreover, this way of promotion is easy to leave a knowledge blind spot. However, these problems are difficult to be supplemented by reading the source code.
This book is a systematic architecture book, which not only contains theoretical knowledge, practical skills and engineering schemes, but also systematically connects these knowledge to help you establish a complete knowledge system.
In this book, we will systematically introduce all aspects related to high-performance architecture from the point of “high-performance architecture”.
The book involves a lot of theoretical knowledge, and I try to make them easy to understand through examples; There are many architectural skills in the book, and I try to make them clear through summary. At the end of this book, we will develop a high-performance distributed permission system based on the architecture in the book.
From theoretical knowledge to architecture skills, and then to project practice, this book tries to give a complete knowledge system to guide you to complete the architecture design of high-performance systems.
Chapter 1 introduces the concepts of high performance and architecture. Including the specific indicators of high-performance representatives, the specific meaning and main contents of the architecture.
Chapter 2 introduces the shunt design. That is, how to use content distribution network, multi address direct connection, reverse proxy and other means to disperse users’ requests to different systems, so as to reduce the concurrency of each system.
Chapter 3 introduces the design related to service parallelism. Firstly, the concepts of parallelism and concurrency are introduced. Secondly, on this basis, it introduces cluster system, distributed system and micro service system. Including the characteristics and implementation difficulties of various systems. Service concurrent design can further divert the requests in the system, so as to improve the system performance.
Chapter 4 introduces the concurrency means of multi execution, multi threading and multi concurrency, and gives the corresponding examples. In particular, it deeply introduces the common multithreading, including thread state transformation, application scenarios, usage methods, collaboration methods, etc. The concurrency ability of the system can be significantly improved by computing concurrency design.
Chapter 5 introduces the input and output design. Firstly, the classification dimension and level of IO are introduced. Then, five common IO models are introduced in detail, including the evolution logic between these models, and the practical application examples of these models are given.
Chapter 6 introduces the means of database design and optimization. Starting from the most basic relational database design, this paper introduces the design paradigm and anti paradigm of relational database design. On this basis, it also introduces the principle and use conditions of various indexes, the characteristics of various locks, the generation and release of deadlocks, transactions and their isolation levels. At the end of the chapter, it also introduces how to optimize the database for massive data storage, as well as some non-traditional databases and database middleware.
Chapter 7 introduces the methods and skills of cache design. This chapter starts with the benefits of caching and deduces the methods to improve the benefits of caching. Then, on this basis, the specific implementation means to improve the cache revenue are given, including the design of cache elements, the design of update mechanism, the design of cleaning mechanism, the treatment of risk points, the design of location and so on. Finally, it also introduces the revenue calculation and practical scheme of write cache.
Chapter 8 introduces the relevant knowledge of system reliability design. Firstly, the concept and specific measurement indexes of reliability are introduced. Secondly, on this basis, the means to improve the reliability of the system are introduced. This chapter will help us build highly reliable systems.
Chapter 9 introduces the basic knowledge and practical means of application protection. These knowledge and means can improve the working conditions applied in emergencies.
Chapter 10 introduces the knowledge of front-end high performance. This is a relatively independent chapter. Firstly, the performance key points in the working process of the front end are analyzed. Secondly, according to these key points, the means of front-end performance optimization are given. It has strong generality and guidance.
Chapter 11 introduces the basic knowledge of architecture design style and software life cycle in architecture design. This knowledge will guide us to work on software architecture systematically.
Chapter 12 is a project practice. Based on the high-performance architecture knowledge introduced in the previous chapters, this chapter completely carries out the architecture of a high-performance software system, including theoretical derivation, model design, outline design, detailed design and other links, and shows readers a complete high-performance architecture process. The content of this chapter can help readers learn how to flexibly use the knowledge of the previous chapters in practice.
This book strives to integrate theory with practice. It not only gives the relevant theories and derivation of high-performance architecture, but also gives specific implementation strategies and skills. It also completes the architecture design of a high-performance software through project practice. I hope you can establish a complete knowledge system in the field of high-performance architecture after reading this book.