Use of Akka HTTP, Akka gRPC and Cluster client

What is the use of Akka HTTP, gRPC and Cluster client ?

As per my understanding Cluster client used to communicate with other Clusters by creating receptionist.
I have red the documentation where ClusterClient.Send will deliver message to one recipient with a matching path, if any such exists. If several entries match the path the message will be delivered to one random destination.

But Instead of delivering it randomly I want to route the message, I should have the control on delivering the message instead of random delivery

Is it possible to do with cluster client or should I go with something else ?

I went through Akka HTTP and Akka gRPC and I didn’t get clear picture on what it is ?

Cluster client creates a quite tight coupling between the client and the cluster since it uses Akka remoting for messaging and requires the client to be an Akka app as well.

Akka HTTP and gRPC does a better job in providing a clear boundary between the cluster app and the client, since they use an explicit API/protocol that is separate from the messages in the cluster. I’d recommend reaching for one of those as a first option if possible.