Distributed systems are designed to offer benefits like incremental capability, user collaboration, and resilience against individual machine failures; however, they also face challenges related to coordination, data loss, and security vulnerabilities. The CAP theorem illustrates the trade-offs between consistency, availability, and partition tolerance, indicating that only two of these three can be achieved simultaneously. Depending on system priorities, this can lead to situations where data states diverge and require explicit resolution after network partitions.