跨区域事件路由和 Spring Cloud Stream & Spring Cloud Data Flow
Cross Region Events Routing and Spring Cloud Stream & Spring Cloud Data Flow
我使用 AWS 作为云提供商。我有一个位于法兰克福地区的微服务,将使用 Spring Cloud Stream (SCDF) Kinesis Adapter 将事件发布到同一地区的 Kinesis Data 流。我在不同地区(俄勒冈、俄亥俄、新加坡、孟买等)有多个微服务,它们使用 Spring Cloud Stream (SCDF) Kinesis Adapter 消耗来自各自地区各自 Kinesis Streams 的事件。现在我必须将 Frankfurt Kinesis 中的事件路由到不同区域的不同数据流(仅与相应的 Kinesis 相关)。
- 我可以使用 Spring 提供的任何功能来执行此操作吗?我可以使用 Spring Cloud Stream 或 SCDF 做跨区域路由吗?如果是,请指出一些例子。
- 如果#1 不可行,最好的方法是什么?
- 我了解了 AWS EventBridge,对于上述用例,它是正确的选择吗?
Spring 适用于 AWS Kinesis 的 Cloud Stream Binder 完全基于标准 AWS 客户端或 KCL。它们都需要特定的 region
进行静态配置或从 EC2 环境中解析。因此,为了能够从一个区域消费并将流记录中继到另一个区域,您必须编写一些“复制器”流应用程序。
幸运的是Spring Cloud Stream 应用程序可以配置多个活页夹。是的,在我们的例子中,它们都将是相同的 Kinesis 绑定器,但我们将为不同的凭据和不同的区域配置它们。
请参阅 Spring Cloud Stream 文档以了解多绑定器配置:https://docs.spring.io/spring-cloud-stream/docs/3.1.2/reference/html/spring-cloud-stream.html#multiple-binders。
您的 Stream 应用程序的代码可能只是一个普通的身份函数:
@Bean
public Function<byte[], byte[]> kinesisStreamRelay() {
return Function.identity();
}
然后您将它从一个 Kinesis 活页夹绑定到一个 in
目的地,在另一个活页夹中绑定 out
目的地。
另请参阅本文中的其他方法:https://engineering.opsgenie.com/cross-region-replication-of-kinesis-streams-4a62f3bb269d
参见 Spring 对 AWS Lambda 的云函数支持:https://docs.spring.io/spring-cloud-function/docs/3.1.1/reference/html/aws.html。 Spring Cloud Stream 不为 AWS Lambda 提供活页夹实现。
我使用 AWS 作为云提供商。我有一个位于法兰克福地区的微服务,将使用 Spring Cloud Stream (SCDF) Kinesis Adapter 将事件发布到同一地区的 Kinesis Data 流。我在不同地区(俄勒冈、俄亥俄、新加坡、孟买等)有多个微服务,它们使用 Spring Cloud Stream (SCDF) Kinesis Adapter 消耗来自各自地区各自 Kinesis Streams 的事件。现在我必须将 Frankfurt Kinesis 中的事件路由到不同区域的不同数据流(仅与相应的 Kinesis 相关)。
- 我可以使用 Spring 提供的任何功能来执行此操作吗?我可以使用 Spring Cloud Stream 或 SCDF 做跨区域路由吗?如果是,请指出一些例子。
- 如果#1 不可行,最好的方法是什么?
- 我了解了 AWS EventBridge,对于上述用例,它是正确的选择吗?
Spring 适用于 AWS Kinesis 的 Cloud Stream Binder 完全基于标准 AWS 客户端或 KCL。它们都需要特定的 region
进行静态配置或从 EC2 环境中解析。因此,为了能够从一个区域消费并将流记录中继到另一个区域,您必须编写一些“复制器”流应用程序。
幸运的是Spring Cloud Stream 应用程序可以配置多个活页夹。是的,在我们的例子中,它们都将是相同的 Kinesis 绑定器,但我们将为不同的凭据和不同的区域配置它们。
请参阅 Spring Cloud Stream 文档以了解多绑定器配置:https://docs.spring.io/spring-cloud-stream/docs/3.1.2/reference/html/spring-cloud-stream.html#multiple-binders。
您的 Stream 应用程序的代码可能只是一个普通的身份函数:
@Bean
public Function<byte[], byte[]> kinesisStreamRelay() {
return Function.identity();
}
然后您将它从一个 Kinesis 活页夹绑定到一个 in
目的地,在另一个活页夹中绑定 out
目的地。
另请参阅本文中的其他方法:https://engineering.opsgenie.com/cross-region-replication-of-kinesis-streams-4a62f3bb269d
参见 Spring 对 AWS Lambda 的云函数支持:https://docs.spring.io/spring-cloud-function/docs/3.1.1/reference/html/aws.html。 Spring Cloud Stream 不为 AWS Lambda 提供活页夹实现。