다음을 통해 공유


분산 라우팅 테이블 검색

애플리케이션이 DRT(분산 라우팅 테이블)를 검색하려면 먼저 검색 쿼리를 만들어야 합니다. 원하는 키 값은 DrtStartSearch 함수가 호출될 때 애플리케이션에서 지정합니다. 검색 동작은 DRT_SEARCH_INFO 구조에서 애플리케이션에서 지정한 정보에 따라 결정됩니다.

일반적으로 애플리케이션 이벤트는 검색이 결과를 검색할 때 신호를 받고 다른 하나는 검색이 끝날 때 신호를 줍니다. 그러나 DRT_SEARCH_INFO에서 fIterative 설정된 경우, 각 노드와 접촉할 때 애플리케이션 이벤트를 신호로 보낼 수 있습니다.

이벤트가 신호를 받은 후 애플리케이션은 결과에 대한 DrtGetSearchResult 함수를 호출합니다. 반환된 코드가 S_OK경우 API에서 반환된 DRT_SEARCH_RESULT 구조에서 결과가 가리깁니다. 반환된 결과는 DRT_SEARCH_INFO지정된 값 범위에 속합니다. 검색에서 일치하는 항목을 찾지 않은 경우 결과 반환이 끝날 때 DRT_E_NO_MORE 값만 반환됩니다.

다음 정보는 DRT_SEARCH_INFO 포함된 멤버가 애플리케이션이 DRT 인프라의 검색 동작을 구체적으로 지시할 수 있도록 하는 방법을 자세히 설명합니다.

fAllowCurrentInstanceMatch (현재 인스턴스 매칭 허용)

기본적으로 DRT 검색 결과에는 로컬 노드 외부에서 찾은 일치 항목만 포함됩니다. fAllowCurrentInstanceMatch 설정하면 검색 결과에 로컬 DRT 인스턴스에 있는 일치 항목도 포함됩니다.

cMaxEndpoints

검색에서 반환되는 결과의 수량 및 범위는 애플리케이션에서 cMaxEndpoints(수량) 및 pMinimumKeypMaximumKey(범위) 값을 사용하여 지정하고 DRT_SEARCH_INFO참조합니다.

cMaxEndpoints = 1 일 때, DRT 인프라는 DRT_SEARCH_INFO에서 pMinimumKeypMaximumKey 사이의 지정된 범위 내에서 하나의 일치 항목을 반환하며 키를 검색합니다. 이 일치 항목은 정확히 일치하거나 범위 내에서 가장 가까운 일치 항목일 수 있습니다. 일치 항목을 찾을 수 없으면 DRT_E_NO_MORE 반환됩니다.

cMaxEndpoints > 1인 경우, DRT 인프라는 범위 내에서 cMaxEndpoints값까지 일치하는 항목을 반환합니다. 반환된 일치 항목은 범위 내에서 정확한 일치 또는 가장 가까운 일치 결과를 포함할 수 있습니다. 또한 pMinimumKeypMaximumKey 동일한 값으로 설정된 경우 해당 값에 대해서만 검색이 수행되고, 찾을 수 없는 경우 DRT_E_NO_MORE 반환합니다.

fAnyMatchInRange

fAnyMatchInRange 멤버는 첫 번째 일치 항목이 지정된 범위 내에 있는 후 검색이 중지되는지 또는 DrtStartSearch API에 지정된 키와 가장 가까운 일치 항목에 대한 검색을 계속할지 여부를 나타냅니다. fAnyMatchInRange 설정되면, DRT_SEARCH_INFO에 지정된 cMaxEndpoints 값과 관계없이 cMaxEndpoints = 1 값으로 검색이 수행됩니다.

fIterative

fIterative 멤버는 DRT 인프라에서 검색 중에 연락한 각 노드의 키/엔드포인트 데이터가 DRT_SEARCH_RESULT통해 애플리케이션에서 사용할 수 있도록 지정하는지 여부를 설정합니다. 반복TRUE로 설정하면 cMaxEndpoints = 1 값이 강제로 설정됩니다. 반복 DRT에 대한 검색 쿼리 내에서 TRUE 설정되면 각 노드 또는 "홉"과 접촉한 후 애플리케이션이 다시 호출됩니다. 각 홉 결과에는 DRT가 다음에 검색할 노드를 나타내는 키가 포함됩니다. 홉 결과는 DrtGetSearchResult를 통해 DRT_MATCH_INTERMEDIATE 결과로 반환됩니다.

pMinimumKey 및 pMaximumKey

pMinimumKeypMaximumKey 멤버를 사용하여 범위 내에 속하는 키를 검색할 수 있습니다. fAnyMatchInRange 멤버가 FALSE 설정된 경우 DRT는 범위 내에 있는 검색 대상(DrtStartSearch 함수에 전달된 pKey 인수를 사용하여 지정됨)에 가장 가까운 키를 반환합니다. pKey 인수는 DrtStartSearch에 전달되며, pMinimumKeypMaximumKey이 정의하는 범위 내에 있어야 합니다. 정확한 키를 찾으려면 pMinimumKey, pMaximumKey, 그리고 pKey를 동일한 값으로 설정하십시오.

키 등록 및 등록 취소

분산 라우팅 테이블에 관한

분산 라우팅 테이블 API 참조