根据我所看到的,在Spring Cloud Dataflow(SCDF)中创建流将部署底层应用程序,绑定通信服务(如RabbitMQ),设置Spring Cloud stream环境变量,并启动应用程序。这一切都可以使用cf push命令轻松手动完成。
同时,我在Spring Cloud Dataflow中遇到了一些缺点:
那么我错过了什么?为什么使用Spring云数据流只会有利于手动部署应用程序?
根据我所看到的,在Spring Cloud Dataflow(SCDF)中创建流将部署底层应用程序,绑定通信服务(如RabbitMQ),设置Spring Cloud stream环境变量,并启动应用程序。这一切都可以使用cf push命令轻松手动完成。
是的-您可以单独编排流应用程序,这有好处。但是,当您尝试将每个流应用程序与channelName
、目的地
和绑定特定属性手动连接时,您必须处理更多的簿记。这一切都成为Spring Cloud Data Flow(SCDF)编排层的幕后工作。
特别是,当您的流媒体管道中涉及到“缩放”或“分区”时,您必须注意instanceCount、instanceIndex以及相关属性。这些也通过DSL语义在SCDF中自动化。
SCDF服务器是PCF上的内存占用器(我有一个只有6个应用程序的流,但我需要大约10GB的服务器)
根据我们的实验,当你在“开发”和反复创建时,通常会观察到这一点
人们普遍认为PCF中的JVM报告它没有真正使用的内存;这必须与java的rt.jar
有关。PCF中的“内存使用报告”功能有一些新的内核更改,因此在JVM启动后(使用大量资源),它不会继续报告不良数据。我们正在密切跟踪这一点。
也就是说,我们也在分析服务器,以确保没有任何内存泄漏。实际上,服务器没有任何内存状态——服务器所需的最小元数据状态(例如:流定义)保存在RDBMS中。请密切关注#107的进展。
在应用程序命名、内存、实例等方面没有灵活性(您通常在manifest.yml中设置的所有内容)
不清楚“应用程序命名”是什么意思。如果这必须处理服务器名称,您可以通过您的manifest.yml
或其他方式轻松更改它。如果与流应用程序名称有关,它们会自动以“流名称”作为前缀部署,因此当您从CF CLI或Apps-Mgr查看应用程序时很容易识别。
至于内存和磁盘使用,您可以通过SPRING\u CLOUD\u DEPLOYER\u CLOUDFOUNDRY\u STREAM\u memory和SPRING\u CLOUD\u DEPLOYER\u CLOUDFOUNDRY\u STREAM\u disk令牌在每个应用程序级别进行控制。这里有更多详细信息。
与构建工具(如Bamboo)的集成将需要额外的工作,因为我们必须使用SCDF CLI,而不仅仅是PCF CLI
您将在流/任务应用程序上运行CI构建,因为它们是您开发工作流的一部分。SCDF只是提供了编排机制来管理这些应用程序。我们还致力于与Netflix的Spinnaker工具进行本地集成,以在不久的将来提供开箱即用的体验。
无法修改现有流。要进行蓝绿色部署,您必须手动部署应用程序(绑定服务并手动设置环境变量)。然后一旦完成蓝绿色部署,SCDF就会将流显示为失败,因为它不知道底层应用程序之一已经更改。
你可以单独在应用程序上执行类似蓝绿色的滚动升级。在SCDF中也有一个活动的w-i-p来适应不断变化的流/任务应用程序状态。另外,Spinnaker集成将进一步简化定制应用程序位上的滚动升级,并且SCDF将适应动态变化——就这一需求而言,这是最终目标。
我遇到了各种错误,比如在尝试重新部署失败的流时MySQL主键约束错误
我们希望听到您的反馈;具体来说,请考虑在积压工作中报告这些问题。我们非常感谢您在这方面提供的任何帮助。
那么我错过了什么?为什么使用Spring云数据流只会有利于手动部署应用程序?
架构部分介绍了一般功能。如果您要有许多流或任务应用程序(像任何其他微服务设置一样),则需要一个中央编排工具来在云环境中管理它们。SCDF提供了DSL、REST-API、Dashboard、Flo,当然还有现成的安全层。流和任务之间的互操作性是涉及闭环分析的用例的另一个重要要求——DSL工具围绕着这一点。当Spinnaker集成成为第一流公民时,我们预计将通过数据管道实现端到端的连续交付。最后,用于Cloud Foundry的SCDF互动程序将与Spring云服务交互,以进一步自动化资源调配方面以及全面的安全覆盖。
希望这有帮助。
我对GCP比较陌生,刚刚开始在GCP上建立/评估我的组织架构。 场景: 数据将流入发布/子主题(高频率,低数据量)。目标是将这些数据移动到Big Table中。据我所知,您可以通过在主题上触发云函数或使用Dataflow来做到这一点。 现在我有以前使用云功能的经验,我对此很满意,所以这将是我的选择。 我看不出选择其中一个的好处。所以我的问题是什么时候选择这些产品? 谢谢
顺便说一句:我的应用程序是一些REST控制器和一些批处理作业的组合。那么使用云数据流有意义吗?如果没有,那么是否有更好的控制台管理器用于批处理作业(如重新启动、取消作业门户)等?
我有一个现有的过程,我正试图转换成SCDF实现。目前的流程是, HTTP接收器(接收HTTP POST数据)->RabbitMQ->MQ接收器服务->处理/转换->DB接收器
我正在从Spring XD迁移到Spring Cloud Data Flow。当我寻找模块列表时,我意识到一些源码没有在Spring Cloud Flow中列出--其中一个是Kafka源码。 我的问题是为什么在spring cloud data flow中KAFKA源从标准源列表中删除?
我在这个网站上用docker compose启动了Spring云数据流。 https://dataflow.spring.io/docs/installation/local/docker/ 我创建了3个应用程序,源,处理器 我跑了 当我运行docker compose-f时/docker编写。yml-f/docker创作普罗米修斯。yml,所有我的容器都按照docker compose中的指定启