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

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

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

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

跟踪分析下到底什么地方消耗时间多了,再来针对性的处理会更合理。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/432152

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX