Gre*_*Cat 28 java dns asynchronous event-driven nonblocking
是否有一种干净的方法以非阻塞的方式异步解析Java中的DNS查询(通过主机名获取IP)(即状态机,而不是1个查询= 1个线程 - 我想同时运行数万个查询,但是没有运行成千上万的线程)?
到目前为止我发现了什么:
InetAddress.getByName()
实现是阻塞的,看起来标准Java库缺少任何非阻塞实现.Future
范式使用,以及非常有限的仅限队列的实现.Fun
类我错过了任何其他想法/实施?
澄清.我有一个相当大(每天几TB)的日志量.每个日志行都有一个主机名,可以来自互联网上的任何地方,我需要一个IP地址作为我的进一步统计计算的主机名.行的顺序并不重要,所以,基本上,我的想法是开始2个线程:首先迭代线:
第二个线程将:
epoll
/ kqueue
like技术)Perl中的一个简单的模型实现AnyEvent
向我展示了我的想法通常是正确的,我可以通过这种方式轻松实现每秒15-20K查询的速度(天真的阻塞实现每秒2-3次查询 - 只是为了比较 - 所以这就像4个数量级的差异).现在我需要在Java中实现相同的 - 我想跳过我自己的DNS实现;)