매우 간단한 고성능 http 서버

매우 간단한 고성능 http 서버

저는 URL 단축기 웹 애플리케이션을 구축 중이며 빠르고 안정적인 서비스를 제공하기 위해 이를 수행할 수 있는 최상의 아키텍처를 알고 싶습니다.

서로 다른 기계에서 두 가지 별도의 서비스를 갖고 싶습니다.

  • 첫 번째 머신에는 apache, nginx 등이 포함된 애플리케이션 자체가 포함됩니다.
  • 두 번째에는 데이터베이스가 포함됩니다.
  • 세 번째 사람은 짧은 URL 청원을 처리할 책임이 있습니다.

업데이트:

이 서비스는 전혀 URL 단축기가 아닙니다. 그냥 그렇게 설명하는 게 더 쉬웠어요.

하나의 http 쿼리를 받고 데이터베이스에 레코드를 삽입하는 컴퓨터가 하나만 필요합니다. 그리고 이 간단한 작업을 매우 효율적인 방법으로 수행하려면 이 기계가 필요합니다. 시스템은 Linux에서 실행되며(아직 배포판을 모릅니다) 모든 언어나 기술에 완전히 열려 있습니다. 해당 서비스에 Yaws, Tornado 또는 Snap을 사용하려고 생각하고 있었지만 아직은 모르겠고 해당 부분에 대한 아키텍처를 계획할 때가 되었습니다. 데이터베이스는 Hadoop을 기반으로 구축됩니다.

세 번째 머신의 경우 한 종류의 http 청원(GET www.domain.com/shorturl)만 수락하면 되지만, 정말 빠르게 처리해야 하고 충분히 안정적이어야 합니다.

답변1

정말로 또 다른 URL 단축기가 필요하다고 생각하시나요? 그냥 있어요너무 많아그 중... 우연히 아주 짧고 적절한 도메인 이름을 획득하지 못한 이상, 귀하의 사이트가 누구의 눈에 띄지 않을 것이라고 생각합니다. 물론 내 2센트만요.

어쨌든 기술적인 부분은 다음과 같습니다.

  • 지원서를 어떤 언어로 작성할 예정입니까?
  • 어떤 운영 체제에서 실행할 계획입니까?
  • 무료 소프트웨어를 사용하시겠습니까, 아니면 상용 소프트웨어를 사용하시겠습니까?

이 사실을 알지 못해도 귀하의 질문에 답변하기는 어렵습니다.

여기서 의미가 있는 유일한 대답은 "전염병처럼 Java를 피하십시오"입니다. Java 애플리케이션 서버는 많은 애플리케이션에 있어서 과잉이며, 이렇게 단순한 애플리케이션에도 확실히 과잉일 것입니다.

저는 여기서 Linux/Apache/MySQL/PHP를 선택하겠습니다...만약에물론 프로젝트를 시작해야 할 타당한 이유가 있다고 생각할 수도 있습니다.


편집하다:

이제 좀 더 이해가 되네요. 하지만 가능한 한 간단하게 시작하라는 제안은그 다음에규모 확장에 대한 걱정은 여전히 ​​유효합니다. 귀하의 애플리케이션이 정말 그렇게 단순하다면, 어떤 적절한 웹 서버/언어/데이터베이스 조합이라도 처리할 수 있어야 합니다.많이최신 하드웨어에서 초당 요청 수(그러나 여전히 Java를 피하는 것이 좋습니다).

성능이 가장 중요하다면 C로 작성된 CGI 애플리케이션을 사용하겠습니다.저것해석된 언어나 VM 언어보다 훨씬 빠른 가능한 가장 빠른 솔루션이 될 것입니다. 데이터베이스에 대한 간단한 INSERT 및 SELECT를 수행하면 안 됩니다.그래서어려운. 하지만 제 생각에는 LAMP가 귀하의 필요에 충분하다고 생각합니다. 실제로는 LAMP가 실행됩니다.페이스북그거 알아?

답변2

이것은 단지 데이터를 기록하는 것입니까, 아니면 관심 있는 내용을 다시 보내는 것입니까? 단지 로깅만 하는 경우에는 Apache를 사용하고 Apache 로그를 hadoop에 넣으십시오. 그들이 어떤 종류의 데이터를 반환해야 한다면 그들이 반환하는 데이터를 어떻게 얻는지 전혀 명확하지 않습니다.

그럼에도 불구하고 모든 요청에 ​​대해 정적 파일을 반환하도록 설정된 Apache는 매우 빠릅니다.

답변3

첫째, 이것이 URL 단축기가 아니라고 말씀하신 것을 알고 있습니다. 하지만 유사하다면 RDBMS는 이 데이터를 저장하는 끔찍한 방법입니다. 두 데이터 사이에는 실제 관계가 없기 때문에 플랫 스토리지 엔진이 필요합니다. Mongo(또는 실제 솔루션 공간에 따라 Couch)를 고려해보세요.

귀하의 솔루션에 관해서는 조심하십시오조기 최적화. 이것을 미쳐버릴 수 있는 방법은 많습니다. 당신이 요청한 이후로 제가 생각할 수 있는 가장 미친 짓은 Varnish를 실행하고 VCL에 모든 페이지를 작성한 다음 백엔드의 Memcache에 연결하여 해당 데이터를 저장하고 검색하는 것일 수 있습니다. 그런데 현실적으로 그렇죠개소리명백히 터무니없는 부하를 받지 않는 한 미친 짓입니다.

관련 정보