随笔分类 -  Java

摘要:背景 今年在公司内部主导了两个的行情数据系统的构建,两者均使用到了常见的时序数据压缩算法。 这里简单总结一下过程中积累的一些经验。 让我们先来思考一个问题:压缩算法生效的前提是什么? 数据本身至少要符合以下两种特性其一: 数据存在冗余 数据符合特定的概率分布 在时序数据领域,数据冗余度与相似度较高, 阅读全文
posted @ 2022-06-27 00:08 buttercup 阅读(3633) 评论(2) 推荐(1) 编辑
摘要:背景 出于数据安全的考虑,自研了一个低成本的时序数据存储系统,用于存储历史行情数据。 系统借鉴了 InfluxDB 的列存与压缩策略,并基于 HBase 实现了海量存储能力。 由于运维同事缺乏 Hadoop 全家桶的运维经验,只能由我这个研发临时兼职,亲自指挥亲自部署了。 Hadoop 发行版选择 阅读全文
posted @ 2022-04-30 17:33 buttercup 阅读(899) 评论(1) 推荐(0) 编辑
摘要:背景 JDK 动态代理存在的一些问题: 调用效率低 JDK 通过反射实现动态代理调用,这意味着低下的调用效率: 每次调用 Method.invoke() 都会检查方法的可见性、校验参数是否匹配,过程涉及到很多 native 调用,具体参见 JNI 调用开销 反射调用涉及动态类解析,这种不可预测性,导 阅读全文
posted @ 2021-09-11 23:02 buttercup 阅读(733) 评论(0) 推荐(0) 编辑
摘要:本文从源码层面分析了 redis 的缓存淘汰机制,并在文章末尾描述使用 Java 实现的思路,以供参考。 相关配置 为了适配用作缓存的场景,redis 支持缓存淘汰(eviction)并提供相应的了配置项: maxmemory 设置内存使用上限,该值不能设置为小于 1M 的容量。 选项的默认值为 0 阅读全文
posted @ 2021-02-13 11:01 buttercup 阅读(5415) 评论(0) 推荐(2) 编辑
摘要:基础知识 性能指标 在调优Java应用程序时,重点通常放在两个主要目标上:响应性 或 吞吐量。 响应性Responsiveness 是指应用程序对请求的数据做出响应的速度: 桌面用户界面对事件的响应速度 网站返回页面的速度 数据库查询的返回速度 吞吐量Throughput 专注于最大程度地提高应用程 阅读全文
posted @ 2020-12-17 00:53 buttercup 阅读(758) 评论(0) 推荐(1) 编辑
摘要:背景 某系统使用 Kafka 存储实时的行情数据,为了保证数据的实时性,需要在多地机房维护多个 Kafka 集群,并将行情数据同步到这些集群上。 一个常用的方案就是官方提供的 KafkaMirrorMaker 方案: 该方案的优点是能尽可能保证两个 Kafka 集群的数据一致(为了避免网络故障导致丢 阅读全文
posted @ 2020-12-13 21:41 buttercup 阅读(873) 评论(0) 推荐(0) 编辑
摘要:背景 现有个处理股票行情消息的系统,其架构如下: 由于数据量巨大,系统中启动了 15 个线程来消费行情消息。消息分配的策略较为简单:对 symbol 的 hashCode 取模,将消息分配给其中一个线程进行处理。 经过验证,每个线程分配到的 symbol 数量较为均匀,于是系统愉快地上线了。 运行一 阅读全文
posted @ 2020-10-03 22:25 buttercup 阅读(1465) 评论(2) 推荐(5) 编辑

点击右上角即可分享
微信分享提示