【发布时间】:2016-12-21 11:29:29
【问题描述】:
我想将新功能与基于 Laravel 的电子商务解决方案集成。此时主脚本运行大约需要 2.7 秒。整个网站加载在6s以上,我们刚刚开始监控它。我们的目标是让脚本低于 2 秒,所有内容低于 4 秒。
微服务和功能通过 gRPC 公开。
有一个基于 TLS 的客户端-服务器身份验证(电子商务实例和我的服务可以证明它们是谁)。这需要几毫秒。
在测试 Go-client 和 Go-server 时,使用 20 个连接池,每个请求的时间低于 35 毫秒。 在 PHP 中,每个请求需要 200 毫秒以上。
是否可以:
- 缓存请求之间的服务连接?
- 异步调用 RPC 方法?
在我正在考虑的其他解决方案中:
- 设置本地 gRPC 代理,该代理仅接受 PHP 脚本发出的 localhost GET 请求,并使它们成为安全的 gRPC 调用。
- 在PHP应用前设置代理调用微服务。
- 使用 JavaScript 直接从网站调用服务(给用户浏览器带来负担,需要维护 JavaScript)。
有什么建议吗?
【问题讨论】:
-
是的,一种方法是让用户感觉它加载得更快,而实际上并没有加快任何速度。只需拆分加载。快速加载something,然后用内容填充它。
-
该网站因一些 3rd 方增强解决方案而显得臃肿。让它快速工作还有很长的路要走。理论上可以快速加载零件,但实际上我作为用户觉得加载速度很慢。
-
您可以将 Varnish 设置为存储和其他 API 之间的缓存和故障转移层。作为额外的奖励,您可以使用 Varnish 来平衡 API 请求并充当流量管理器/路由器。一般来说(有点离题,抱歉): - 对于基于 PHP 的商店,除了(显然)使用 opcache、删除不必要的 .so 模块、将日志记录降至最低并使用最新版本可能。 - 以我使用 Magento 的经验为例,FPC 通过打孔 + 、doh、微调 MySQL 实现了轻松的性能提升。
-
要异步调用 RPC 方法,您只需创建一个 goroutine,使用
go method()