我有一个发布实时财务数据的外部系统(例如来自世界各地交易所的股票报价和价格)。
这个外部系统对每个帐户连接的股票数量有一些限制,因为我们有许多应用程序需要使用这些实时流数据,所以我们不希望每个应用程序都连接到那个外部系统并自己管理容量,因此我们想设计一个单一的系统,对所有股票进行消费,然后发布到某个消息队列(例如 kafka 或 pulsar),然后下游应用程序可以从 kafka 主题中消费。
问题是我们如何设计主题,股票的数量在 1000 万左右,但每个应用程序只对其中的子集感兴趣,子集大小可以大也可以小,不同的子集可以共享相同的股票。
我能想到的是动态创建一些流式作业(例如 kafka 流式传输或单独的 flink 作业来进行预聚合以从所有主题中为每个消费者收集感兴趣的股票,然后为每个消费者发布到另一个主题),在这个这样每个消费者都会有自己的话题,只有自己感兴趣的股票,但肯定会带来消息传输时间、重复消息和延迟的开销,除此之外,如果消费者越来越多,容量也可能会出现问题。
不知道有没有更好的方法可以达到我的要求,请指教,谢谢。