高效匹配百万级黑名单
資深大佬 : myzincx 20
小白请教大家一个问题,
项目有个需求,有一个百万级的黑名单库,
是如五元组之类的信息库,
在万兆网口上进行抓包,要求在满载的情况下能不丢包还能实时匹配黑名单库进行报警等处理
开发语言是 c++,请问大家有什么较好的解决方案吗?
大佬有話說 (2)
小白请教大家一个问题,
项目有个需求,有一个百万级的黑名单库,
是如五元组之类的信息库,
在万兆网口上进行抓包,要求在满载的情况下能不丢包还能实时匹配黑名单库进行报警等处理
开发语言是 c++,请问大家有什么较好的解决方案吗?
就按每秒一百万个包来算,这已经不是 C++这个编程语言本身的问题了。当然不能触发内存分配这种潜台词就不提了,这是必须要做到的。
这个黑名单库如果要动态更新,就有并发锁的问题。内存充足( x86 体系)情况下,可以直接创建新的 Hash,然后在临界区交换 /清空上述 Hash/缓存的指针即可。这样临界区通常是可以做成无锁的形式 [难点] 。
报警之类功能思路跟上述一致,也就是内核驱动开发常说的 top/bottom half 避免性能问题。转发层面尽量快,后续耗时的工作放到额外线程甚至进程里边去做。
Bloom Filter 用来统计百万日活文章阅读量还好,不适合数据转发过滤的偏底层业务场景。