【问题标题】:How to call microservice without slowing down the response?如何在不减慢响应的情况下调用微服务?
【发布时间】:2016-12-21 11:29:29
【问题描述】:

我想将新功能与基于 Laravel 的电子商务解决方案集成。此时主脚本运行大约需要 2.7 秒。整个网站加载在6s以上,我们刚刚开始监控它。我们的目标是让脚本低于 2 秒,所有内容低于 4 秒。

微服务和功能通过 gRPC 公开。

有一个基于 TLS 的客户端-服务器身份验证(电子商务实例和我的服务可以证明它们是谁)。这需要几毫秒。

在测试 Go-client 和 Go-server 时,使用 20 个连接池,每个请求的时间低于 35 毫秒。 在 PHP 中,每个请求需要 200 毫秒以上。

是否可以:

  1. 缓存请求之间的服务连接?
  2. 异步调用 RPC 方法?

在我正在考虑的其他解决方案中:

  1. 设置本地 gRPC 代理,该代理仅接受 PHP 脚本发出的 localhost GET 请求,并使它们成为安全的 gRPC 调用。
  2. 在PHP应用前设置代理调用微服务。
  3. 使用 JavaScript 直接从网站调用服务(给用户浏览器带来负担,需要维护 JavaScript)。

有什么建议吗?

【问题讨论】:

  • 是的,一种方法是让用户感觉它加载得更快,而实际上并没有加快任何速度。只需拆分加载。快速加载something,然后用内容填充它。
  • 该网站因一些 3rd 方增强解决方案而显得臃肿。让它快速工作还有很长的路要走。理论上可以快速加载零件,但实际上我作为用户觉得加载速度很慢。
  • 您可以将 Varnish 设置为存储和其他 API 之间的缓存和故障转移层。作为额外的奖励,您可以使用 Varnish 来平衡 API 请求并充当流量管理器/路由器。一般来说(有点离题,抱歉): - 对于基于 PHP 的商店,除了(显然)使用 opcache、删除不必要的 .so 模块、将日志记录降至最低并使用最新版本可能。 - 以我使用 Magento 的经验为例,FPC 通过打孔 + 、doh、微调 MySQL 实现了轻松的性能提升。
  • 要异步调用 RPC 方法,您只需创建一个 goroutine,使用 go method()

标签: php laravel go grpc


【解决方案1】:

【讨论】:

  • 谢谢。我知道这一点,我想知道是否有人找到了一些解决方法。
猜你喜欢
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
  • 1970-01-01
  • 2018-01-19
  • 1970-01-01
  • 2017-07-17
相关资源
最近更新 更多