V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
c0011
V2EX  ›  服务器

大佬们,帮我看看我这个情况适合用 RPC 吗?

  •  
  •   c0011 · 2019-09-02 09:38:10 +08:00 · 4610 次点击
    这是一个创建于 1942 天前的主题,其中的信息可能已经有所发展或是发生改变。

    服务器是 C++写的。卖的时候要把服务器部署到客户公司内部。比如卖到两个公司 A,B。然后 A 服务器下的客户端可能只在 A 服务器内部互相通信。也有可能在 A 上的客户端与在 B 上的客户端通信。

    现在的问题是跨 A B 通讯的时候比较麻烦,都是异步操作。 比如 A 去问 B 服务器客户端 b 的状态,然后 B 服务器查询完 b 的状态再返回给 A。 A 收到 B 的返回信息再从 callbacks 里找到正确的 callback,进行调用。

    像这种用 rpc 技术是最适合的方式吗? 还有更好的方式吗?

    先谢过了!

    5 条回复    2019-09-02 10:53:35 +08:00
    BingoXuan
        1
    BingoXuan  
       2019-09-02 09:57:25 +08:00 via Android
    当你通过网络调用其他机器的服务时候,其实就是一种 rpc
    0NF09LJPS51k57uH
        2
    0NF09LJPS51k57uH  
       2019-09-02 10:14:47 +08:00
    RPC 只是一种通讯方式,与 RPC 同等概念的还可以是你们自己封装的私有协议,以及 HTTP 等公用协议,你们这个场景我觉得用不用 RPC 不是关键,只是一种通讯方式而已,关键是保证通讯的可靠性。你们的产品是直接让客户间进行通信吗。。你们自己没有服务器吗?所有的流量都走到你们这边来啊,监控和运维都好办一点,哪端有异常都能及时发现。
    c0011
        3
    c0011  
    OP
       2019-09-02 10:34:58 +08:00
    @phantomzz 跨服务器的时候,客户端都是通过服务器收发数据的,不允许客户端直接通讯。还有跨服务器通讯的时候,发起方是主服务器。因为是跨服务器,主服务器需要通过次服务器来获取到次服务器上的客户端的状态。
    ----
    主要还是想降低程序开发复杂度,自己设计协议需要很多异步操作,还需要保存很多 callback,感觉挺麻烦的。
    c0011
        4
    c0011  
    OP
       2019-09-02 10:35:50 +08:00
    @BingoXuan 那跨服务器通讯标准做法是什么样啊?
    robot1
        5
    robot1  
       2019-09-02 10:53:35 +08:00
    有一个 c++的协程框架 libgo,可以使用 go 风格的协程,解决掉了回调问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1725 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 16:36 · PVG 00:36 · LAX 08:36 · JFK 11:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.