1. 方案介绍编辑
帆软 FineBI 6.0 新版本,支持真正高并发和高可用的抽取集群方案,如果工程中含有抽取数据,建议您采用该方案搭建集群。
FineBI 6.0 抽取集群方案优势如下:
1)业务高可用
集群由多个同步节点和异步节点组成,只要还有一台同步节点存活,就能够提供完整的数据,保证超强的数据查询高可用性。
当数据更新在执行过程中出现异常(宕机或节点假死),则通过恢复机制,将正在进行的子流程重新恢复为执行前的状态,并重新执行,以保证更新业务的高可用。
2)查询高并发
多台节点同时提供查询服务,实现真正的负载均衡,查询并发量与节点数量成正相关,提供可横向扩展的查询能力。(这里并不优化单节点的并发数。)
3)提升更新吞吐量
可以通过增加节点的方式来极大地提高更新性能,更新耗时随节点数变多呈现非线性降低的趋势。(这里并不优化单节点的更新性能。)
2. 原理简述编辑
1)更新调度
数据更新请求可以向所有同步节点均衡转发。
所有节点均可对更新任务进行预处理,将更新任务的信息存储到任务队列。
所有同步节点均可领取数据集更新子任务,并进行实际的抽取。
数据集在某节点抽取完成后,会同步到其他同步节点,全部同步完成后,该数据集才视为更新完成。
此后,依赖该数据集的子数据集可以被任意同步节点领取,并开始抽取。
2)数据同步
同步节点(关键节点):
该类节点上的数据文件状态都保持最新,即保持数据强一致性。更新过程中,必须保证该类节点数据同步完成,才算更新成功。
该类节点是高可用的基本保障,也是查询和更新高并发的主力。
非同步节点(非关键节点):
该类节点上的数据文件状态可以不是最新,保持数据在最终是一致的即可。通过同步的机制,逐渐将该类节点上的数据,更新为和同步节点一样的状态。
该类节点是查询高并发的支撑。
3)查询请求转发
数据查询请求可以向所有节点均衡转发;
若redis返回的节点数据状态为最新状态,则由该节点处理请求;
若节点数据落后,则内部转发请求到最新数据的节点,并触发本节点的数据同步。
3. 特性表现编辑
1)高可用时间提升
与热备相比,抽取集群中节点宕机时不再会有节点切换的耗时,降低了不可用的时间。
此外,6.0集群还支持更新业务的高可用,提供更新任务的异常恢复机制。
2)更新性能提升
更新时间随节点数变多呈现非线性降低趋势。
节点-更新类型 | 性能提升/耗时减少 |
---|---|
单节点-业务包更新 | - |
3节点-业务包更新 | 27% |
单节点-全局更新 | - |
3节点-全局更新 | 23% |
注:由于数据同步机制的存在,单表任务的更新性能会比单节点有所下降(控制在10%以内)。
3)查询性能线性提升
抽取集群的查询,达到了真正的负载均衡,且并发性能可以随节点增加而线性增加。(性能提升随节点数增加非整倍的提升,会有一定的衰减)
节点-并发数 | 性能提升到的倍数 |
---|---|
单节点-10并发 | - |
4节点-40并发 | 3.6 |
7节点-70并发 | 6.7 |
单节点-20并发 | - |
4节点-80并发 | 3.6 |
7节点-140并发 | 6.1 |