大佬们,帮我看看我这个情况适合用 RPC 吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
c0011
V2EX    服务器

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

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

    服务器是 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     Solana     2589 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 13:41 PVG 21:41 LAX 06:41 JFK 09:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86