Book Notes: Thinking in Systems - How to Face Complex Problems in Reality
The primary purpose of this book is to teach readers how to think more effectively when facing complex problems in reality. The book itself focuses on basic systems concepts, which are actually quite easy to understand. Additionally, the author provides numerous examples. When first reading this book, you might feel that the theory and practical examples are somewhat disconnected. But gradually you’ll realize that this topic is indeed not easy to explain in a way that’s easily accessible — it...
Common Patterns in Distributed System Design
Previously, I translated an article about distributed systems (https://lichuanyang.top/posts/3914/) which received positive feedback across various platforms. So I recently reorganized the related knowledge, combined with new insights gained over the past year, and rewrote this article. First, let’s clarify what kind of distributed systems we’re discussing here. Simply put, they need to satisfy two conditions: multi-node and stateful. Multi-node is straightforward to understand. Being state...
Are High-Concurrency Solutions Really That Hard? A Casual Guide to High-Concurrency Design
Does high request concurrency always lead to high-concurrency problems? Not necessarily. Imagine if our application were entirely in-memory — no matter how high the request volume, we could simply add more nodes to solve the problem, and there would be no so-called high-concurrency issue. High-concurrency problems exist because there are single-point bottlenecks in the system that cannot be resolved through brute-force scaling, which is why we need to find alternative solutions. In fact, in...
What Are SSP, DSP, RTB, and ADX? Understanding the Concepts and Evolution of Internet Advertising
In this article, I will introduce the current state of internet advertising and untangle the underlying logic of internet advertising, to help everyone better understand this industry. What Is AdvertisingWhen discussing internet advertising, we must first start with what advertising itself is. Only by understanding the underlying logic of advertising can we better understand what problems exist in internet advertising, why programmatic advertising trading emerged, why various systems like A...
From Redo Log and Undo Log to Isolation Levels: A Deep Dive into Database Transactions and ACID
Recently, I read Zhou Zhiming’s book “Phoenix Architecture” and gained deeper insights into many aspects of technology. I plan to make some summaries. Today, I’ll start with the section on transactions, combining content from the book with my own understanding, aiming to explain local transactions clearly and thoroughly. If there are any inaccuracies, I welcome corrections. A transaction ensures that data in the database remains in a valid state. Through continuous CRUD operations, the data...
Practical experience using kubernetes in java projects with low learning costs
Compared with large manufacturers, many start-up companies have a very important disadvantage that their infrastructure is imperfect and they do not have a variety of complete tools. Therefore, I plan to sort out how to build a development process with a good experience based on the capabilities provided by the open source community with as little operation and maintenance and development costs as possible. First, let’s sort out the necessary steps in the entire development process. I will ...
2021 in Upheaval — A Mid-Career Engineer's Year-End Review
2021 was a year of upheaval for me personally. A job I had planned to pursue long-term — one with excellent comfort and promising prospects — suddenly collapsed due to certain reasons. Consequently, I faced a critical crossroads regarding my future direction. At least so far, I feel I’ve made some correct choices. I’ve also made good progress on the personal growth goals I set at the beginning of the year. So I’m approaching this year-end review with a reasonably positive mindset. The bigge...
A Canary Release Approach in Kubernetes
Canary release is actually a process well-suited for cloud-native environments, so I believe many people have the need to perform canary releases under Kubernetes. In this article, we introduce a very simple approach to canary release. First, let me introduce what a canary release is. The name “canary” originates from the fact that miners discovered canaries are very sensitive to gas. Before descending into the mine, miners would send a canary down first. If the canary stopped singing, it i...
Prometheus Tutorial: Everything You Need to Know
As the “default” monitoring system in the cloud-native ecosystem, Prometheus is gaining increasing attention. Today, we’ll write a tutorial about Prometheus’s design philosophy, examining how it uses very simple designs to support such complex functionality. First, let’s think about what the challenges would be in building a monitoring system similar to Prometheus: Each service has different monitoring requirements. How should a monitoring system design its data model to balance ease of us...
Building a Simple High-Performance Java IP Address Country Lookup Tool
A very simple and high-performance tool for determining the country of an IP address. DataThe IP address database can be downloaded from http://download.ip2location.com/lite/. You can write a simple scheduled task to periodically pull the latest data. Since IP address updates are not very frequent, updating once a month or so is sufficient. Format123456789```...16781312,JP16785408,CN16793600,JP...``` The data format is shown above. Each line represents an IP address range, including the ra...














