我想与卡夫卡一起深入处理流处理,我需要一些帮助,让我的头部围绕一些目前不太清楚的设计原则。卡夫卡流应用程序设计负责人
1.)假设我有一些实时股价数据。你是否会用股票代码来锁定(并因此分割)一个主题“价格”?或者你会为每个符号制作一个主题?例如,如果我决定生产(添加)一些更多的股票代码,包括以后的完整历史记录,会发生什么情况?现在我的历史(在日志中订购)的主题“价格”是一团糟,对吧?另一方面,对于每个价格系列,我想要稍后计算回报,如果它们在不同的主题上,我必须跟踪它们并为每个符号开始新的流应用程序。
2.)现在有不同的实时价格,我需要加入一个任意数量的一个大的记录。在例子中将所有sp500符号连接成一条记录。因为我在同一时间没有所有sp500符号的价格,但可能非常接近。如果在这个确切的时间里失踪,我怎样才能使用最新的价格加入他们?
3.)说我已经解决了加入用例,我将所有sp500股票的加入记录抽回卡夫卡。如果我犯了一个错误,并且我忘记了一个符号,我该怎么做?显然,我想将它添加到流中。现在我需要鞭挞“sp500”日志并重建它的权利?或者是否有一些机制将起始偏移重置为特定的偏移量(我已修复连接的偏移量)?也很可能我有其他流应用程序正在从这个主题消费。他们还需要做某种重置/重放。是不是存储sp500主题可能是一个更好的主意,但将其作为长流程的一部分?但是我最终会多次进行同一个连接。
4)也许这应该是1,因为这是我的目标^^部分 - 但是,我怎么能像建模这样的数据流:
produce prices -> calculate returns -> join several returns into a row vector -> calculate covariance (window of rowvectors) -> join covariance with returns
-> -> into a tuple (ret, cov)
我甚至不知道,如果这样的使用今天的流处理可能会出现复杂的用例。