python - 如何在微服务中存储版本化的 XSLT 文件

标签 python xml xslt openshift

目前我正在开发一个微服务来处理 XML(和其他格式,但目前这些并不重要)的转换。对于 XML 到 XML 的转换,我使用描述转换的 XSLT 文件。该 XSLT 引用了其他 XSLT 文件,一年后可能会有新版本。现在,微服务正在使用 kubernetes 提供服务的 Docker 容器内运行。 XSLT 现在嵌入到存储库中,从而嵌入到 docker 容器中,但如果我想更改某些内容,我必须重建并重新部署服务。为了解决这个问题,我找到了多种解决方案,但每种都有各自的缺点:

  1. 保持原样

    • (-) 难以使用新的 XSLT 或版本进行扩展
    • (+) 易于实现
  2. 将 XSLT 存储在数据库中

    • (-) 很难有效地引用其他 XSLT
    • (+) 轻松更新 XSLT 或添加新的 XSLT
    • (+) 与主代码存储库解耦
  3. 将 Pod 链接到持久卷

    • (-) 需要一个系统来处理新 XSLT 的上传
    • (+) 可用于版本 XSLT
    • (+) 与主代码存储库解耦

考虑到要添加新的 XSLT、必须能够更新旧的 XSLT,以及部署应该尽可能简单和顺利,最好的解决方案是什么。

最佳答案

这里还有两个可供考虑的选项:

  • 创建 configMap从 XSLT 文件中,将其挂载为卷,以便 XSLT 将成为容器内的文件。大小限制约为 1MB(由 etcd 规定),但 XSLT 文件不太可能那么大。

  • 将 XSLT 文件存储在 git 等代码存储库、nexus 等文件存储库或普通 Web 服务器中,并使用 init容器从存储库获取文件并将其放在 init 容器和应用程序容器之间共享的卷上。 This example可能是一个很好的起点。

关于python - 如何在微服务中存储版本化的 XSLT 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58628303/

相关文章:

python - 如何将字符串转换为函数调用?

java - 不将数据保存到数据库中。 Hibernate和Spring的连接

c# - 将字符串解析为 int,XSL 样式表内的 C#

json - 如何从 XSLT 中的 JSON 中提取数据?

xml - 如何解决此错误 "The element type "head"must be terminated > by the matching end-tag "</head>"?

javascript - 将每个 ajax 的数组发送到 python-server-script

python - scipy linprog 中的二元约束

python - 如何检测图像中的多个彩色区域并使用 Python OpenCV 为每个区域生成单独的裁剪?

Android/Eclipse/xml 文件过早结束

javax.xml.transform.TransformerFactory Unicode 问题 - Java