PubSub 和 gRPC PHP 的速度

Posted

技术标签:

【中文标题】PubSub 和 gRPC PHP 的速度【英文标题】:Speed of PubSub and gRPC PHP 【发布时间】:2016-09-03 17:02:54 【问题描述】:

我们正在试验将 PubSub 作为作业队列,并从 Google Cloud 中的实例运行我们的试验。

我们目前面临的问题是在 PubSub 中建立连接和创建作业大约需要 300ms-700ms。我们正在运行 php,因此不幸的是,对于每个传入的请求,都需要建立到 PubSub 的新连接(至少对于面向前端的代码而言)。这是 PubSub 服务的预期速度,还是我们可能做错了什么?

另一个问题是关于 PubSub 的 gRPC,这看起来很有希望,但我似乎找不到任何文档或示例代码来开始在 PHP 环境中进行试验。我发现的唯一示例似乎适用于 AppEngine,它使用的类似乎在 AppEngine 之外不可用。

我希望在这两种情况下,我都缺少一些东西,我真的很想使用 PubSub。

更新:我通过在客户端设置缓存部分解决了这个问题。但是还是200ms-500ms

【问题讨论】:

当您说“建立连接”时,您是什么意思?这是发布调用?拉电话?您在什么环境中运行您的 PHP 代码?这是 GCE 实例还是托管在 Google Cloud Platform 之外的服务器? 我的意思是推送调用的完整周期,因此与 API 建立 https 连接并发送数据。我们正在使用 PHP-FPM:5.6 从本地网络、阿姆斯特丹的数据中心和 GCE(实际上是通过容器引擎)实例对其进行测试。我们在这个星期五重新进行了测试,现在所有来源的一切似乎都很好(总时间 【参考方案1】:

您现在可以将 PubSub + gRPC 与 Google Cloud PHP PubSub SDK (composer require google/cloud-pubsub) 一起使用。请参阅official documentation 了解更多信息。

如果您确实使用 gRPC,请务必同时安装 protobuf extension,而不是使用原生 PHP 实现。如果没有扩展,gRPC 实际上比 REST。安装 protobuf 扩展:

pecl install protobuf

【讨论】:

以上是关于PubSub 和 gRPC PHP 的速度的主要内容,如果未能解决你的问题,请参考以下文章

运行 pipenv install grpc-googlep-pubsub-v1==0.11.1 时出错

拉谷歌 PubSub 消息时 io.grpc 帧大小超过最大值

通过grpc c#客户端调用_publisherClient.PublishAsync时如何设置RetryPolicy(对于PubSub)

为 GCP IOT Core 和 PUB/SUB 运行 cloudiot_pubsub_example_server.py 代码时出现 403 错误

我怎样才能使用 Python 从 Google Pub/Sub 中以足够快的速度阅读

PubSubException:io.grpc.StatusRuntimeException:不可用