Design of Distributed Logging Service

We will now dive deep into designing the distributed logging system. Our logging system should log all activities or messages (we will not incorporate sampling ability into our design).

Requirements

Let’s list down the requirements for designing a distributed logging system.

Functional requirements

The functional requirements of our system are:

  • Writing logs: The services of the distributed system must be able to write into the logging system.

  • Searchable logs: Finding logs and finding the application’s flow from end-to-end should be effortless.

  • Storing logging: The logs should reside in distributed storage for easy access.

  • Centralized logging visualizer: The system should provide a unified view of globally separated services.

Non-functional requirements

The non-functional requirements of our system are:

  • Low latency: The logging is an I/O-intensive operation that is often much slower than CPU operations. We need to architect the system so that logging is not on an application’s critical path.

  • Scalability: We want our logging system to be scalable; handle the increasing amounts of logs over time and the growing number of concurrent users.

  • Availability: The logging system should be highly available to log the data into it.

Create a free account to access the full course.

By signing up, you agree to Educative's Terms of Service and Privacy Policy