METER_WORK_MONITOR Tarantool 内存加速方案
背景
METER_WORK_MONITOR 为计量监控热点表。POST /doUpdateWf 与 POST /doUpdateWfBySpotNo(updateLastTime)写入频率高,直接打 Oracle 易形成锁竞争与连接压力。
目标
- 在 Tarantool(memtx)建立与 Oracle 同结构的内存表
METER_WORK_MONITOR。
- 基于
icore-rtdb 自建多 Client 连接池,支撑高并发写入。
- 上述两个接口只写 Tarantool,立即返回。
- 定时 Job 将脏数据回写 Oracle。
架构
秤点/前端 → MeterWorkMonitorController
→ MeterWorkMonitorServiceImpl
→ MeterWorkMonitorRtdbRepository
→ RtdbClientPool → Tarantool METER_WORK_MONITOR
MeterWorkMonitorSyncScheduler → SyncService
→ 读 Tarantool dirty 行 → batchUpdateSelective → Oracle
→ 清 dirty
文档索引
一致性与降级
- 一致性:写路径最终一致;Oracle 落后于 Tarantool 最多一个 Job 周期(默认 1 分钟)。
- 降级:
rtdb.monitor.fallback-oracle=true 时,Tarantool 写失败回退原 Oracle updateByPrimaryKeySelective。
- 范围外:
PUT /{id}、MeterWorkCarActualFirst* 等其它 Oracle 直写路径不变;TestClient2 / DbConstants.client 暂保留。
配置开关(摘要)
rtdb.host=172.22.42.3
rtdb.port=2101
rtdb.username=guest
rtdb.password=
rtdb.pool.size=8
rtdb.pool.borrow-timeout-ms=3000
rtdb.monitor.enabled=true
rtdb.monitor.fallback-oracle=false
rtdb.monitor.bootstrap-enabled=false
meter.monitor.sync.enabled=false
meter.monitor.sync.cron=0 */1 * * * ?