zoukankan      html  css  js  c++  java
  • 服务接口,选择rpc还是http?

    从通信内容/功能上看

    http应用于web环境,rpc应用于分布式调度
    从功能上看没有太大区别,很多情况下rpc与消息中间件结合通信实现分布式调度

    从用法上看
    两者都是c/s结构,无太大区别

    从实现上看
    类型 底层协议

    从性能上看
    1、听说rpc是长链接,http是三次握手。
    长链接虽然,可以减少tcp开销,相对的它会导入新的缺点,是否会对连接数数量有限制呢?

    2、假如rpc的性能比http高,无非就是socket多连接了三次。如果http结合非阻塞io服务器(例如tornado),这三次连接开销真没啥消耗。
    当然网络也会有一点消耗. 非阻塞io服务器可以将rpc与http的性能差距拉平

    从链接开销上,比较性能问题,本就是错误,两者是在解决不同问题,所有没有必要在这个问题上纠结。请继续看下面

    从概念上看
    rpc远程调用
    http超文本传输协议

    该如何选择呢?
    1、思考这个问题,应该用最简单的方式,相信协议设计者,会选择最好方式来解决它面临的问题(毕竟协议代表着公认),我们只用关注它解决什么问题。
    rpc解决什么问题呢?远程调用。“调用”属于程序内部之间。调用总不可能只传简单参数,会涉及到对象序列化,
    这个对象在开发是代码总不会用两套吧,server与client很可能是在一起的属于一个组件.

    2、连接数不该是”调用”考虑的事。在创建一个全局连接后,不会再频繁创建连接. 如果rpc作为服务,频繁连接的场景不适合它

    总结
    1、c与s关系紧密程度
    rpc远程调用,属于程序内部之间,cs关系密切。
    http,适合不同组件, cs关系独立。

    2、连接数
    rpc叫调用,频繁连接的场景不适合它
    http的应用的web环境,本就是频繁连接的场景

  • 相关阅读:
    golang基础之第一个go程序
    golang基础之工程结构
    golang基础之初识
    Prometheus神器之监控K8s集群
    Kubernetes使用GlusterFS实现数据持久化
    Go使用Makefile构建
    快排的2种分区图解
    密钥交换之DH算法
    go mod使用
    socket常见选项之SO_REUSEADDR,SO_REUSEPORT
  • 原文地址:https://www.cnblogs.com/Jansens520/p/11646258.html
Copyright © 2011-2022 走看看