Design a scalable real-time notification system that can deliver millions of notifications to users across various devices with low latency. Focus on the architecture for efficient message routing, strategies for handling different notification types, and ensuring reliable delivery. Address challenges like handling offline users, push notification integration, and scaling the system to handle sudden spikes in traffic.