2010-12-10 2 views
2

Linux 또는 Windows에서 여러 개의 병렬 비동기 DNS 확인 요청을 (프로그래밍 방식으로) 제공하더라도 OS가 요청을 직렬화하고 모두 병렬로 보내지는 않습니까? 내가으로 gethostbyname 또는 DnsResolve API를 가장 낮은 계층의 직렬화 장소에서 읽으면서클라이언트 OS의 DNS 쿼리가 직렬화되어 있습니까?

, 심지어 사람이 dramaticcally DNS 해상도

http://www.catonmat.net/blog/asynchronous-dns-resolution

그래서 밤은 거기에 하나를

속도를 높이기 위해이 비동기 DNS 파이썬 라이브러리를 작성했습니다. NET API 또는 일반적으로 내 프로그램에서 제공하는 요청 수만큼 병렬 처리 할 수 ​​있습니까?

초당 많은 dns 쿼리가 필요한 웹 크롤링 시나리오를 상상해보십시오. 일부 초기 웹 크롤링 게시에서는 dns에 병목 현상이 발생한다고 언급되어 있습니다.

+0

나는 질식합니다. 실제로 연재 된 것처럼 보였습니다 .... – BarsMonster

+0

예. C#에 대한 병렬 라이브러리가 필요합니다. –

답변

1

Linux에서 gethostbyname()은 효과적으로 직렬화됩니다. 이는 실제로 응답이있을 때까지 호출자에게 반환되지 않기 때문입니다. 그러나 이것은 라이브러리 구현에 이르기까지이며,이를 수행하는 O/S가 아닙니다.

gethostbyname을 대체 할 수있는 라이브러리가 많이있어 비동기식 해결을 수행하므로 한 번에 여러 쿼리를 진행할 수 있습니다. 이러한 라이브러리 중 특히 좋은 라이브러리는 Unbound 재귀 DNS 서버 배포의 일부인 libunbound입니다.

+0

Windows에서 .NET에 적합한 비동기 라이브러리가 있습니까? –