0

투표가 끝난 후, 나는 겸손하게 내 게시물이 거대한 호언임을 깨달았다. 그래서 나는 그것을 편집했고 이것을 단지 내가 알고 싶어하는 질문으로 요약했다.)AWSDBProxy를 사용하고 있습니까? 스케일 아웃 할 때 성능이 저하됩니까?

아마존의 SimpleDB를 레일 사이트에서 사용하는 것에 관해 이야기하는 유일한 자습서는 AWSDBProxy를 사용하고있는 것처럼 보입니다 ... 개인적으로이 방법은 수평 확장에 직관적이라고 생각합니다. (AWSDBProxy 사용) 아래의 전형적인 레일 사이트의 서버 레이아웃 고려 :

플러그인 여기 : http://agilewebdevelopment.com/plugins/aws_sdb_proxy

이미지 여기 : http://www.freeimagehosting.net/uploads/91be4e0617.png

당신이 볼 수 있듯이, 우리는 더 많은 놈아을 추가 할 경우에도, 우리가을 두 가지 문제.

  1. 우리는 우리의 부하 분산 장치보다 훨씬 덜 안정 단일 장애 지점이
  2. 우리는이 하나 개 에 WEBrick 서버

솔루션은 물론,를 통해 모든 정보를 강제로, AWSDBProxies를 더 추가하려면 ...하지만, 다음 코드를 사용하여 클래스를 작성하고 프록시를 모두 건너 뛰는 이유는 무엇입니까? 당신이 당신은 그것을 정당화 무엇인가, AWSDBProxy 사용을 경우

service = AwsSdb::Service.new(Logger.new(nil), 
           CONFIG['aws_access_key_id'], 
           CONFIG['aws_secret_access_key']) 
service.query(domain, query) 

은 그래서에서 받고 있어요 무엇입니까? 그리고 만약 당신이 그것을 실제로 사용한다면 당신의 연주는 어떻습니까? 어려운 번호가 있으면이 사실을 더욱 높이 평가할 수 있습니다!

감사합니다.

+0

아래로 투표 삭제하십시오. ;) 또한 AWSDBProxy 프로젝트에 링크하는 데 도움이 될 수 있습니다. 코드 스 니펫을 추가하고 Google에 모듈 이름을 추가 할 때까지는 Google을 실행할 수 없었습니다. – Otto

+0

Otto :) 감사합니다. 가끔은 그냥 조금만 헤쳐야합니다. 팁 주셔서 감사합니다, 지금 편집하겠습니다! –

답변

1

나는 그것을 사용하지도 않고 들어 본 적이 없지만 이것이 합당한 이유라고 생각한다.

  1. EC2에서 주 앱 서버를 실행 중이므로 인터넷 FAIL의 기회가 두 번 이상 실제로 영향을 미치지 않습니다.
  2. 각 앱 서버에서 하나의 프록시를 실행합니다. 따라서 연결이 끊어지는 것은 데이터베이스 연결이 연결되는 것보다 나쁘지 않습니다.
  3. 할 수 있기 때문에. 이것은 오픈 소스 프로젝트에서와 마찬가지로 좋은 이유입니다. 그 일이 좋든/나쁜 생각인지를 알기도 전에 일을 짓는 것이 때때로 있습니다.
  4. 부하 분산 장치가 필요한 트래픽 수준이 없습니다. 그런 다음 다이어그램이 하나의 시스템이 아니라면 한 줄로 축소됩니다.
+0

모든 좋은 추론. 메모리 객체와 간단한 클래스에서 내부 웹 요청을 처리해야한다는 아이디어가 마음에 들지 않는다고 생각합니다. 내가 동의하지 않은 유일한 이유는 # 4입니다. 스케일 아웃에 대해 묻기 시작한 이래로 : D,하지만 애플리케이션 서버 당 프록시는 그렇게 나쁘지는 않습니다 ... –

+0

일부 사용자에게는 단단한 숫자 게시물, 그게 내가 가장 관심이 있기 때문에.사용 편의성은 뛰어나지 만 여러 응용 프로그램 인스턴스를 단일 프록시 서버로 집어 넣으면 목적을 달성 할 수 없습니다. 그래도 hte 대답 주셔서 감사합니다! –

+0

내부 HTTP 요청은 아파치 나로드 밸런서 같은 HTTP 프록시를 제외하고 거의 확실하게 코드 냄새가 난다. :) 저는 하나의 프로젝트에서 HTTP 인터페이스를 각 EJB에 배치 한 다음 HTTP를 통해 서로 이야기하기 위해 모두 다시 작성했습니다. 그게 빨려. – Otto

관련 문제