我有一个 Spring Boot REST 微服务,它需要一个输入文件,并使用 ffmpeg 将该文件转换为其他格式,如下所示ffmpeg -i <INPUT_FILE> -vf 'scale=320:-2' <OUTPUT_FILE>
我目前正在Java ProcessBuilder中调用此命令,并在将微服务推送到PCF后引用输入和输出文件的容器位置。 ffmpeg 二进制文件和输入文件打包在jar
文件中 我知道我需要使用 NFS 或 S3 等云存储来指定位置,但现在这是次要问题。
我的想法是使微服务成为 PCF 用户提供的服务,以便绑定的应用程序将提供输入和转换文件的位置。 另外,由于存在不同的转换函数,因此每个转换函数都有相应的端点。
我看到的有关微服务的所有示例都与数据库有关,您可以在其中指定 URL 和凭据等信息来访问外部数据库, 这并没有揭示我的想法。
所以我有以下问题:
1( 是否可以简单地将正在运行的转换微服务转换为 PCF 用户提供的服务?我知道CUPS
命令,但我不确定提供什么作为参数,也因为我有几个端点
2( 绑定应用如何调用本服务的端点并提供输入和输出文件的位置。
如果可能的话,我将不胜感激
谢谢
你正在尝试做的事情应该是可能的,但不完全按照你描述的方式。
对于初学者,您可以使用用户提供的服务在应用之间传递有关微服务的详细信息。因此,如果创建转换微服务,则可以通过用户提供的服务将有关微服务的信息传递给使用应用。
我认为您需要稍微改变计划的地方是使用消费应用程序。您不能通过用户提供的服务传递输入/输出文件,至少不能在两者之间共享存储,并且您不想走这条路。这是有限制的,因为所有应用程序都必须共享存储,并且会有扩展限制。
相反,您要做的是将消费方所需的位置和凭据放在用户提供的服务中(这是您在数据库中看到的内容(。例如,可能需要微服务的主机名或路由,以及用户令牌/机密或用户名和密码(这样你就知道谁在向你的服务发出请求(。
然后,使用应用可以从绑定的用户提供的服务中读取信息,并使用它来联系转化微服务。此时,由使用应用来了解从微服务公开的 API,以便使用应用可以将要转换的文件发送到微服务并检索已处理的文件。您可能会通过 HTTP 发送/检索文件,如果我可以提出建议,您可能希望在您的服务上使用声明检查模式,因为进行转换可能很耗时。
希望对您有所帮助!