2011-09-28 6 views
3

WCF 웹 서비스에 대한 사용자 데이터베이스를 캐싱하여 웹 응용 프로그램의 성능과 확장 성을 높이는 계획을 세우고 있습니다. 목표는 데이터베이스 서버의 왕복과 비교하여이 데이터에 액세스하여 성능을 향상시키는 것뿐 아니라 데이터베이스 서버의 부하를 줄임으로써 서비스의 확장 성을 향상시켜 더 많은 웹 서버를 추가하여 규모를 늘릴 수 있도록하는 것입니다.AppFabric 대 sqldependency 성능을 지닌 asp.net 캐시

AppFabric을 연구 할 때 캐시 사이트에 왕복으로 데이터베이스 왕복을 대체하는 것처럼 보이기 때문에 실제 상황에서는 값이 표시되지 않습니다. 마치 노드를 동기화 상태로 유지하는 데 필요한 오버 헤드보다 더 많은 오버 헤드가있을 수있는 것처럼).

성능상의 문제로, asp.net 캐시 (프로세스 중)를 사용하면 데이터가 해당 서버의 메모리에 있더라도 캐시 클러스터로의 왕복보다 훨씬 빠르며 일부 그것의 로컬로 캐싱됩니다 (나는 여전히 웹 애플 리케이션에서 프로세스의 부재라고 생각).

확장 성 문제로 인해 캐시 클러스터를 별도로 관리하지 않고 웹 팜에 동일한 웹 서버를 추가하는 것이 더 쉬워 보입니다.

그렇다면 누군가 내 목표가 주어진다면 다른 접근법을 선택하는 이유를 설명 할 수 있을까요? AppFabric 접근 방식을 권장하는 경우 asp.net 캐시에 데이터를 저장하는 것보다 성능이 더 좋은 방법을 설명 할 수 있습니까?

감사합니다.

답변

2

앱 패브릭 캐시가 프로세스 외에서 저장되었다고합시다.

앱 패브릭 캐시 항목에 대한 요청이 들어 오면 먼저 항목이있는 위치를 찾은 다음 항목을 가져 오는 wcf net.tcpip를 호출합니다. 따라서 asp.net 캐싱보다 느려집니다. 그러나 appfabric 캐싱이 더 좋은 경우가 있습니다.

  • 응용 프로그램 풀이 재활용 될 때 캐시가 손실되지 않습니다.
  • 당신은 당신이 당신의 Windows Enterprise Edition을 실행하는 경우 캐시를 느슨하게하지 않는
  • 기계가 아래로
가는 경우가 아닌 100 배 한번 데이터베이스에서 데이터를 얻을 필요가 100 개 웹 서버가있는 경우
+0

감사합니다. 쉬라즈, 좋은 정보. 몇 가지 질문이 있습니다. 캐시 데이터에 대한 요청이 프로세스 외의 다른 시스템에서 발생했기 때문에 데이터베이스에 직접 연결하는 것보다 성능이 향상되지 않을 수 있습니다. 아마도 데이터베이스 성능이 더 나빠질 수도 있습니다.그렇다면 클러스터에 더 많은 컴퓨터를 추가하여 AppFabric 계층을 쉽게 확장 할 수 있다는 이점이 파티션 분할 등을 통해 데이터베이스를 확장하는 것입니다. 올바른 가정입니까? – user969996

+1

데이터베이스가 디스크로 이동해야하기 때문에 Appfabric이 데이터베이스보다 빠릅니다. 로컬로 캐싱하도록 appfabric을 구성 할 수 있지만 처리 중입니다. –

1

codeproject에서 this topic을 찾았습니다. 희망이 당신의 질문에 대답 할 수

0

다른 옵션으로 NCache 고려해야합니다. NCache는 데이터베이스와 관련된 병목 현상을 줄여주는 매우 빠른 메모리 내장형 캐시로, 응용 프로그램의 확장 성을 향상시킵니다.

asp.net 캐시의 사용에 관한 한, 그 한계점을 염두에 두어야합니다. 소규모 웹 농장에만 적합합니다. 그러나 서버 수가 증가하면 asp.net 캐시는 처리 과정의 특성으로 인해 성능 및 확장 성 문제로 끝날 수 있습니다. 더 큰 웹 가든에서는 메모리 내 분산 캐시가 필요합니다. 참조 용 Read this