Reactive principles promote responsive, resilient, and elastic microservices. At a macro level between services, this includes non-blocking communication using messaging and delegation. At a micro level within services, it involves non-blocking processing using futures, promises, and actors. Designing services for failure includes isolation, replication, circuit breakers, timeouts, and backpressure to prevent cascading failures. Services should also enable location transparency through discovery and load balancing.