【问题标题】:Spring Boot File Conversion Microservice as a Cloud Foundry User-provided ServiceSpring Boot 文件转换微服务作为 Cloud Foundry 用户提供的服务
【发布时间】:2019-08-18 16:17:51
【问题描述】:

我有一个 Spring Boot REST 微服务,它需要一个输入文件并使用 ffmpeg 将此文件转换为其他格式,如下所示 ffmpeg -i <INPUT_FILE> -vf 'scale=320:-2' <OUTPUT_FILE>

我现在在 Java ProcessBuilder 中调用此命令,并在将微服务推送到 PCF 后引用输入和输出文件的容器位置。 ffmpeg 二进制文件和输入文件打包在jarfile 我知道我需要使用 NFS 或 S3 等云存储来指定位置,但现在这是次要问题。

我的想法是让微服务成为 PCF 用户提供的服务,以便绑定的应用程序将提供输入和转换文件的位置。 另外因为有不同的转换函数,所以我对每个转换函数都有对应的端点。

我看到的所有关于微服务的示例都与数据库有关,您可以指定 URL 和凭据等信息来访问外部数据库, 这并没有说明我的想法。

所以我有以下问题:

1) 是否可以简单地将正在运行的转换微服务转换为 PCF 用户提供的服务?我知道CUPS 命令,但我不确定作为参数提供什么,因为我有几个端点

2) 绑定App如何调用这个Service的endpoints并提供输入输出文件的位置。

如果可能的话,我会很感激代码 sn-ps

谢谢

【问题讨论】:

    标签: spring-boot microservices cloud-foundry


    【解决方案1】:

    您尝试做的事情应该是可能的,但并不完全像您描述的那样。

    对于初学者,您可以使用用户提供的服务在应用之间传递有关微服务的详细信息。因此,如果您创建转换微服务,您可以通过用户提供的服务将有关微服务的信息传递给消费应用。

    我认为您需要稍微改变计划的是消费类应用。您不能通过用户提供的服务传递输入/输出文件,至少不能在两者之间共享存储,并且您不想走那条路。这是有限制的,因为所有应用程序都必须共享存储空间,并且会有扩展限制。

    相反,您想要做的是将消费方所需的位置和凭据放入用户提供的服务中(这就是您在数据库中看到的)。例如,您可能需要微服务的主机名或路由,还可能需要用户令牌/密码或用户名和密码(这样您就知道谁在向您的服务发出请求)。

    然后,您的消费应用可以从绑定的用户提供的服务中读取信息,并使用该信息联系您的转换微服务。此时,由消费应用程序了解您从微服务公开的 API,以便消费应用程序可以将要转换的文件发送到微服务并检索处理后的文件。您可能会通过 HTTP 发送/检索文件,如果我可以提出建议,您可能希望考虑在您的服务上使用 claim check pattern,因为进行转换可能很耗时。

    希望有帮助!

    【讨论】:

    • 那么您实际上是在说: 1) 将存储位置(say NFS or S3)URI 和凭据 指定为用户通过CUPS 提供的转换服务的参数2) 让消费应用程序从vcap_services 变量中检索此信息,并使用它将输入文件传递给端点 3) 消费应用程序应该去相同的位置以通过另一个端点检索转换后的文件。非常感谢您的确认!
    • 1) Specify the URI and Credentials of the storage location (say NFS or S3) -> S3 或兼容 - 是。 NFS/SMB - 不完全是。您不能将这些与用户提供的服务一起使用。您的 CF 提供者需要安装 NFS/SMB 服务代理,因为需要以特殊方式配置服务,以便基础将请求的卷安装到您的容器中。否则,是的。这就是它的要点。
    • 谢谢三草先生。您一如既往地非常乐于助人,感激不尽
    猜你喜欢
    • 1970-01-01
    • 2016-10-05
    • 2018-03-28
    • 2020-02-14
    • 2019-03-22
    • 2016-10-26
    • 2019-02-15
    • 2022-01-15
    • 2022-11-07
    相关资源
    最近更新 更多