重新思考 RepoAuth
为什么RepoAuth很难
** 很难解释**,因为它混淆了运行代码和源文件之间的关系. 对于许多PHP商店来说,部署模式很简单:您通过将源文件复制到您的生产服务器来部署代码(无论是JavaScript,CSS,还是PHP). 您通过更改源文件更新代码 。 与 RepoAuth 相比,您需要有一个PHP代码变化的心理模型,这个模型不同于您如何思考对前端代码和其他静态资产的修改.
也很难在一个广域网上同步大型二进制文件. 许多PHP商店都依赖基于rsync算法的文件同步工具,这非常高效地推出位置更新到源树上,但不能推出HHBC回波. 这使得代码部署缓慢. 还要注意避免网络拥堵.
对许多人来说,** 迁移到RepoAuth要求丧失迅速回滚不良部署或向生产中的虫子部署热处理器的能力**。 在没有这种安全网的情况下进行连续交货,需要非同寻常的良好的连续集成和软件测试基础设施。 或者通过拥有不寻常的良好的部署基础设施来保留安全网,使用动态的,可编程的负载平衡层和容器来提供快速回滚和错开的代码部署. 我期待着将来的标准是这些标准,但目前相当罕见。 {\fn方正粗倩简体\fs12\an8\1cHFFFF00\b0}如何让雷波奥特更容易
提供某种混合模式是理想的,HHVM在解释器模式中起步,但仍然进行昂贵的优化,通常保留给RepoAuth模式. 一旦一个文件被翻译出来,它不会被从磁盘上重新读取(即使它被触取/被修改了). 但HHVM会响应一个信号,这将会促使它重新解释代码,接收任何更改. 类似于Apache在'SIGUSR1'上优雅地重新加载了行为.
当我在“hhvm”上提出这个建议时,一些开发商权衡了执行这个计划需要什么。 挑战似乎是如何在不重新开始的情况下优雅地卸下认证模式的重播,以及如何优雅地结转现有的剖面数据。
@fredemmott和@Orvid建议通过在HHVM实例之间增加一个通过JIT剖析数据的机制来完成这项工作. 如果有可能,则可以通过生成一个新的HHVM实例,传递剖面数据,然后利用接管功能进行再加载. @paulbiss表示, 重新使用剖面数据已经在改善暖和时间的行进图上, 关于如何通过剖析数据而不将内存要求增加一倍的问题出现了。 保罗建议HHVM可以踩踏旧代码,并指出已经可以选择垃圾收集未使用的翻译.
内容来源: facebook/hhvm