高频更新的数据流上要搞天际线查询,在分布式场景下确实挺棘手的。你要想高效、通信量还少,真可以看看这个叫BOCS的算法方案,组合了一个叫GridSky
的集中算法,再搭配了一个还挺精简的通信协议,整体效率蛮不错。
BOCS的玩法是分两步走:先在每个远程节点算本地天际线,只传变动数据给协调器,再做个合并,得到全局天际线。简单点说,就是不传全量,只传增量,通信压力自然就小了不少。你要在多节点流时跑Skyline,这个方式还蛮靠谱的。
而且理论上讲,BOCS在不共享存储前提下,通信是最优的。实验效果也挺扎实:性能稳定、扩展性好、计算延迟低。如果你正好在研究类似架构或者搞分布式查询优化,这个资源真的值得一看。
顺带推荐几个相关的拓展阅读:
- 分布式查询优化 —— 关于怎么在大系统里跑查询、压延迟。
- 基于分布式与实时流算法的数据挖掘 —— 如果你数据流程复杂点,可以搭配来看。
- Kafka 分布式流平台的命令行操作指南 —— 搭配Kafka做流平台的朋友别错过。
如果你正碰上多源数据、实时性强、通信敏感的查询需求,真的可以试试这个思路。实现成本不高,效果还不错。