High‑Performance Thinking and Optimization Practices for Backend Systems
This article defines software performance as executor + (process + IO + computation), explains when performance should be considered, and presents a comprehensive framework of executor, I/O‑type, and generic optimizations—including concurrency, sharding, caching, compression, async, batching, and algorithmic improvements—supported by cross‑domain case studies.
High performance, high availability, scalability, maintainability and security are core concerns for backend engineers. The article starts by defining software performance as an abstract non‑functional attribute and refines it to the concrete formula Performance = Executor + (Process + IO + Computation), illustrating the roles of the executor (CPU, process, or machine), the workflow, and the work performed.
It then discusses when performance should be taken into account, distinguishing the traditional three‑stage development lifecycle (design, pre‑release testing, runtime monitoring) from the emerging DevPerfOps model that embeds performance activities throughout the entire software development pipeline.
The core of the article is a systematic guide to achieving high performance, organized into three major categories:
Executor optimizations : improve executor quality (better hardware) and quantity (concurrency), use sharding to reduce contention, and split large tasks into smaller subtasks. Case studies include parallel environment construction in the Noah platform and redundant request handling.
I/O‑type workflow optimizations : employ caching (local and centralized), compression (lossless and lossy), and illustrate practical examples such as browser/DNS caching, Nginx memory cache, Tomcat page and MyBatis caches, MySQL query and buffer‑pool caches, and HTTP gzip compression.
Generic workflow optimizations : adopt the “only‑necessary‑steps” principle, use asynchronous processing, batch/merge operations, reuse resources via pooling, transfer work to more suitable stages, and apply algorithmic improvements. Detailed examples cover async client calls, MySQL relay logs, SMS verification, Kafka batch messaging, Redis AOF rewrite, Java constant pool, and connection pools.
Each optimization idea is accompanied by concrete examples from different layers (hardware, JVM, Go, databases, messaging systems) to demonstrate the universality of the concepts.
The article concludes by summarizing the performance definition, when to consider it, and the multi‑dimensional optimization framework, providing readers with a mental model to systematically improve backend system performance.
Reference materials include MySQL documentation, "The Tail at Scale", and several Chinese and English books on computer systems and software architecture.
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.
Qunar Tech Salon
Qunar Tech Salon is a learning and exchange platform for Qunar engineers and industry peers. We share cutting-edge technology trends and topics, providing a free platform for mid-to-senior technical professionals to exchange and learn.
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.
