KFS动态链路生成(不停机下新增链路)需求分析
关键字:
Kingbase FlySync、动态更新、流批一体、人大金仓
需求背景
在当前的KFS系统中,数据的同步链路搭建是基于.ini初始化文件生成静态的配置文件实现的,这种静态搭建方式的缺点主要体现在可维护性和扩展性方面,随着用户需求的增加和业务场景的复杂化,源端数据库和目标端数据库节点数量逐渐增加,此时如果需要对数据库参数进行更新,那么系统中断并重启的代价会逐渐增加。此外,在复杂系统中静态链路也不容易扩展,无法适应新的业务场景。
在流批一体环境下,动态的搭建源端到目标端链路可以实现系统的灵活性和适应性,动态的新增或删除数据节点,修改节点参数,而不需要停机或者中断服务,实现实时的数据同步和管理。另外动态搭建数据链路还可以提供系统的可维护性,对出现问题的数据链路做出及时的响应和调整,在复杂链路中合理的配置系统资源,删除无用数据节点,提供资源利用率。
要实现动态的配置数据链路,允许在系统运行时对系统进行更改,而不需要停机或者中断服务,就需要系统具有实时的调整数据节点和处理步骤的能力,具体来讲有三个方面:实时的添加数据节点、实时的删除数据节点、动态的调整处理步骤。
需求分析
- 实时的添加数据节点
实时添加数据节点要求在系统运行时接受新的数据源,而不需要中断程序,完成新数据源的接口和协议的识别与验证,同时需要做数据节点的注册和错误处理。
- 插件化架构:采用插件化架构,使得系统能够动态的加载数据节点插件,实现简单的部署一个插件接入数据节点。
- 自动识别和配置:系统可以具备自动识别数据源并配置的功能,通过自动检测数据源类型、接口和协议,系统自动生成相应的配置,简化接入数据源流程。
- 元数据管理:动态的注册和更新数据节点的元数据,元数据可以包括数据节点描述、连接信息、数据格式等,使系统能够在运行时动态适应新的数据节点。
- 实时的删除数据节点
与实时添加数据节点相对应的是实时删除数据节点,而不需要中断系统或重启系统,同时对系统中的其他数据链路不产生负面影响。在删除数据节点过程中定义统一的卸载过程,包括删除数据节点配置信息、关闭数据库连接以及释放相关资源。同时在删除数据节点尤其是目标端数据节点时,还要考虑数据的迁移和备份,确保链路的关闭不会造成数据的丢失。另外节点的安全删除还需要通知和审查功能,在节点删除之前需要相关链路节点得到通知并进行安全投票,确保删除节点的合规性。
- 热插拔支持:系统需要具备热插拔支持,保证在安全运行的同时无感知的将无用数据节点配置信息删除,关闭连接,释放资源,保证删除节点对系统影响最小。
- 数据的迁移和备份:在删除数据节点之前需要识别是否有数据需要迁移和备份,防止数据丢失,可以将迁移至其他数据节点或者生成外部的数据备份。
- 事务性操作:在删除数据节点链路中端过程中,需要保证事务的完整性,保证在删除过程中发生故障时能够回滚到之前的状态。
3、动态的调整处理步骤
除了新增和删除数据节点外,系统还需要支持数据链路的动态配置,保证在同步链路执行期间动态的调整数据库配置或者源端和目标端数据节点的角色切换,允许管理员动态的定义、修改和删除节点参数、节点角色和过滤器,对动态配置做版本控制等。另外还需要监控链路状态自动调整或负载均衡,保证系统高效运行。
- 动态的配置管理:管理员可以在运行期间调整数据节点配置和过滤器等。
- 版本控制:对动态链路和配置做版本控制,可以在系统出现问题后回滚至之前的版本。
- 监控与反馈:实时监控链路状态,统一的异常与错误反馈机制。
- 自适应:根据系统的数据和性能指标自动调整链路中的节点,做到负载均衡。