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

PHP 如何更好的方式调用其他服务?

  •  1
     
  •   blue7wings · 2018-02-24 11:22:20 +08:00 · 4644 次点击
    这是一个创建于 2463 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因为现在业务依赖其他同事的服务,如何更好的调用呢?
    起初,我是用 HTTP 请求完成的,速度跟不上,后来发现谷歌的 GRPC 也是比较好的解决方案,稍微复杂了点,有没有更好更优雅的解决方案呢?
    25 条回复    2018-02-25 10:57:07 +08:00
    owenliang
        1
    owenliang  
       2018-02-24 11:44:05 +08:00
    http 协议最佳,至于是否在协议之上做微服务框架,那是另一码事。
    askfilm
        2
    askfilm  
       2018-02-24 11:47:25 +08:00
    thrift
    gouchaoer
        3
    gouchaoer  
       2018-02-24 11:51:56 +08:00   ❤️ 2
    如果你在 fpm 里面跑的话用 http 去调用别人的服务就阻塞了,流量一大就会死得很惨
    xiaohuokevin
        4
    xiaohuokevin  
       2018-02-24 11:52:03 +08:00
    m
    gouchaoer
        5
    gouchaoer  
       2018-02-24 11:52:52 +08:00
    http、grpc、thrift 都没区别。。。重要的是这个服务的返回时间,时间快还行
    gouchaoer
        6
    gouchaoer  
       2018-02-24 11:53:22 +08:00
    swoft、swoole1.x 的几大框架看看吧
    picasso250
        7
    picasso250  
       2018-02-24 13:56:00 +08:00
    一个 HTTP 请求多少 ms 完成?
    有多少量?

    楼主你把详细数据发出来呀.
    noFear
        8
    noFear  
       2018-02-24 13:59:06 +08:00   ❤️ 1
    本质上 php 只适合 http 的服务调用,因为没有共享内存可以保持连接做熔断和降级等操作,使用 tcp 并不会带来什么明显的好处,当然如果使用 swoole 的话是可以的,但又想了想那还不如用 golang 开发呢,学习成本也很低。
    noFear
        9
    noFear  
       2018-02-24 13:59:47 +08:00
    @gouchaoer 一般 curl 都会设置合理的超时时间吧
    blue7wings
        10
    blue7wings  
    OP
       2018-02-24 14:45:56 +08:00
    @owenliang
    @askfilm
    @gouchaoer
    @noFear

    谢谢各位的建议,我去了解一下,谢谢。
    shiny
        11
    shiny  
       2018-02-24 14:57:03 +08:00
    延时太大的接口需要考虑后台队列处理
    dawniii
        12
    dawniii  
       2018-02-24 15:14:36 +08:00
    @gouchaoer 如果你在 fpm 里面查询 mysql 的话就阻塞了,流量一大就会死得很惨。。。🤣
    sfree2005
        13
    sfree2005  
       2018-02-24 15:19:58 +08:00 via Android
    你已经把可以异步的都异步了吗? 我用 laravel 的时候会用 queue,一样是 HTTP,没有实质加快请求速度,但用户体验好很多。
    gouchaoer
        14
    gouchaoer  
       2018-02-24 16:05:31 +08:00
    @dawniii mysql 和 redis 返回比较快,可以允许阻塞,甚至 http/rpc 之类的如果你能保证返回比较快也允许,否则
    sagaxu
        15
    sagaxu  
       2018-02-24 16:08:11 +08:00
    @gouchaoer swoole 2.x 才是最佳选择,1.x 的 callback 写法不友好
    p2pCoder
        16
    p2pCoder  
       2018-02-24 16:08:46 +08:00
    thrift 吧,各种语言都有实现
    gouchaoer
        17
    gouchaoer  
       2018-02-24 16:10:29 +08:00
    @sagaxu swoft 马上就出 1.0 版本了,腾讯的 tsf3 估计吹了,现在全国的 phper 都在等待 swoft,mmp
    skyjerry
        18
    skyjerry  
       2018-02-24 17:46:24 +08:00 via iPhone
    @gouchaoer 你从哪里得知全国的 phper 都在等 swoft ?
    sunmonster
        19
    sunmonster  
       2018-02-24 18:09:52 +08:00
    json-rpc 调试方便,速度跟不上跟协议有点关系,但是应该关系不大,可以用 go 写服务,然后用 php 去调用
    akira
        20
    akira  
       2018-02-24 18:19:30 +08:00
    感觉你的问题不是换个接口或者协议就可以解决的。

    跟踪分析下到底什么地方消耗时间多了,再来针对性的处理会更合理。
    gouchaoer
        21
    gouchaoer  
       2018-02-24 19:28:44 +08:00 via Android
    @skyjerry why so serious
    g079708
        22
    g079708  
       2018-02-24 22:40:19 +08:00 via iPhone
    @gouchaoer mmp 是什么
    kslr
        23
    kslr  
       2018-02-24 23:07:40 +08:00
    走消息隊列泡個 php cli 如何哦
    lolizeppelin
        24
    lolizeppelin  
       2018-02-25 01:16:15 +08:00 via Android
    fast cgi 就老老实实走短时间可以完成的接口
    xiaoli88
        25
    xiaoli88  
       2018-02-25 10:57:07 +08:00
    http
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1023 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:51 · PVG 06:51 · LAX 14:51 · JFK 17:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.