문제

어떻게 큰 웹 사이트할 수 없는 완전히 무국적을 달성 확장성이 뛰어난 웹서 계층?

사이트 같은 이베이와 아마존할 수 없습니다 완전히 무국적으로,그들은 쇼핑하거나입니다.그렇지 않은 가능한 인코딩하는 모든 쇼핑 바구니에 항목으로 URL 이 아니며,그것은 가능한 인코딩하는 모든 항목으로 쿠키를 보내에 모든 연결합니다.그래서 아마존이 단순히 상점이션-id 로는 쿠키가 전송됩니다.그래서 나는 이해하는 확장성의 웹 계층의 이베이와 아마존해야보다 훨씬 더 강한 확장성의 google 검색 엔진,모든 것을 인코딩할 수 있으로 편안하는 URL.

다른 한편으로,두 eBay 뿐만 아니라 아마존 조정 절대적으로 대규모.소문은 거기에 몇 가지 15000J2EE 응용 프로그램 서버에서 eBay.

어떻게 이러한 사이트를 모두 처리:극단적인 확장성과 의 상태?으로 사이트 상태,그것을 가능하지 않을 간단하게 DNS 분산됩니다.그래서 하나가는 이러한 회사는 하드웨어 기반으로 로드 밸런 다음과 같 BigIP,Netscaler 또는 유일한 장치 뒤에는 단 하나의 IP 주소는 사이트입니다.이 부하 분산을 것입을 해독 SSL(는 경우 인코딩된)검사하고,쿠키와 결정에 따라 세션의 id 는 쿠키는 서버 응용 프로그램을 보유하고 세션의 고객입니다.

그러나 이것만 가능하게 작업으로 하나의 로드 밸런서 수 있는 가능하게 부하를 처리의 수천의 응용 프로그램 서버?내가 상상하는 것도 이러한 하드웨어 부하 분산하지 않 규모와 같은 수준입니다.

또한,로드 밸런싱을 수행되고 투명하게 위해 사용자,즉사용자로 전달되지 않은 다른 주소지만,여전히 모든 집단적으로 숙박 www.amazon.com 전체 시간입니다.

그래서 제 질문은:은 거기에 몇 가지 특별한 속으로는 달성할 수 있는 뭔가가 다음과 같은 투명한 분할의 웹 계층(지 않는 데이터베이스 계층으로 일반적으로 수행되)?으로 쿠키지 않은 검사 방법은 없을 알고 있는 응용 프로그램 서버가를 들고 이 세션이 있습니다.

편집: 가 없다는 것을 깨달았만 투명성에 대한 필요성이 있는 경우에 필요한 사이트를 방울져 떨어졌고 북마크.E.g.사이트 단순한 웹 앱 같은 비행기 또는 기차 티켓을 예약 시스템,거기에 아무 문제가 없으로 리다이렉션하는 사용자를 특정 클러스터의 웹 서버 뒤에 서로 다른 url 을,예를 들어,a17.ticketreservation.com.이 특정한 경우,그것을 가능하게만 사용하여 여러 클러스터의 서버 응용 프로그램,각 뒤에 자신의 로드 밸런싱 장치를 의미합니다.흥미롭게도,이 사이트를 사용하는 이런 종류의 개념입니다.편집: 내가 찾은 이 개념 설명highscalability.com, 는 토론 참조하여 문서 레이라는 주홍 "클라이언트 측의 부하 균형을 잡기 위해 웹 2.0 응용 프로그램".레이 주홍 사용하여 십자가 스크립트를 이렇게 클라이언트 측의 로드 밸런싱 제어됩니다.

심지어는 단점이 있 같은 북마크,xss,etc.,내가 생각하는 이 소리는 매우 좋은 아이디어에 대한 특정한 특별한 상황에 즉 거의 콘텐츠에는 무료 웹 응용 프로그램,필요하지 않은 것을 방울져 떨어졌나 북마크(예:항공권 예약 시스템 또는 뭔가).그런 다음 필요가 없을 부하 분산됩니다.

이 될 수 있는 간단한 리디렉션에서 주요 사이트는 서버,예를 들어,리디렉션에서 www.ticketreservation.com 하기 a17.ticketreservation.com.거기에서 사용자가 서버에서 a17.a17 지 서버 클러스터에 의해,그 자체는 중복을 달성될 수 있었습니다.

