将客户端开启、关闭、修改认证功能后台执行。
一、后台执行过程中出现错误或者遇到系统重启时自动修复。
二、自动修复未启动前,提供提前修复按钮。
三、每个客户端在线程执行过程中提供提前操作处理。
四、前端展示进度。
五、自定义账户展示、恢复默认账户功能。
限制:
1、线程运行过程中或者出现运行错误时不能运行其他线程。(考虑优化为出现错误时,可以运行其他线程。)
2、线程运行过程中不能删除客户端。
3、线程运行过程中还没处理的客户端不能单独操作认证。
实现:
需求一实现方案:
原定方案:
线程开启、关闭、修改时,在mon db中写入任务执行状态(operation_type: 0-开启,1-关闭, 2-修改, status: running-运行中, end:执行遇到错误或者系统重启。 end-running-后台修复线程执行中)、认证信息以及所有的客户端信息、进度信息,每处理一个客户端则删除一个客户端,并更新进度。
问题:
每次处理一个客户将端的操作在客户端少的时候不会对性能有影响,但是当客户端达到1000左右时,写入mon db的操作将是一个比较耗时的操作。
优化方案:
1、线程开始后客户端信息、进度信息不存入mon db,针对执行过程中客户端是否已经被开启和关闭是可以通过客户端当前认证状态获取的,针对修改的情况,每次线程处理或者提前处理以后,将已经处理的客户端存储到内存中来达到判断客户端是否已经被修改。
2、进度信息存储在内存中,如果后台任务运行过程中遇到错误或者重启,修复线程运行时进度重新计算,注意,修复线程运行时的进度为总客户端数减去之前已经被提前处理的