网易首页 > 网易号 > 正文 申请入驻

巴西券商把Kafka消息延迟压到3毫秒,用的却是这套"土办法"

0
分享至


一个巴西开发团队正在搭建股票交易系统,他们的Kafka消费者处理B3交易所(巴西证券交易所)行情数据时,端到端延迟做到了3毫秒。没有用什么高端消息中间件,就是Spring Boot加Redis——但实现方式有点反直觉。

这套系统的核心叫Broker Asset API,负责管理股票代码、实时价格和资产状态。上一篇他们讲了怎么用Python抓B3数据塞进Kafka,这篇解决更麻烦的事:怎么让Java服务把数据吐出来,还要快。

Flyway管数据库:先解决"以后谁记得改了什么"

团队选了MySQL存资产主数据,但一开始就埋了个雷: schema怎么版本控制?

他们用了Flyway。每次数据库结构变更变成可执行的SQL脚本,按版本号排队执行。新成员拉代码就能还原完整表结构,CI/CD流水线也能自动跑迁移。

资产表设计很克制:ticker代码、名称、当前价格、状态字段。没有冗余,因为MVP阶段每多一个字段都是未来的技术债。

这个选择背后是血泪教训。很多金融系统早期图快,手写DDL(数据定义语言)语句,半年后没人记得哪张表为什么加了那个索引。Flyway的代价是多写几行配置,收益是schema变更可审计、可回滚。

Kafka消费者:故意写得"笨"一点


监听topic的代码简单到像示例程序:

@KafkaListener配置硬编码了topic名称trading-assets-market-data-v1,groupId设为broker-asset-api。收到消息后直接调service层,没有复杂的路由,没有中间状态机。

这种"笨"是设计出来的。作者明确说:现阶段目标是保证端到端流程跑通,而不是优雅。异常处理、重试策略、死信队列——这些全留给未来迭代。

一个细节:日志只打了ticker代码,没打完整消息体。生产环境这么干能省不少磁盘IO,但排查问题时会想骂人。他们显然选了性能优先。

对比国内某些券商的中台系统,喜欢把消费者层做得无比厚重,抽象出七八个接口适配器。巴西这个团队反着来:先让数据流动起来,再谈架构美感。

混合持久化:SQL+Redis的"双写"陷阱

AssetService是业务逻辑核心。收到新价格后,它干两件事:写MySQL做持久化,同步刷Redis做缓存。

这个模式在金融系统里极其常见,也极其容易翻车。双写没有分布式事务,MySQL成功了Redis挂了,或者反过来,数据就不一致。团队现在没解决,作者直接承认:未来要回来加单元测试、细化异常处理、增强韧性。


Redis在这里的角色不是"加速查询"那么简单。行情数据的特点是读远大于写,但写必须极快。把热点数据放内存,查询延迟从毫秒级降到微秒级,对交易终端的体验是质变。

他们没提Redis的过期策略和淘汰机制。这是隐藏的技术选型:如果用了allkeys-lru,内存满时会踢掉冷门股票的数据——对散户没影响,但对持有那些股票的机构客户,下次查询就要穿透到MySQL。

REST端点:给其他服务"喂数据"

暴露的HTTP接口让前端或其他微服务能查资产目录。设计原则同样是MVP思维:先保证数据能拿到,再谈GraphQL还是gRPC。

一个值得注意的产品决策:资产状态字段是独立维护的。股票可能停牌、退市、限制交易,这个状态会影响下游所有业务逻辑。把它和实时价格放同一个服务,避免了跨服务调用的延迟,但也让这个服务成了单点。

作者用了一个类比:这个资产服务是地基,让系统知道"在交易什么"和"多少钱"。但光有地基建不成房子——资产需要属于某个账户,账户需要有钱。

下一篇他们要讲Broker Wallet API,处理持仓和资金。复杂度会跳一个台阶:并发锁、事务隔离、余额校验,每个都是能写进故障案例库的经典场景。

这种" piece by piece "(逐块搭建)的策略,和国内很多团队"先画完整架构图再动手"的风格截然相反。你更倾向哪种?如果让你选,会先保证核心链路通,还是先把异常分支想全?

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
崩得最彻底的专业,网友哭诉:孩子600多分进的,如今找不到工作

崩得最彻底的专业,网友哭诉:孩子600多分进的,如今找不到工作

户外阿毽
2026-03-30 13:15:26
冲上热搜!今年蚊子可能迎来史诗级加强?网友:遭不住了

冲上热搜!今年蚊子可能迎来史诗级加强?网友:遭不住了

环球网资讯
2026-03-29 07:52:22
央国企降薪第一刀:取消证书补贴

央国企降薪第一刀:取消证书补贴

新浪财经
2026-03-30 04:41:15
炸裂一幕!以色列,被三国炸惨了!