초기 서버로 리다이렉 수 있는 자체 클러스터 뒤에 로드 밸런싱 장치를 의미합니다.이 방법은 정말 높은 확장성을 달성 할 수 있고,기본으로 로드 밸런 뒤에 www 만 한 번 공격의 시작 부분에서 서비스를 제공합니다.

물론,다른 url 로 리다이렉 매우 더러운,그러나 단순한 웹 응용 프로그램(는 할 필요가 없습 방울져 떨어졌고,깊은 연결 또는 깊은 북마크는 어쨌든),이해야만는 광학 문제에 대한 사용자가?

Redirect-클러스터의 수는 투표는 부하의 응용 프로그램 클러스터와 적응시키 리디렉션을 따라 따라서 달성하 분산하고 단순한 있습니다.

도움이 되었습니까?

해결책

쉽습니다.웹 서버는 무국적자가 부하 균형이다.응용 프로그램 서버를(가운데 계층),를 보유하고 있는 세션 데이터를,수 없습니다.웹 서버에서 사용할 수 있는 세션 id 쿠키를 결정하는 어떤 서버에 연결할 수 있습니다.

Memcached 마이크로 소프트의 속도는 제품이 정확히 필요합니다.

편집:어떻게 웹 서버를 알고 있는 응용 프로그램 서버에 연락하나?이에 포함 세션 id 를 해쉬,그리고 수 일반적으로 수행하는 것입니다.그것은 간단할 수 있으로 세션 id 되는 서버입니다. Memcached 기초은 해시,하지만.

중요한 비트가 클라이언트가를 할 수 있을 것 어떤 응용 프로그램은 서버에서는 무국적자 패션이다.을 할 수있는 가장 쉬운 방법은 그것을 포함 핵심이지만,레지스트리(아마도 그것은 자신의 계층)는 것 뿐만 아니라 작동하고 제공할 수 있는 몇 가지 적용됩니다.

Edit2:여 Ebay 인터뷰, 에,나도 수 있습니다 내역의 자신의 구현을 조금 잘못입니다.그들은하지 않는 캐싱을 하지 않는 상태에서는 중간 계층.그들은 무엇을 부하 균형을 잡는 중간 계층(응용 프로그램은 서버는)분할된 기능이다.그래서,그들의 풀 서버를 위해,예를 들어,., 보 항목입니다.그리고 또 다른 수영장 판매에 대한 항목입니다.

그 응용 프로그램 서버에"스마트"DAL 는 경로로 분할된 데이터베이스(분할에 의해 모두 함수와 데이터를,그래서 그 사용자에게 L 에 Database1,사용자 M-Z 에 Database2,항목 1-10000 에 Items1,etc.).

그들이 없는 상태에서는 중간 계층기 때문에 그들로 분할된 기능이다.그래서 정상적인 사용자 경험을 포함하는 것 이상의 1 수영장 응용 프로그램의 서버가 있습니다.말 당신이 볼 항목(ViewAppServerPool),다음 항목에 입찰(BidAppServerPool).모든 그 응용 프로그램은 서버가 동기화를 유지하기 위해 다음이 필요합이 캐시 모든 것을 관리합니다.하지만,자신의 규모입니다 그래서 큰 것 없이 배포된 캐시할 수 있을 효과적으로 관리하며 수 있는 단일 데이터베이스 서버입니다.이들은 데이터를 분할 계층과 모든 캐시 구현해야에 걸쳐 분할 동일합니다.

비슷한 을 내가 무엇을 게시,그냥 아래로 움직입니다.당신의 웹 서버를 결정하는 응용 프로그램 서버에 접촉,응용 프로그램은 서버를 결정하는 데이터베이스에 연결할 수 있습니다.단,이베이의 경우,그 수 실제로 치 20+데이터베이스는 서버기 때문에 그들의 파티션이 전략입니다.하지만,다시,무국적자 계층에는 몇 가지 종류의 규칙(s)을 사용하는 접촉하는 상태 저장됩니다.이베이의 규정은,그러나,좀 더 복잡한 보다는 단순한"User1 에 Server10"규칙을 설명했다.

다른 팁

