有没有一种干净的方法可以以Java异步,非阻塞的方式(例如,状态机,而不是1个查询= 1个线程)来解析DNS查询(通过主机名获取IP)-我想同时运行数万个查询,但是不能运行数万个线程)?
到目前为止,我发现了什么:
InetAddress.getByName()
Future
Fun
还有其他我想念的想法/实现吗?
澄清 。我有相当大的日志(每天数TB)。每个日志行都有一个主机名,该主机名几乎可以来自Internet上的任何地方,我需要该主机名的IP地址来进行进一步的统计计算。行的顺序并不重要,因此,基本上,我的想法是启动2个线程:首先遍历行:
第二个线程将:
epoll
kqueue
在Perl中使用的一个简单模型实现AnyEvent向我展示了我的想法通常是正确的,并且我可以以这种方式轻松实现每秒15-20K查询的速度(天真的阻塞实现每秒获得2-3查询- 只是为了比较-所以大约相差4个数量级)。现在,我需要在Java中实现相同的功能-我想跳过推出自己的DNS实现;)
AnyEvent
您可能正在寻找MINA之上的Apache Directory Services DNS实现。JavaDocs和其他有用的指南在该页面的左侧栏中。