2013-05-15 4 views
0

아래 시스템 설계에 대한 제안이 필요합니다. 요구 사항은 4 개의 App Server가 4 개의 DB 서버에 연결되어 있습니다. 사용자는 모든 앱 서버를 사용하여 4 개의 앱 서버에서 호스팅되는 동일한 애플리케이션에 액세스 할 수 있습니다. 그러나 한 서버의 사용자가 업데이트 한 데이터는 다른 App 서버에서 동일한 앱에 액세스하는 사용자가 즉시 사용할 수 있어야합니다.디자인 패턴 데이터 동기화를위한 제안

그런 종류의 동기화를위한 디자인 패턴이 있습니까?

+0

미러링 또는 복제라고하며 일반적으로 데이터베이스 수준에서만 해결해야합니다. 너 자신을 위해 무엇을 시도 했는가? – CodeCaster

+0

에 몇 가지 검색어가 있습니다. 1.로드 밸런서 뒤에있는 앱 서버입니까? 이상적으로 그것은 그렇게되어야합니다. 2. 4 개의 DB 서버가 미러입니까? – Jack

+0

@CodeCaster : 답장을 보내 주셔서 감사합니다. 그러나 데이터베이스 대신 응용 프로그램 디자인 수준에서 솔루션을 찾도록 요청 받았습니다. 이 문제에 대해 기존의 GoF 패턴을 구현할 수있는 아이디어가 있습니까? – SAM

답변

0

"데이터베이스 대신 응용 프로그램 디자인 수준에서 솔루션을 찾아야합니다."-이 경우 DB 서버가 4 개 뒤에 있다는 사실은 부적합합니다.

응용 프로그램 수준에서 해결되어야하므로 이러한 응용 프로그램 서버는 일부 미디어를 통해 통신해야합니다. 다른 사람들이 이미 말했듯이, DB는 정상적인 선택이지만, 귀하의 요구 사항은 그것을 배제합니다.

따라서, 앱 서버는 모두이 보통이다 '진실'

무엇에 동의하도록 (예를 들어,이 Paxos은 꽤 잘 알려져 있습니다) 어떤 합의 확인 프로토콜을 자기들끼리 의사 소통을하고 구현 할 수 있어야합니다 인프라 수준에서 완료되고 앱 자체에서는 완료되지 않습니다. 일부 분산 캐시 (예 : memcached 또는 redis 클러스터 -하지만 후자는 아직 준비되지 않음)를 사용하는 것이 좋지만 다른 요구 사항 (내구성 등)에 따라 다릅니다. 또한 IMO는이 문맥에서 데이터베이스 정의에 해당합니다. 즉, 앱 수준이 아닌 인프라 수준입니다.

'응용 프로그램 디자인 수준에서 솔루션 찾기'요구 사항은 다소 복잡한 것으로 보이고 기능 요구 사항에 의해 구동되지 않거나 불량한 비 기능 요구 사항에 의해 유도되지는 않지만 잘못된 것일 수 있습니다. 나는 이것이 성능 요구 사항에 의해 좌우되는 것을 상상할 수 있지만 이것은 성능을 쉽게 떨어 뜨릴 것입니다.

+0

예. 나는 동의한다. 4 개의 DB 서버가 있기 때문에 성능이 떨어지게됩니다.이 경우 DB 서버가 하나만있는 것처럼 사용하려고 시도합니다. – Jack

+0

좋아, 실용적인 시나리오를 말해 보자. 어떤 은행이라고해도. 그것은 도시 전역에 50 개 이상의 지점이 있습니다. 은행은 앱 서버와 DB 서버를 분기별로 구성합니다. 그러나 요구 사항은 고객에게 액세스 할 때마다 표시되는 정보가 업데이트되는 지점에 관계없이 최신 정보 여야합니다. 이런 종류의 환경을 어떻게 설정할 수 있습니까? 어떤 제안? – SAM

관련 문제