在写API网关的过程中,我负责的是编写设置黑白明白名单,防火墙的代码部分,基本的逻辑是,设置一个专门的文件记录黑名单,在Java类中声明静态集合来存所有的黑名单ip,在添加新的ip的时候先写入静态集合中,然后更新文件。
在最初写完之后,发现当快速多次请求的时候,会出现静态集合中的ip和文件中的不一样,开始不知道什么原因,一步步筛选,打印各个环节,逐渐缩小范围。最终发现当同时多次请求,会出现内存中可以更新,但是文件写入需要时间,同时写入会出现覆盖的情况。
最终采用的是将最后内存的数据写入文件一次就可以了