炸裂一幕!以色列,被三国炸惨了!

大嘴说天下
2026-03-29 19:39:56
东契奇被踢出MVP争夺 名记:他是防守最差球员之一

东契奇被踢出MVP争夺 名记:他是防守最差球员之一

体坛周报
2026-03-30 16:22:29
俞敏洪:如果拼了命,英年早逝的话,和不那么拼命,而活到八九十岁,是一件更加合算的事

俞敏洪:如果拼了命,英年早逝的话,和不那么拼命,而活到八九十岁,是一件更加合算的事

南京择校
2026-03-29 22:42:47
儿子自杀六年后,母亲在人体展看到具剥皮尸体,秒认出:那是我儿子

儿子自杀六年后,母亲在人体展看到具剥皮尸体,秒认出:那是我儿子

新欧洲
2025-11-28 21:21:41
伊朗短信动员全国人准备“牺牲”

伊朗短信动员全国人准备“牺牲”

桂系007
2026-03-30 03:16:29
小区楼上天天晚上都有女的大声叫。。。

小区楼上天天晚上都有女的大声叫。。。

微微热评
2025-12-24 00:26:04
不要对发达国家生活水平有滤镜,2026年发达国家老百姓实际生活水平比中国已经高不了多少

不要对发达国家生活水平有滤镜,2026年发达国家老百姓实际生活水平比中国已经高不了多少

宁南山
2026-03-30 08:37:47
国家一级女演员陈丽云被逮捕!

国家一级女演员陈丽云被逮捕!

许三岁
2026-03-28 09:24:30
特朗普:伊朗政权已完成更迭 现在与我们打交道的人跟以前完全不一样

特朗普:伊朗政权已完成更迭 现在与我们打交道的人跟以前完全不一样

闪电新闻
2026-03-30 13:55:41
41岁美女老板朱明月去世,生前常熬夜,喜欢吃烧烤,身价几千万

41岁美女老板朱明月去世,生前常熬夜,喜欢吃烧烤,身价几千万

180视角
2026-03-30 08:54:24
中央转移支付再超10万亿!四川、河南、湖南、湖北、河北,分得最多

中央转移支付再超10万亿!四川、河南、湖南、湖北、河北,分得最多

城市财经
2026-03-30 11:47:41
想拿中国尿素救春耕?先还钱!中国锁定俄油巨单,印度彻底出局

想拿中国尿素救春耕?先还钱!中国锁定俄油巨单,印度彻底出局

青烟小先生
2026-03-30 11:33:34
被导弹打怕了?以色列向联合国抗议,称伊朗用集束炸弹违反国际法

被导弹打怕了?以色列向联合国抗议,称伊朗用集束炸弹违反国际法

混沌录
2026-03-28 19:43:17
几乎全是假货!利润高达2400%,为何有些消费者前赴后继争相购买

几乎全是假货!利润高达2400%,为何有些消费者前赴后继争相购买

素衣读史
2026-03-30 15:16:07
乒乓球世界杯:周启豪逆转失败!挽救局点仍输9-11,1-1被追平!

乒乓球世界杯:周启豪逆转失败!挽救局点仍输9-11,1-1被追平!

刘姚尧的文字城堡
2026-03-30 11:06:37
演员李尚宝去世终年45岁,曾患抑郁症街头狂奔精神异常,公司回应

演员李尚宝去世终年45岁,曾患抑郁症街头狂奔精神异常,公司回应

韩小娱
2026-03-28 13:31:17
伊朗外长:美以无法摧毁伊朗人民对知识的渴求

伊朗外长:美以无法摧毁伊朗人民对知识的渴求

新华社
2026-03-30 06:11:02
2026-03-30 17:48:49
硬核玩家2哈
硬核玩家2哈
沉淀中,勿扰
463文章数 3关注度
往期回顾 全部

科技要闻

一句谎言引发的硅谷血案

头条要闻

尹正发文恭喜张雪夺冠 张雪:没钱请您做代言人 送台车

头条要闻

尹正发文恭喜张雪夺冠 张雪:没钱请您做代言人 送台车

体育要闻

想进世界杯,意大利还要过他这一关

娱乐要闻

单依纯凌晨发长文道歉!李荣浩再回应

财经要闻

本轮地缘冲突,A股凭什么走出独立行情

汽车要闻

理想i9要来了!外形似小号MEGA 能冲击高端纯电市场?

态度原创

本地
教育
健康
旅游
公开课

本地新闻

用Color Walk的方式解锁城市春日

教育要闻

五年级状元题,求面积,会的不多

干细胞抗衰4大误区,90%的人都中招

旅游要闻

德州宝藏露营地!超市、外卖、公厕全配齐,周末就来这露营吧

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版