出于研发需要,集团将全网生产数据同步至非生产环境,为保证重要的数据资产(如手机/银行卡/地址/订单金额等)不被泄露,需要先进行脱敏。通过此中间件,我们的运维同学只需要在配置好数据库后通过一行命令即可完成脱敏,真正做到高效、安全、易用。
此项目完全由本人单独完成,采用了 Node.JS(JavaScript 宿主环境),主要使用了 commander, chalk, inquirer, mysql, ora, workpool, pkg.js 等第三方 npm 包。同时根据集团要求自主设计了脱敏算法。
此项目的难点在于:
1. 性能:需要脱敏数据总量庞大(达数亿级),若性能太差势必导致工作进展缓慢。
解决方案:采用响应式编程,充分复用多核资源并行处理,大大提高程序性能,在 4c8g 的机器上压测千万数据全部完成脱敏全流程(读取+脱敏+写回)仅花费 7 分钟
2. 算法无状态:为提高易用性及节约成本,脱敏程序全程不能依赖任何存储资源运行。这对脱敏算法的设计提出了极高的要求,(以手机号脱敏为例)需要综合考虑算法的幂等性、不可逆性、真实性、唯一性等,同时还要确保在算法泄露的情况下也难以进行