为什么需要RPC,而不是简单的HTTP接口

http接口是在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便。利用现成的http协议进行传输。但是如果是一个大型的网站,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,

首先就是长链接,不必每次通信都要像http一样去3次握手什么的,减少了网络开销;

其次就是RPC框架一般都有注册中心,有丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作。

第三个来说就是安全性。最后就是最近流行的服务化架构、服务化治理,RPC框架是一个强力的支撑

RPC=Remote Produce Call 是一种技术的概念名词. HTTP是一种协议,RPC可以通过HTTP来实现,也可以通过Socket自己实现一套协议来实现.所以楼主可以换一个问法,为何RPC还有除HTTP之外的实现法,有何必要.毕竟除了HTTP实现外,私有协议不具备通用性.那么我想唯一的答案就在于HTTP不能满足其业务场景的地方,所以这个就要具体案例具体分析了.

TCP RPCHTTP RPC相比, TCP RPC的优势在哪里呢?一般说是性能问题,很多人说到http的头多了一些数据占用带宽,还有长连接的问题。事实是SPDY,http2已经是长连接了,做设计RPC的时候,不妨考虑http吧,使用http RPC有很多次管理上的好处,例如可以使用nginx,tengine做负载均衡,运营web网站的工具基本都是可以用的。有个大牛说,用http rpc可以很轻松做到7层网络,但是使用TCP RPC就蛋疼了。Google开源的gRPC就是基于http2设计的,我相信Google这样做是有原因的。在支持http长连接的环境下,使用TCP RPC不会有特别明显的优势。基于http的RPC完成可以让客户端直接访问,gPRC本身就支持了, http://www.infoq.com/cn/news/2015/03/grpc-google-http2-protobuf
很多东西仅仅从性能上思考是不够的,大家都说c/c++效率高,但是有些用c++设计出来的产品还不如java的性能好。单一层面思考的方案通常价值不大。所以我们应该多方面接触了解,不要过于偏执于语言。

 

 

Categories: Plus

发表评论 取消回复

placeholder.jpg

电子邮件地址不会被公开。

Name
Email
Website
What's on your mind?

近期文章
  • Maven deploy部署jar到远程私服仓库
  • java动态代理实现与原理
  • git 常用命令
  • java中观察者模式Observable和Observer
  • Netty解决TCP粘包和拆包问题的四种方案
近期评论
  • 马化腾发表在《Nginx的一些基本功能》
  • geyang发表在《世界,您好!》
  • 一位WordPress评论者发表在《世界,您好!》
分类目录
  • Big Data (5)
  • Java (27)
  • MicroServices (13)
    • GateWay (2)
    • REST (2)
  • Plus (38)
  • Spring (9)
    • Spring Boot (5)
    • Spring Data (4)
  • 中间件/框架 (5)
    • Kafka (3)
  • 数据库 (11)
    • Hbase (5)
    • MongoDb (2)
    • Mysql (3)
标签
apiDoc Drools dubbo fiddler Grafana hbase Hystrix IDEA java JDK jpa jvisualvm jvm kafka linux MongoDB MQTT Mysql Netty nginx OpenJDK Prometheus REST RocketMQ RPC Servlet Sleuth SOA spring boot spring data zookeeper Zuul 域名 微服务 数据结构 日志 爬虫 缓存 股票 设计模式 读书 运维 队列 集合 音乐
联系我

你可能感兴趣的:(为什么需要RPC,而不是简单的HTTP接口)