If one disk fails on a given Alluxio worker, the Alluxio client on the application side will detect from either the failure or a timeout, then the client will check other workers serving the same data block since one block may have multiple replicas cached in Alluxio space and go to other workers to continue reading.
If there is no extra worker serving this block, this client will go to the under store to read the data. This entire retry process is hidden from application and users.
You can read more technical specifics in our documentation on scalability tuning.