Achieving Real-Time in Distributed Computing: From Grids to Clouds