당신이 유용하게 사용할 수 있 다음과 같은 종이 제공하는 디자인과 구현의 높은 사용할 수 있는 키-값 저장 시스템의 일부는 아마존의 핵심 서비스를 제공하기 위해 사용하는"항상"경험이:

Giuseppe DeCandia,Deniz Hastorun,Madan Jampani,Gunavardhan Kakulapati,Avinash 락스,알렉스 Pilchin,스와미 Sivasubramanian,베드로 Vosshall 및 베르너 Vogels, “다이너모:아마존의 고도로 사용할 수 있는 키-값 저장소"에서의 절차 21st ACM Symposium on Operating Systems Principles,스티븐슨,워싱턴,October2007.

당신은 아마이에 있어야 엔지니어링 팀은 이러한 장소 중 하나에서 확실히 알지는 사람들이 있어 추측에서 회담은 다른 정보는 두 장소:

Ebay 건축물아마존 건축물

단지 하나의 로드 밸런서 자체에 의해서 오늘의 세계와 거의 비슷한 것입니다 DNS 라운드 로빈다.오늘 같은 것들 는 재생할 수 있도록 모든 종류입니다.당신이 될 수 있다는 것을 확신의 좋아하는 이베이와 아마존을 사용한 분산과 그들이 많이 사용하다.

할 수 있습을 끓여 아래로 그것이 조금 더 생각할 때 어떻게 작동 할 수 있기 때문에 많은 교통 상태를 저장하지 않습니다.단일 요청에서 페이지가 있는 잠재적으로 많은 개체는지에 대해 알 필요가 있는 상태입니다.그 개체 그림에 서비스를 제공하여서는 무국적자 시스템(이것은 애니에서 제공)및 번호의 요청을 간다 극적으로 내려.

지 않는 경우에 당신을 얻을 지점는 하나의 로드 밸런서는 부하를 처리할 수 있는 그런 다음 다음 단계를 거래를 사용하는 IP 라우팅 및/또는 지리적 DNS.사이트로 크로 이베이와 아마존이 될 것입의 숫자에 다른 데이터 센터의 큰 숫자로 인터넷 연결에서 각.당신이 모든 것을 가지고 오는 인터넷에서 pop 퀘스트-웨스트에게 보낼 데이터 센터의 서쪽 해안"quest"서버에서 아무것도 att-웨스트로 전송되는 데이터 센터의 서쪽 해안"att"서버에서 아무것도 퀘스트-동쪽 그리고 동쪽 해안에 데이터 센터"quest"서버,etc.각각의 이러한 시스템을 수 있었 섬은 하나의 로드 밸런서 처리할 수 있는 부하가,몇 가지의 로드 밸런서 거기에 처리할 수 있는 수천 수백 트랜잭션의 두 번째라도 SSL 암호화되어 있습니다.뒷면에 복제 대량으로서는 각 데이터 센터에 지속적으로만 될 수 있습의 동기화됩니다.

나도 몰라 그들이 그것을 어떻게이지만,예를 들면 다음과 같습니다.

  • 오버로드를 피하기 위해 로드 밸런스 자체를 사용하여 라운드 로빈 DNS 나
  • 리디렉션 서로 다른 클라이언트가 다른 클러스터의 주소를 기반으로드,설정,지리적 위치,etc.

배포하는 중간 계층을 로드,

  • 귀하의 ID 를 계층간 세션 서버 내부 session ID 쿠키-사용할 수 있습니다.는 방법으로는 프런트 엔드 상자를 히트가 관련될 수 있습 추가/제거하지 않고 어떤 영향을 미친다.
  • 면 충분히 중요한 메커니즘을 리디렉션의 클라이언트 대체 중 층 서버 세션 동안 그래서 하나 취할 수 있습 유지보수를 위 etc.
  • 클라이언트 사용하기 시작하는 새로 의뢰 중 층 서버로서 그들은 새로운 세션을 시작

배포를 다시 끝 데이터베이스로드

  • "전통적인"분할의"진짜"시간별 계정이나 사용자별 데이터
  • 비동기적으로 복제 천천히 변화하거나 상대적으로 정적 데이터사용자가를 볼 수의 날짜(하지만 훨씬의 대부분은 시간).중간 계층 및 웹 서버는 데이터베이스에 연결하고 현지 자신의 위치
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top