apache-flink - 在 Flink Stateful 功能模块中存储数据库或第三方连接
问题描述
我试图了解 Flink Statefun 模块的范围。假设我有一个第三方服务需要首先建立连接(例如凭证。这需要很长时间)然后,我可以与之交互。
我正在尝试了解 Statfun 模块的范围,以及是否应该为我的所有功能创建该连接,或者是否可以为每个模块创建该连接。
解决方案
当一个模块被实例化时,它将为每个函数类型创建一个物理实例。然后将这些功能多路复用以支持引擎盖下的多个 id。对于应该共享的昂贵连接,请在创建物理实例时创建它们。
例如,假设您正在使用 Java SDK(尽管这对于任何语言 SDK 看起来都是一样的)。创建资源最自然的地方是 StatefulFunctionSpec 的提供者,将资源传递给 Java 类的构造函数。
StatefulFunctionSpec spec =
StatefulFunctionSpec.builder(GreeterFn.TYPE)
.withValueSpec(GreeterFn.SEEN)
.withSupplier(() -> {
var resource = createExpensiveResource();
return new GreeterFn(resource);
})
.build();
推荐阅读
- java - Maven 构建失败,如何在 Eclipse 中将 -source 1.5 更改为 -source 7 或更高版本
- corda - 交易对手在意外时间发送会话拒绝消息,消息类 com.upgrade.CustomContractUpgradeFlow$Initiate 未注册
- spring - 如何在 Spring Boot 中从 http 重定向到 https?
- node.js - 我在哪里可以找到 Node 的 SignalR 核心 polyfill
- sql - 在单行中分组天数(总和)
- python - iter() 方法的第二个参数
- file - Mule更改文件名/扩展名以在拆分器后存储多个文件
- angular - Karma 使用内置管道的自定义管道测试 Angular X (5) 组件
- apache-spark - 是否可以“均匀地”合并 Spark 分区?
- python - 通过代理未授权的 python 脚本向 API Gateway 发送 GET 请求