HTTP是通信协议,RPC是一种开发方式,他可以基于HTTP协议(比如gRPC),也可以基于其他协议,比如更基础的TCP
通信协议的选择只是RPC实现中的一小部分,更重要的一部分是编码协议。比如json/xml属于文本编码,还有二进制字节编码,比如protoful,thrift。http对比tcp,最诟病的就是多余的头信息,而且还是使用的文本编码,造成整个数据包体积过大。不过据说http2改进很多,修改为二进制编码了,还支持多路复用,gRPC就是基于http2实现的。
至于restful,其实他本身是一套将资源对象化的设计标准,不过目前都作为技术实现再用,本身又分为严格的和非严格的。从目前上来说restful接口可以认为是一种基于http使用json编码的RPC实现,但还是本身restful是设计规范,更多的是约束资源的访问获取手段,不应当用于复杂的函数调用。
最后前后端,目前javascript也有json-RPC,ajax-RPC一类的更专注于函数调用的RPC实现,可以基于HTTP,也可以基于websocket,如果目的是函数调用,你可以试用一下,会比使用restful舒服很多。