V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xzour
V2EX  ›  程序员

内部系统如何优雅的管理各种第三方接口

  •  
  •   xzour · 16 天前 via Android · 1966 次点击
    最近内部系统有非常多的对接第三方的需求,之前只是写了个类,调用第三方接口,第三方事件结束后再调回我方接口。

    但是很多第三方接口其实是异步的设计,调用他不是立马返回成功,而是异步执行,完成之后要么我主动调他询问完成状态,要么就是他完成后调用我方接口告诉结果。saas 或者 paas 平台的好多都这种,导致这之间的对接不顺畅,异常也不好排查。

    那么内部系统怎么架构,可以更好的管理对接第三方的业务?
    12 条回复    2024-04-14 23:44:29 +08:00
    yangtianming
        1
    yangtianming  
       16 天前
    相同业务使用模板方法呗
    ShineyWang
        2
    ShineyWang  
       16 天前 via Android
    异常排查要靠日志啊
    每个客户记录全局 id 区分
    AlexTCX
        3
    AlexTCX  
       16 天前
    可以考虑统一对外发布一个网关,api 都从这个地方走
    litchinn
        4
    litchinn  
       16 天前
    事件驱动+路由,但是不清楚你的不顺畅点在于调用还是太多了导致混乱,如果是调用的话感觉没啥办法,调用第三方始终存在着一些网络,服务可用性等因素的影响

    dlmy
        5
    dlmy  
       16 天前
    如果项目需要对接非常多的第三方接口,建议做一个统一 API 出口网关,在出口网关中做好接口的路由和处理器的选择。

    比如:支持 sync 、async 、oneway 、callback 等各种调用方式,每个调用方式对应着不同的抽象处理器,根据要调用的第三方 API 接口,选择对应的处理器执行即可。

    这样,所有跟第三方对接的接口,全部在这个出口网关中进行管理了,再做个可视化的 UI 界面,展示一些调用指标跟监控数据就差不多了。
    xzour
        6
    xzour  
    OP
       16 天前
    @yangtianming 谢谢回答,但是不同的第三方属于不同的业务。
    xzour
        7
    xzour  
    OP
       16 天前
    @ShineyWang
    日志有记,但目前不够完整,还在优化哪些事件要埋点。
    xzour
        8
    xzour  
    OP
       16 天前
    @litchinn 太多了导致混乱,有些第三方需要组合几个接口一起才算完成一个业务流程,但是第三方每个接口成功失败,自己处理起来比较混乱,没有好的思路理清。
    xzour
        9
    xzour  
    OP
       16 天前
    @dlmy 统一出口网关是我想做的,目前还在构思,但是有个问题,网关各个调用,要不要带某个业务参数,方便失败重连。比如在业务上,ABC 三个接口按顺序调用组合成一个完成的业务流程,然后 ABC 的关系需不需要在网关体现,还是说返回业务系统中反查。
    GeekGao
        10
    GeekGao  
       15 天前
    还是多年前的 SOA 治理问题
    tyzandhr
        11
    tyzandhr  
       15 天前
    adapter 层呗,设计好 adapter 接口的行为
    xzour
        12
    xzour  
    OP
       15 天前 via Android
    @GeekGao 是的。一语中的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2793 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:48 · PVG 18:48 · LAX 03:48 · JFK 06:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.