perf(go): cache realtime plate lookups
This commit is contained in:
@@ -73,7 +73,11 @@ func main() {
|
||||
healthChecks = append(healthChecks, health.Check{Name: "mysql", Check: db.PingContext})
|
||||
closeStats = func() { _ = db.Close() }
|
||||
bindingTable := env("VEHICLE_IDENTITY_TABLE", "vehicle_identity_binding")
|
||||
snapshotWriter := realtime.NewSnapshotWriterWithPlateResolver(db, realtime.NewBindingPlateResolver(db, bindingTable))
|
||||
plateResolver := realtime.NewCachedPlateResolver(
|
||||
realtime.NewBindingPlateResolver(db, bindingTable),
|
||||
time.Duration(envInt("PLATE_CACHE_TTL_SECONDS", 600))*time.Second,
|
||||
)
|
||||
snapshotWriter := realtime.NewSnapshotWriterWithPlateResolver(db, plateResolver)
|
||||
if env("MYSQL_REALTIME_SNAPSHOT_ENABLED", "true") != "false" {
|
||||
if err := snapshotWriter.EnsureSchema(ctx); err != nil {
|
||||
_ = db.Close()
|
||||
@@ -81,7 +85,7 @@ func main() {
|
||||
os.Exit(1)
|
||||
}
|
||||
updater = compositeRealtimeUpdater{primary: repository, secondary: snapshotWriter}
|
||||
logger.Info("realtime mysql snapshot enabled", "table", "vehicle_realtime_snapshot", "plate_binding_table", bindingTable)
|
||||
logger.Info("realtime mysql snapshot enabled", "table", "vehicle_realtime_snapshot", "plate_binding_table", bindingTable, "plate_cache_ttl_seconds", envInt("PLATE_CACHE_TTL_SECONDS", 600))
|
||||
}
|
||||
mux.Handle("/api/stats/daily-metrics", stats.NewMetricHandler(stats.NewMetricRepository(db)))
|
||||
mux.Handle("/api/realtime/snapshots", realtime.NewSnapshotQueryHandler(realtime.NewSnapshotQueryRepository(db)))
|
||||
|
||||
Reference in New Issue
Block a user