代码之家  ›  专栏  ›  技术社区  ›  Penelope

无状态乳胶渲染的Google Cloud Function vs Run vs App Engine?

  •  0
  • Penelope  · 技术社区  · 3 年前

    多年来,我一直没有开发基于云的应用程序,现在我对许多选择感到困惑。

    我需要云提供商(Google?)来启动虚拟机/容器/进程,以响应HTTP API调用。

    该容器将包含完整的LaTeX分发。它将被提供输入(文档、图表),并将运行latex编译器来创建PDF,该PDF将作为输出返回给API调用程序。

    该服务是无状态的——在每次调用之间,不需要记住任何内容。

    对于优化这样一个沉重而缓慢的过程,最好有

    • 可配置数量的热容器,可随时接受呼叫,但由于成本原因可减少到零,“可扩展到零”
    • 持久化容器以接受多个调用,并且只有在API请求中长时间暂停时才终止容器
    • 将乳胶应用程序拉入RAM的能力,以最大限度地减少已知的长启动时间

    而且

    • 为了减少通过API调用传递文档和图像,调用最好引用一个存储位置,实例可以连接到该存储位置并从中提取输入数据(并可能将渲染的PDF写回该存储位置)

    我知道我可以用通用的谷歌应用引擎来做到这一点,但我对谷歌云功能和云运行了解不够。我的理解是,Cloud Function不能运行像LaTeX这样的任意应用程序,只能提供与所提供的运行时相匹配的代码片段(java、js、python、go..)

    0 回复  |  直到 3 年前
        1
  •  0
  •   Bruno    3 年前

    事实上,我在寻找完全相同的东西。我想将HTTP请求和.tex内容一起发送到后端服务。此后端服务应在线构建(并存储)LaTeX pdf文件,并返回创建的pdf文件的URL。

    我认为Google Cloud Run(GCR)适用于此,但我还没有正确地将其固定化。首先,您需要在容器中安装LaTeX分发版,并以某种方式构建一个HTTP API服务器来处理传入请求。建议将GCR与谷歌云存储(GCS)连接,用于存储pdf和所有图片。。。你想包括在pdf里面。将它们存储一次似乎比将它们与每个HTTP请求一起发送要好得多。

    我已经从我的另一个项目中获得了一些GCR、GCS和Cloud功能的经验。然而,我还没能让LaTeX在线编译器服务正常工作。

    也许我们可以一起努力,试着把它启动并运行起来?