RUDP와 HTTP 질문

조회수 2192회

페이스북, 카카오톡 오픈소스 공개내역 보면 HTTP오픈소스 '볼리'를 씁니다. 메머드기업은 Reliable UDP 방식으로 통신하는 거 아니었나요?

loopj도 쓰인 사례를 확인했는데 그 유명한 retrofit을 쓰는데가 없는 거 같습니다. 라이선스 문제가 혹시 있나요?

그리고 HTTP 통신으로 버틸 수 있는 동시접속자수 한계는 어느정도로 보시는지요.

감사합니다.

2 답변

  • 동시접속이라는 것이 커넥션을 유지하고 있는 일종의 Websocket류의 동시접속을 말하는 것인지, 아니면 동시에 요청되는 Request의 수인지에 대해서 문제를 약간 명확하게 분리해야 할 것 같습니다.

    문백상으로 봐서는 후자로 보이네요.

    전자에 관해서는 C10K라고 동시 접속에 관한 오래된 문제가 있습니다. (요즘은 이 범위가 커져서 C10M이라고 합니다) 이런 류의 문제는 보통 이벤트 기반 서버(netty, node.js)등을 사용하면 어느정도 극복이 가능합니다.

    질문주신 내용인 후자에 관해서는 허대영님 답변에서 처럼 검색 범위가 어느정도냐에 따라 천차만별 입니다.

    단순하게 key-value lookup이나, 캐시된 정적 페이지의 경우는 초당 10만 요청도 어려운 일이 아니지만, 여러 back-end서비스를 긁어서 어떤 비지니스 로직을 수행하거나, Join이 많은 DB쿼리가 들어가게 되면 TPS가 급격히 떨어지게 됩니다.

    실제 서비스에 들어가시면 HTTP프로토콜이 주는 한계 보다는 DB에서 발생하는 병목현상이 서비스 확장을 어렵게 합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • 윈도우 환경을 기준, 서버의 성능이 아주 좋다면

    1. TCP 동시 연결은 100만개도 가능하다고 하는 군요. (http://www.serverframework.com/asynchronousevents/2010/12/one-million-tcp-connections.html)
    2. 이론적으로는 16,777,214개의 연결이 가능하다고 합니다. (http://www.serverframework.com/asynchronousevents/2010/10/how-to-support-10000-concurrent-tcp-connections.html) - 실질적으로는 서버 성능이나 서비스(응용)프로그램의 메모리나 구현 로직에 따라 천차만별입니다.
    3. 어찌돼었든 6만개 보다 많은 연결을 하려면 IP가 여러개 있어야 합니다. (TCP/UDP 에 사용하는 포트는 65535까지 때문. )

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)