90年代的黄河路

Building Resilient and Fault-Tolerant Systems with Cell-Based Architectures

By Yury Niño Roa, translated by Liu Yameng, planned by DingXiaoyun

This article is part of the series Cell-Based Architecture: How to Build Scalable and Resilient Systems. In this series,we will embark on an exploration journey and provide a comprehensive overview and in-depth analysis of many key aspects of cell-based architecture, as well as practical suggestionsfor applying this approach to existing and new architectures.

Key Takeaways

  • Cell-based architectures enhance the resilience and fault tolerance of microservices.
  • Observability is crucial for developing and operating cell-based architectures.
  • Cellrouters are a critical component of cell-based architectures, requiring rapid response to changes in cell availability and operational health.
  • A comprehensive and integrated observability approach is necessary for successful adoption of cell-based architectures.
  • Cell-based architecturesleverage the same observability pillars as microservices, but need to be tailored to accommodate elements specific to this type of architecture.

Introduction

In recent years, cell-based architecture has emerged as a new paradigm, adopted by companies like Slack (migrating its most critical user-facing services from a monolithic architecture to acell-based one), Flickr (employing a federated approach to store user data in shards or clusters of many services), Salesforce (designing a Pod-based solution, self-sufficient and composed of 50 nodes), and Facebook (proposing a system containing service building blocks called cells, each consisting of a cluster, metadata store, and controller in Zookeeper). These companies have embraced this architecture to address challenges in resilience and fault tolerance. Its popularity stems from factors such as fault isolation, improved scalability, simplified maintenance, enhanced fault tolerance, flexibility, and cost-effectiveness.

In achieving resilience and fault tolerance, proponents of cell-based architectures have relied heavily on observability, which plays a vital role in supplementing implementation. Interact, for instance, is one of the early companies that demonstrated the critical importance of observability in ensuring a healthy cell-based architecture. Interact’s engineering team used observability to gain deep insights into system behavior, enabling themto proactively detect problems and facilitate faster recovery from failures. Specifically, they used the maximum number of managed clients and the maximum number of daily requests per cell to create new infrastructure based on their existing architecture.

This article delves into the resilience and fault tolerance advantages of adopting cell-based architectures, focusing on the observability aspect.This first part explores the fundamental concepts and benefits of cell-based architectures, highlighting their role in building robust and resilient systems.

Understanding Cell-Based Architectures

Cell-based architectures are a distributed system design pattern that divides applications into self-contained units called cells. Each cell is responsible for a specific business functionor a set of related services. Cells are designed to be independent and can be scaled, deployed, and managed independently of each other. This modularity promotes flexibility and resilience, allowing for independent upgrades and deployments without affecting other parts of the system.

The Role of Observability in Cell-Based Architectures

Observabilityis paramount in cell-based architectures, providing the necessary insights to manage and monitor these complex distributed systems effectively. It encompasses three key pillars:

  • Metrics: Quantitative data points that track the performance and health of cells, such as CPU usage, memory consumption, and request latency.
  • Logs: Textualrecords of events and actions within cells, providing valuable information for troubleshooting and debugging.
  • Traces: Detailed records of request flows through the system, offering insights into the performance and behavior of individual requests.

Benefits of Cell-Based Architectures

Cell-based architectures offer several advantages, including:

  • Improved Resilience: By isolating failures within individual cells, the impact of failures is contained, preventing cascading failures across the entire system.
  • Enhanced Fault Tolerance: Cells can be designed to be redundant, with multiple instances running simultaneously. If one instance fails, others can take over, ensuring continuous service availability.
  • Increased Scalability: Cells can be scaled independently, allowing for efficient allocation of resources based on demand.
  • Simplified Maintenance: Independent deployments and upgrades of cells streamline maintenance processes, reducing downtime and complexity.

Conclusion

Cell-based architectures are a powerful approach for building resilient and fault-tolerant systems. Byleveraging the principles of modularity, independence, and observability, these architectures provide a robust foundation for modern distributed applications. In the subsequent parts of this series, we will delve deeper into specific aspects of cell-based architectures, including cell design, deployment strategies, and best practices for ensuring optimal performance and resilience.


>>> Read more <<<

Views: 0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注