根据我所看到的,在Spring Cloud Dataflow(SCDF)中创建流将部署基础应用程序,绑定通信服务(如RabbitMQ),设置Spring Cloud Stream环境变量并启动应用程序。可以使用cf push命令轻松地手动完成所有操作。

同时,我一直在遇到Spring Cloud Dataflow的一些缺点:


SCDF Server是PCF上的内存占用器(我的流只有6个应用程序,但是我需要大约10GB的服务器空间)
在应用程序命名,内存,实例等方面没有灵活性(通常在manifest.yml中设置的所有内容)
与构建工具(如Bamboo)的集成将需要额外的工作,因为我们必须使用SCDF CLI而不是PCF CLI
现有流无法修改。要进行蓝绿色部署,您必须手动部署应用程序(绑定服务并手动设置环境变量)。然后,一旦蓝绿色部署完成,SCDF会将流显示为“失败”,因为它不知道基础应用程序之一已更改。
我遇到的各种错误,例如尝试重新部署失败的流时的MySQL主键约束错误


那我想念什么呢?为什么使用Spring Cloud Dataflow仅对手动部署应用程序有益?

最佳答案

根据我所看到的,在Spring Cloud Dataflow(SCDF)中创建流将部署基础应用程序,绑定通信服务(如RabbitMQ),设置Spring Cloud Stream环境变量并启动应用程序。可以使用cf push命令轻松地手动完成所有操作。


是的-您可以单独编排流应用程序,这样做有很多好处。但是,当您尝试使用channelNamedestination和绑定特定属性手动连接每个流应用程序时,您将不得不处理更多的簿记工作。这一切都成为Spring Cloud Data Flow(SCDF)编排层中的幕后琐事。

尤其是,当流管道中涉及“扩展”或“分区”时,您必须注意instanceCountinstanceIndex和相关属性。这些也通过DSL语义在SCDF中自动化。


SCDF Server是PCF上的内存占用器(我的流只有6个应用程序,但是我需要大约10GB的服务器空间)


根据我们的实验,通常在您处于“开发”状态并一天多次创建>部署>销毁流时会观察到这种情况。一般来说,服务器只需要1G。

人们普遍达成共识,PCF中的JVM报告其并未真正使用的内存。这必须与Java的rt.jar做些事情。 PCF中“内存使用情况报告”功能周围发生了一些新的内核更改,因此,JVM启动后(使用了大量资源),它就不会继续报告错误的数据。我们正在密切跟踪。

也就是说,我们还对服务器进行了性能分析,以确保没有任何内存泄漏。照原样,服务器没有任何内存状态-服务器所需的最小元数据状态(例如:流定义)保存在RDBMS中。请关注#107的发展。


在应用程序命名,内存,实例等方面没有灵活性(通常在manifest.yml中设置的所有内容)


您不清楚“应用程序命名”是什么意思。如果必须处理服务器名称,则可以通过manifest.yml或其他方式轻松更改它。如果与流应用程序名称有关,它们会自动以“流名称”作为前缀进行部署,因此当您从CF CLI或Apps-Mgr查看应用程序时,很容易识别。

至于内存和磁盘的使用情况,您可以通过SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_MEMORYSPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_DISK令牌在每个应用程序级别进行控制。更多详细信息here


与构建工具(如Bamboo)的集成将需要额外的工作,因为我们必须使用SCDF CLI而不是PCF CLI


您将在流/任务应用程序上运行CI构建,因为它们是开发工作流程的一部分。 SCDF仅提供编排机制来管理这些应用程序。我们还在与Netflix's Spinnaker工具进行本机集成,以在不久的将来提供开箱即用的体验。


现有流无法修改。要进行蓝绿色部署,您必须手动部署应用程序(绑定服务并手动设置环境变量)。然后,一旦蓝绿色部署完成,SCDF会将流显示为“失败”,因为它不知道基础应用程序之一已更改。


您可以分别在应用程序上执行像rolling upgrades这样的蓝绿色。还有一个活跃的w-i-p也可以适应SCDF中更改流/任务应用程序的状态。顺便说一句,Spinnaker集成将进一步简化自定义应用程序位的滚动升级,而SCDF将适应动态变化-就此要求而言,这是最终目标。


我遇到的各种错误,例如尝试重新部署失败的流时的MySQL主键约束错误


我们很乐意倾听您的反馈;具体来说,请考虑在backlog中报告这些问题。在这方面的任何帮助都受到高度赞赏。


那我想念什么呢?为什么使用Spring Cloud Dataflow仅对手动部署应用程序有益?


architecture section涵盖了常规功能。如果要使用大量流或任务应用程序(如任何其他微服务设置),则需要一个中央编排工具来在云设置中对其进行管理。 SCDF提供DSL,REST-API,仪表板,Flo,当然还提供现成的安全层。流和任务之间的互操作性是涉及闭环分析的用例的另一个重要要求-围绕DSL工具。当Spinnaker集成成为一流的公民时,我们可以预见到可以通过数据管道进行端到端的连续交付。最后,用于Cloud Foundry的SCDF-tile将与Spring Cloud Services进行互操作,以进一步自动实现供应方面以及全面的安全范围。

希望这可以帮助。

07-24 21:23