Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 考虑卡夫卡流和春天云流的设计问题_Apache Kafka_Apache Kafka Streams_Spring Kafka_Spring Cloud Stream - Fatal编程技术网

Apache kafka 考虑卡夫卡流和春天云流的设计问题

Apache kafka 考虑卡夫卡流和春天云流的设计问题,apache-kafka,apache-kafka-streams,spring-kafka,spring-cloud-stream,Apache Kafka,Apache Kafka Streams,Spring Kafka,Spring Cloud Stream,我需要维护外部系统记录(KTables)并跟踪这些记录(KStream)上的任何更改 KTables将由KSQL查询请求,而kstream将由事件监视器处理 问题: 我需要KTable像外部系统的镜子一样工作。如果我决定使用这种关于数据存储的设计,我会有任何问题吗?数据丢失、过期 使用Spring,数据类型的最佳方法是什么?具有模式注册表的Avro 一切的来源都是一个话题,对吗?因此,我需要向主题发送消息,我的KTable和KStream将根据需要进行翻译。是这样吗 KTable定义是已知的,但

我需要维护外部系统记录(KTables)并跟踪这些记录(KStream)上的任何更改

KTables将由KSQL查询请求,而kstream将由事件监视器处理

问题:

  • 我需要KTable像外部系统的镜子一样工作。如果我决定使用这种关于数据存储的设计,我会有任何问题吗?数据丢失、过期
  • 使用Spring,数据类型的最佳方法是什么?具有模式注册表的Avro
  • 一切的来源都是一个话题,对吗?因此,我需要向主题发送消息,我的KTable和KStream将根据需要进行翻译。是这样吗
  • KTable定义是已知的,但我可能有一个动态创建的组KStreams;实现这一目标的最佳方式是什么

  • 我非常感谢任何有助于更好地设计它的评论。

    以下是我对这些问题的建议/意见,您可能希望对一些与卡夫卡流相关的核心问题进行进一步研究

  • 不完全清楚您提出的用例/设计。按照我的理解,您有一个外部系统(如数据库),您希望将该数据提取为一个键/值对,可以转换为
    KTable
    。在卡夫卡流中,正如你在问题3中所指出的,真相的来源是卡夫卡主题。因此,您需要首先将外部系统中的数据引入卡夫卡主题,然后在卡夫卡流中将其具体化为
    KTable
    。有一些已建立的模式,如变更数据捕获(CDC),用于几乎实时地将数据从外部系统导出到卡夫卡主题
    KTable
    可以具体化为状态存储,默认情况下,状态存储由RocksDB备份。卡夫卡变更日志主题也会复制相同的信息,因此会应用卡夫卡主题中数据提供的保证。我希望Kafka Streams团队的人能够就这个特定的主题插话,以获得所需的更多信息
  • Spring Cloud Stream为Kafka Streams提供了一个绑定器,使用该绑定器,您可以通过各种Kafka Streams类型(如
    KStream
    KTable
    GlobalKTable
    )建立到Kafka主题的绑定。有关更多详细信息,请参阅。对于常用数据类型,活页夹为数据类型提供了几个方便的选项。关于Avro数据类型的问题实际上取决于您的用例以及您希望如何管理数据的模式结构。如果关注集中式模式管理,那么avro是一个不错的选择。您可以将Confluent的模式注册表用于带有SpringCloudStream的Avro。Spring提供了一个模式注册表,但是对于需要avro的Kafka Streams工作负载,我们建议使用Confluent模式注册表,因为它有更多的功能。无论哪种方式,它都应该可以工作,我们提供了许多示例应用程序来演示模式的演变
  • 正如我在#1的回答中提到的,是的,真相的来源是卡夫卡主题,Spring Cloud Stream binder提供了绑定机制,用于连接卡夫卡主题,并将数据转换为
    KStream
    KTable
  • 在这里,我并没有遵循实际的用例。但是,Kafka Streams提供了许多不同的API方法,允许您转换传入数据,以便动态创建其他
    KStream
    类型。例如,您对传入的
    KStream
    应用
    map
    flatMap
    操作,从而从中创建一个新的
    KStream
    。不确定,如果这是你的意思。如果是这样的话,那么它真的成为了一个业务逻辑问题。这当然是可能的

  • 希望这有帮助,再一次,这是我对这些问题的看法,对于其中一些问题,没有正确或错误的答案。你需要仔细考虑用例和设计选项,选择适合你需要的正确路径。

    谢谢,SouyChaCo,它非常有用。我们的用例是:我们是一个SaaS平台,集成了几个不同的SaaS平台,我们需要从每个平台生成指标和衍生信息。这就是我提到数据镜像的原因。我曾考虑使用Spring Cloud Stream模块生成流,但在我们的例子中,最终用户可以定义聚合器等,因此它是完全动态的。因此,我正在考虑使用流来反映更改历史,并使用KSQL来查询它。不确定CDC和Kafka Connect是否正确,因为没有更多的集成需求,比如OAuth和回拉处理的数据。也许是两种服务,而不是一种。谢谢你对这方面的见解。