ConfigServer 已提供一套 Database 存储接口,包含 Connect、Get、Add、Update、Delete、GetAll 等方法,LevelDB 存储方案给出了一个示范实现。要实现 MySQL 持久化,需要依次实现该接口的所有方法,每个方法基本通过反射获取表的实体和主键,再调用 GORM 的 Create、Save、Delete、Count、Find 等方法完成 CRUD 操作。值得注意的是,Database 接口定义了 WriteBatch 方法用于批量处理心跳请求,对应 MySQL 的数据库事务。但实践中发现,在事务中批量更新心跳数据容易导致数据库死锁,放弃使用 WriteBatch 后问题恢复正常。由于心跳间隔默认 10 秒,即使 Agent 数量上千,TPS 也仅为每秒上百,数据库压力并不大。




