kline实现方案比较
2025-07-03 23:50:22 1 举报
kline实现方案比较
作者其他创作
大纲/内容
缓存中是否存在当前产品kline
3.查询db
kafka
core kline
是
1.是否需要支持1个产品可以查多个类型?入参需要指定每个产品类型2.现有v2版本不支持多类型3.批量查询缓存时,单次大小可能阻塞redis
单k查询,只查1种klineType
本地缓存
当前产品和缓存kline是否在同一周期
否
方案2优势:1.能支持的查询更灵活2.单节点性能碾压redis,减少网络开销,理论吞吐量读120万/ms、写80万/ms3.方便横向扩展
1.根据codes查缓存
存储所有产品最新一根kline
生成当前产品kline,并缓存redis
3.查db
kline
1.先查缓存
方案2,基于Caffeine存最新一根k
方案1存在问题:1.redis高频写入会严重降低性能 2.批量查询时,未防止阻塞,很可能需要分多次查询
客户端
本地只存储部分产品数据
批量k查询,支持多产品,多类型,每个产品查最新的2根
query kline
异步处理1.检查当前数据是否的第一条,是则更新开盘价2.如果不是第一条,按正常数据聚合
2.查buffer
4.合并数据返回
异步写入
方案2存在问题:1.对机器内存有较高要求2.实现起来更复杂3.需多个query kline,防止query也挂掉,core klien挂掉后需要更新分片信息
influxdb
查询缓存
query kline1.通过ws提供rest api查询2.维护其他分片kline的codes3.检查其他kline健康状态,基于grpc减少保活产生的开销,某个kline挂了后,短暂承担挂掉kline职责,保障分片数据不丢失
2.查询buffer
方案1优势:1.缓存数据所有kline节点共享,根据数据量增加redis可以分摊压力
kline数据分片
redis
建议kline的计算、存储、查询合并到一个模块,放在restapi会比较麻烦
1.查缓存
当前产品时间是否比缓存kline大
更新kline
方案1,基于redis存最新一根k
更新kline,写回redis
Caffeine
生成新的kline,覆盖缓存中klian
生成当前产品kline,并缓存Caffeine
收藏
0 条评论
下一页