2014-03-14 2 views
1

나는 그것을 조작 할 수있는 RESTful 웹 서비스 (이 서비스는 모든 CURD 작업을 허용 함)와 시스템 데이터를 표시하는 웹 클라이언트 (대부분의 클라이언트가 jQuery로 작성 되었음)를 사용하는 시스템에서 작업하고있다. 표준 운영 시나리오에는 메인 서버와 적어도 하나의 백업 서버가 있으므로 최소한 두 개의 RESTful 웹 서비스가 있어야합니다.클라이언트 측에서 REST 서버의 내결함성을 구현하는 방법은 무엇입니까?

내 질문에 내 주 서버가 충돌하는 경우 어떻게 주 서버를보고 있던 클라이언트가 사용자 조작없이 백업 서버를보고있게 할 수 있습니까?

+0

클라이언트에서 일부 라운드 로빈 메커니즘을 구현할 수 있습니다. 그러나 결국 서버 측 (고 가용성,로드 밸런싱 등)에서 문제를 해결하는 것이 더 나을 것입니다. – TGlatzer

+0

하지만 서버 측 솔루션은 주 서버가 완전히 충돌하고 요청을 백업 및 뷰어 클라이언트는 모든 시스템이 될 수 있습니다 (시스템의 유무에 상관없이). – user2579277

답변

1

가장 좋은 방법은 클라이언트가 을 수행하는 것입니다. 서버 장애를 처리하는 데는 전혀이 필요합니다. 그것은 고객의 책임이 아니며 절대로해서는 안됩니다. 프록시 서버 및로드 밸런서와 같은 서버 측 기술은 서버 오류를 처리하는 데 가장 적합합니다.

가장 일반적인 접근 방식은 "기본 서버"의 사고 방식에서 벗어나 대신 각각의 REST 요청을 처리 할 수있는 서버 클러스터를 만드는 것입니다. REST 요청이 상태 비 저장 (및 있어야 함)되어 클러스터의 임의의 서버로 라우팅 될 수있는 경우 클러스터 앞에로드 밸런서를 사용하여 서버의 실패를 처리 할 수 ​​있습니다.

부하 분산 장치가 서버가 작동하지 않는 것을 감지하면 서버는 회전을 해제합니다. 또한이 모델은 확장 성을 높이는 데 도움이됩니다. 계층에서 더 많은 서버를 회전시키고로드 밸런서에 자체 등록하도록함으로써 REST 서버 계층을 확장 할 수 있기 때문입니다.

또한 DNS를 사용하여 서버 장애로부터 클라이언트를 보호 할 수 있습니다. 현재 활성 상태 인 서버로 DNS 레코드 포인트를 변경하고 주 서버가 다운 될 때 수정하십시오. 그러나 TTL은이 기술이 적당한 시간 내에 작동하도록하려면 매우 낮아야합니다. DNS는 노드 오류가 아닌 전체 데이터 센터 오류를 처리하는 데 더 적합하지만 상당히 포괄적 인 옵션이지만 선택 사항입니다.

+0

공간 제한으로 인해 하나의 기본 서버와 백업 서버 만 가질 수 있습니다. 두 서버는 모두 독립적이며 함께 작업 할 수 있습니다. 그리고 나는 주 서버의 완전한 충돌에 대한 해결책을 원한다. – user2579277

+0

DNS,로드 밸런서 또는 내가 언급 한 다른 기술이 모두 해당 상황에 적용됩니다. –

관련 문제