-
grpc-reactor 实战(三):把 Unary RPC 映射到 Reactor Netty HTTP/2
协议值与消息帧完成后,Stage 2 实现了第一条端到端调用:plaintext h2c unary RPC。这部分已经进入 main,后续 Stage 3 和 Stage 4 继续在同一 transport primitive 上完成了全部四种 RPC cardinality。 Method descriptor 是协议与类型的交点一个方法需要精确的 service name、method... -
grpc-reactor 实战(二):五字节消息帧、分片解码与协议原语
gRPC 的 Protobuf 消息不会直接裸写进 HTTP/2 DATA。每条消息前面都有五字节 envelope: 123byte 0 bit 0 表示是否压缩,bit 1-7 必须为 0byte 1-4 payload 长度,无符号大端序byte 5..n Protobuf 或压缩后的消息体 编码并不复杂,真正困难的是解码不能假设一次收到完整 frame... -
grpc-reactor 实战(一):为什么直接在 Reactor Netty 上实现 gRPC
最近我开始开发 grpc-reactor:一个直接构建在 Reactor Netty HTTP/2 之上的实验性 gRPC 实现。项目使用 Protobuf,但运行时不依赖 grpc-java transport、ClientCall、ServerCall 或 StreamObserver。 这不是为了证明 grpc-java 不好。grpc-java 已经成熟、稳定,并覆盖负载均... -
Vert.x 实战(五):性能验证、Native Image 与故障隔离
性能数字只有与代码版本、测试环境、请求模型和原始输出放在一起才有意义。当前项目还不具备稳定、隔离的压测环境,因此本章先建立可复现的测试方法,不预设吞吐结论。 固定请求模型先准备 create-order.lua: 123wrk.method = "POST"wrk.headers["Content-Type"] = "application/... -
Vert.x 实战(四):WebSocket 通知与多实例部署边界
订单创建后,管理界面希望立即看到新订单。轮询可以工作,但会产生固定延迟和大量空请求。本章在同一个 HTTP Server 上增加 /events WebSocket,并把订单事件推送给已连接客户端。 业务层只发布事件123orders.put(id, order);vertx.eventBus().publish(OrderVerticle.CREATED_ADDRESS, order);m... -
Vert.x 实战(三):Event Loop、HTTP 边界与异步测试
订单项目目前所有 Handler 都只操作内存并发送异步消息,很快就会返回。但一旦接入同步 JDBC、文件读取或旧 SDK,最容易出现的错误就是把阻塞调用直接放进路由 Handler。 1234router.post("/orders").handler(ctx -> { legacyClient.createOrder(ctx.body().asStr... -
Vert.x 实战(二):Event Bus、Future 与订单状态编排
第一篇完成了工程和 Verticle 生命周期。本篇把 HTTP、订单与库存连接成一条可以成功、拒绝或超时的异步链路。 用 request/reply 表达订单命令创建订单必须得到明确结果,因此使用 Event Bus 的 request/reply,而不是不等待结果的 send 或广播用的 publish: 12public static final String CREATE_... -
Vert.x 实战(一):从技术选型到可运行的订单服务
这套教程最初的问题是:怎样用 Java 写一个需要同时等待库存、支付等下游结果的订单接入层?请求处理期间大部分时间不在计算,而在等待网络 I/O。如果为每个请求长期占用一个平台线程,线程数量、上下文切换和内存都会逐渐成为成本。 本系列用一个简化的订单服务验证 Vert.x 的编程模型。项目固定使用 JDK 21、Vert.x 5.0.0 和 Gradle 9.2.1。它是可运行的教... -
PostgreSQL 分区表的原理、实践与 MySQL 对比
一、背景需要对AI调用进行记录,并对失败过高的情况进行告警。但是目前每天的AI调用量在百万级,对应的数据量也在百万级,单表存储显然是不可靠的。单表过大带来的问题包括: 查询、插入、更新性能下降; 索引膨胀,维护困难; 清理历史数据成本高; 统计与聚合操作耗时。在这种情况下,表分区(Partitioning) 是一种非常有效的优化手段。 二、什么是分区表分区表(Partitioned Ta...
1