2008-11-03 5 views
6

저는 많은 모듈 식 웹 응용 프로그램으로 구성된 웹 제품에서 작업하고 있습니다. 최종 사용자에게는 다양한 구성 요소가 자체 응용 프로그램으로 나뉘어져 있지만 하나의 응용 프로그램으로 보입니다..NET의 서비스 계층에 대한 확장 전략

이렇게 추론하는 이유는 여러 응용 프로그램 서버에서 가로로 쉽게 확장 할 수 있기 때문입니다.

데이터 계층의 수평 확장을 쉽게하기 위해 데이터베이스 앞에 웹 서비스 계층을 사용할 계획입니다. 이 계층은 N 개의 기계로 확장 될 수 있으며 각 인스턴스는 개별적으로 캐싱을 처리합니다.

아이디어는 응용 프로그램이 서비스 인스턴스로드 균형 조정기를 호출하여 서비스 인스턴스에 호출을 할당하면 캐시를 사용하여 데이터를 반환하거나 데이터베이스에 연결하고 데이터. 이것은 애플리케이션 코드를 크게 수정하지 않고 스케일 아웃 (scaling out)하는 가장 쉬운 전방 솔루션 일 것 같습니다.

[N Amount of Databases] 
     | 
     \/ 
[Service Tier X N amount of Machines] 
     | 
     \/ 
[Application Tier X n amount of Machines] 

몇 가지 질문 그러나 내가 세션 데이터를 유지하는 것입니다 방법에 대한 불확실 해요, 각 응용 프로그램은 그냥 토큰으로 인증 할 수 있도록, 서비스 수준에서 사용자 세션을 유지하고 싶습니다,하지만 올 단일 지점에서 장애가 발생하지 않고 모든 서비스 시스템에서

이 문제를 해결하는 방법에 대한 아이디어가 있으십니까? 건축에 대한 다른 아이디어? 다른 사람이 하루에 수백만 회의 히트를 처리 할 수있는 사이트를 설계하는 프로젝트를 갖고 있습니까?

편집 : 생각조차하지 않습니까? :(

답변

2

당신은 memcached와 (http://www.danga.com/memcached) 또는 곧 MS 속도 프로젝트 (http://code.msdn.microsoft.com/velocity)로 분산 캐싱 메커니즘을위한 완벽한 유스 케이스를 설명했습니다.

당신이 증가를 당신이 설명하는 상황에서 각 개별 인스턴스가 다른 서비스 계층에서 동일한 데이터에 액세스 한 경우에도 로컬 캐시를 채우기 위해 데이터베이스에서 동일한 데이터를 검색해야하기 때문에 캐시의 유용성은 새로운 상자마다 줄어 듭니다. memcached 또는 Velocity를 사용하면 캐싱 메커니즘이 모든 서비스 계층 설치가 공유 할 수 있도록 모든 서버에서 사용되지 않는 RAM을 지능적으로 단일 캐시로 결합합니다. 데이터에 액세스하는 첫 번째 서비스 계층 인스턴스는 데이터베이스를 사용해야하고 다른 서비스 계층 인스턴스에 의한 후속 액세스는 캐시에서 동일한 데이터를 가져옵니다.

동일한 캐시를 사용하여 사용자 세션에 대한 상태 값을 쉽게 저장할 수 있고 모든 서비스 계층 인스턴스가이 동일한 정보에 액세스 할 수 있으므로이 위치를 유지하면 사용자 세션 질문에 응답합니다.

희망이 도움이됩니다.

아담

관련 문제