Bird
0
0
LLDsystem_design~25 mins

Why elevator design tests state machines in LLD - Design It to Understand It

Choose your learning style9 modes available
Design: Elevator Control System
Design the elevator control logic focusing on state transitions and request handling. Out of scope: physical elevator mechanics and hardware details.
Functional Requirements
FR1: Manage elevator movements between floors
FR2: Handle multiple requests from different floors and inside the elevator
FR3: Ensure safe and efficient operation
FR4: Respond correctly to door open/close commands
FR5: Handle emergency stop and maintenance modes
Non-Functional Requirements
NFR1: System must respond to requests within 200ms
NFR2: Support up to 10 floors and 4 elevators
NFR3: Ensure 99.9% uptime for elevator control
NFR4: Must prevent conflicting commands that cause unsafe states
Think Before You Design
Questions to Ask
❓ Question 1
❓ Question 2
❓ Question 3
❓ Question 4
❓ Question 5
Key Components
State machine to represent elevator states
Request queue management
Event handler for button presses and sensors
Safety and emergency modules
Design Patterns
Finite State Machine (FSM)
Event-driven architecture
Command pattern for request handling
Observer pattern for sensor updates
Reference Architecture
  +---------------------+
  | Elevator Controller |
  +----------+----------+
             |
   +---------v---------+
   |   State Machine   |
   +---------+---------+
             |
   +---------v---------+
   | Request Queue     |
   +---------+---------+
             |
   +---------v---------+
   | Motor & Door Ctrl |
   +-------------------+
Components
Elevator Controller
Custom logic module
Coordinates elevator operations and manages state transitions
State Machine
Finite State Machine implementation
Represents elevator states like Idle, MovingUp, MovingDown, DoorOpen, DoorClosed, Emergency
Request Queue
Priority queue data structure
Stores and prioritizes floor requests from users
Motor & Door Control
Hardware interface module
Executes commands to move elevator and open/close doors
Request Flow
1. User presses floor button inside elevator or on a floor panel
2. Request is sent to Elevator Controller
3. Controller adds request to Request Queue
4. State Machine checks current state and decides next action
5. If idle, State Machine transitions to MovingUp or MovingDown based on request
6. Motor & Door Control receives commands to move elevator or open/close doors
7. Sensors update State Machine on arrival at floors or door status
8. State Machine transitions to DoorOpen state to allow passenger movement
9. After door closes, State Machine checks for next request or returns to Idle
10. Emergency or maintenance events trigger special states to halt operations safely
Database Schema
Entities: - Elevator: id, current_floor, current_state - Request: id, floor_number, direction, timestamp - State: name, allowed_transitions Relationships: - Elevator has many Requests - State defines allowed transitions for Elevator states
Scaling Discussion
Bottlenecks
Handling many simultaneous requests causing queue congestion
State machine complexity increasing with more floors and elevators
Latency in sensor updates affecting state accuracy
Ensuring safety under hardware failures or emergency conditions
Solutions
Implement request batching and prioritization to reduce queue size
Modularize state machine per elevator to reduce complexity
Use real-time sensor data streaming with fallback checks
Add redundant safety checks and fail-safe states in state machine
Interview Tips
Time: 10 minutes to clarify requirements and constraints, 20 minutes to design state machine and data flow, 10 minutes to discuss scaling and safety considerations, 5 minutes for questions
Explain why elevator behavior fits well with state machines
Describe key states and transitions clearly
Show how requests are managed and prioritized
Highlight safety and emergency handling in design
Discuss scaling challenges and practical solutions