문제

우리는 클라이언트/서버 프로그램을 설계하고 있으며 설계 결정에 대한 도움이 필요합니다.

프로그램의 서버 측은 여러 Windows 서버에서 서비스로 실행되며 서비스는 해당 서버를 모니터링하고 필요할 때 서비스가 우리에게 보고서를 이메일로 보냅니다.

클라이언트는 서버에서 실행되는 서비스를 제어하고 관리하는 데 사용되지만 항상 실행되지는 않습니다.

내 질문은 서비스 구성을 어디서 어떻게 저장 해야하는지입니다. 설정 (SMTP 등)은 클라이언트에서 정의되지만 원격 서버에서 실행되는 서비스 (많은 경우)는 설정으로 업데이트되어야하며 해당 설정을 다시 업데이트해야합니다.

서비스가 설정을 읽거나 클라이언트가 '저장'시점에 따라 설정이 각 서버의 위치에 저장되는 경우 중앙 Windows 공유의 두 가지 옵션을 생각할 수 있습니다.

당신은 무엇을 하시겠습니까? 내가 알아야 할 것이 있습니까?

감사

도움이 되었습니까?

해결책

나는 그러한 서비스에 대한 경험이 없지만 제안은 그들이 모두 액세스 할 수있는 중앙 데이터베이스에 설정을 저장하는 것일 수 있습니다. 따라서 새 서버를 만들 때마다 데이터베이스에서 새 설정 항목을 만듭니다.

이것을 토론에 던지는 것입니다.

다른 팁

클라이언트와 여러 서버와 관련된 시스템을 개발했습니다. 내 시스템의 요구 사항에는 매우 신뢰할 수 있고 고도로 이용 가능하다는 것이 포함됩니다 (이는 요구 사항이 아닐 수도 있음). 그 관점에서, 여기에 몇 가지 생각이 있습니다.

  • 설정을 중앙 위치 (파일 공유 또는 데이터베이스)에 저장하는 경우 분산 시스템에서 단일 고장 지점을 생성했습니다. 해결 방법은 설정을 2 개 이상의 중앙 위치에 저장하는 것입니다. 그러나 2 개 이상의 위치가 동기화되어 있는지 어떻게 보장합니까?)

  • 각 서버의 설정을 저장하는 경우 설정을 저장하려는 순간에 하나의 서버로 클라이언트/서버 통신이 실패하거나 서버 중 하나가 UP가 작동하지 않으면 어떻게해야합니까? 이제 서버가 설정이 무엇인지에 대해 동의하지 않는 상황이 있습니다. 다시 말하지만, 여러 서버가 동기화되도록하려면 어떻게해야합니까?

  • 따라서 .... 서버를 신뢰할 수있는 방법과 동기화되지 않은 경우 감지 할 수있는 방법에 대해 생각해보십시오. 내 시스템에는 서버간에 마스터/슬레이브 체계가 있으며, 시퀀스 번호가있는 하트 비트가있어 노예가 동기화되어 있고 메시지를 놓치지 않았 음을 끊임없이 보증 할 수 있습니다. 마스터가 다운되면 시스템이 저하되지만 여전히 작동하므로 마스터가 치명적인 실패의 단일 지점이 아닙니다.

여기에는 고려해야 할 사항이 많이 있습니다.

명백한 선택은 서버 엔드의 레지스트리, 파일, 데이터베이스 여부에 관계없이 저장소입니다. 서비스로드되면 컬렉션에서 이러한 모든 설정을 가져 왔습니다. 그러나 서버 엔드에 서비스를 추가하면 다른 작업을 모니터링 할 때 발생합니다.

이제 한 서버를 통해 Databse에서 매개 변수가 업데이트 된 경우 다른 서비스를 통해 업데이트에 대한 정보를 제공하고 재건이 필요하기 때문에 이제 문제가 발생합니다.

많은 IPC Machenism IE 대기열, 공유 메모리, 파이프, 많은 서비스간에 소켓을 소개하여 이것을 극복 할 수 있습니다. 서비스가 중앙 서버 나 데이터베이스에 대기열이 배포되지 않거나 대기열이 아닌 경우 공유 메모리를 제안합니다. 더 나은 옵션으로. 그러나 서비스는 여전히 매개 변수의 업데이트에 대한 다른 서비스에 대한 힌트를 제공하는 방법을 협력해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top