我正在 K8 上运行 flink 集群,状态约为 1TB。
我面临的一个问题是获取保存点并恢复工作。现在,这些更新有时是简单的代码更新,而不是并行性更改。但是获取保存点然后使用旧状态恢复新作业的时间相当长。
有没有办法对作业进行就地更新,以便本地状态和作业 ID 不会改变,从而避免执行保存点+恢复所消耗的时间?
答案 0 :(得分:1)
在许多情况下,您可以使用 retained (externalized) checkpoints 代替保存点。这有效,但在以下情况下除外:
您可能会发现拓扑更改和状态迁移在某些情况下起作用,但这不能保证。
对于 RocksDB 上的大型状态,您将需要使用增量检查点。完整检查点和保存点需要很长时间,但增量检查点要快得多。
如果你确实想重新调整规模,增加 RocksDB 可用的线程数是有益的,更像这样:
func onTest() {
let content = UNMutableNotificationContent()
content.title = "Weekly Staff Meeting"
content.body = "Every Tuesday at 2pm"
// Configure the recurring date.
var dateComponents = DateComponents()
dateComponents.calendar = Calendar.current
dateComponents.hour = 16 // 14:00 hours
dateComponents.minute = 11
// Create the trigger as a repeating event.
let trigger = UNCalendarNotificationTrigger(
dateMatching: dateComponents, repeats: true)
// Create the request
let uuidString = UUID().uuidString
let request = UNNotificationRequest(identifier: uuidString,
content: content, trigger: trigger)
// Schedule the request with the system.
let notificationCenter = UNUserNotificationCenter.current()
notificationCenter.add(request) { (error) in
if error != nil {
// Handle any errors.
}
}
}