HTTP 프로 토 콜 기반 의 실시 간 데이터 획득 기술 에 대한 상세 한 설명
6849 단어 http 프로 토 콜긴 폴 링짧 은 폴 링
HTTP 프로 토 콜 은 모두 가 잘 알 고 있 습 니 다.본문 을 시작 하기 전에 먼저 HTTP 프로 토 콜 을 간단히 살 펴 보 겠 습 니 다.
HTTP 프로 토 콜 은 TCP 프로 토 콜 에 설 치 된 응용 층 프로 토 콜 입 니 다.프로 토 콜 의 본질은 요청-응답 입 니 다.
즉,HTTP 프로 토 콜 의 경우 서버 가 한 번 응답 하면 전체 요청 이 끝 납 니 다.이것 은 HTTP 요청 의 가장 큰 특징 이자 이 특징 때문에 HTTP 요청 이 할 수 없 는 것 은 서버 가 클 라 이언 트 에 게 데 이 터 를 주동 적 으로 전송 하 는 것 입 니 다.
그러나 HTTP 프로 토 콜 의 광범 위 한 응용 으로 인해 HTTP 프로 토 콜 을 사용 하여 실시 간 데이터 획득 을 실현 하려 는 경우 가 많 습 니 다.이 럴 때 어떻게 해 야 합 니까?먼저 HTTP 프로 토 콜 을 기반 으로 한 실시 간 데이터 획득 방법 을 소개 한다.
짧 은 폴 링
폴 링 은 가장 보편적 인 HTTP 프로 토 콜 을 바탕 으로 실시 간 데 이 터 를 얻 는 방식 으로 폴 링 은 짧 은 폴 링 과 긴 폴 링 으로 나 뉜 다.짧 은 폴 링 은 매우 간단 하 다.그림 으로 표시 하 자.
클 라 이언 트 가 서버 에 데 이 터 를 요청 하면 서버 는 즉시 데 이 터 를 클 라 이언 트 에 게 되 돌려 줍 니 다.클 라 이언 트 는 원 하 는 데 이 터 를 받 지 못 했 습 니 다(예 를 들 어 결 과 를 되 돌려 클 라 이언 트 에 게 알 리 고 데이터 처리 중).클 라 이언 트 는 계속 요청 을 하고 서버 는 계속 즉시 응답 하 며 반복 합 니 다.
이런 실시 간 데 이 터 를 얻 는 방식 은 비교적 거 칠 고 프로 그래 밍 이 간단 하 며 클 라 이언 트 가 요청 을 보 내 고 서버 에서 실시 간 으로 응답 하면 된다 는 장점 이 있다.단점 은 주로 두 가지 가 있다.
사용자 가 PC 에서 물건 을 사서 웹 페이지 를 불 러 일 으 켰 습 니 다.PC 측 과 웹 페이지 측 이 통 하지 않 기 때문에 우 리 는 사용자 가 곧 지불 을 완성 할 것 이 라 고 예상 합 니 다.이 럴 때 간단 한 짧 은 폴 링 을 개발 하기 위해 사용 할 수 있 는 방식 입 니 다.직접 서비스 측 에서 인 터 페 이 스 를 제공 하여 고객 측 에 주문 상 태 를 알려 주 고 클 라 이언 트 는 5 초 에 한 번 씩 요청 하면 됩 니 다.결 과 를 얻 으 면 부탁 하지 않 아 도 됩 니 다.
짧 은 폴 링 을 사용 하려 면 요청 횟수 상한 선 에 대한 통 제 를 잘 해 야 합 니 다.예 를 들 어 100 번 을 요청 해도 사용자 의 지불 이 감지 되 지 않 았 습 니 다.'지불 을 완료 한 후에 제 주문 페이지 에 가서 조회 하 세 요'라 고 창 을 열 면 요청 하지 않 아 도 됩 니 다.
긴 폴 링
긴 폴 링 은 다른 실시 간 으로 데 이 터 를 얻 는 방식 입 니 다.절 차 를 보 세 요.
본질 적 으로 변화 가 없 는 것 은 클 라 이언 트 가 자신 이 원 하 는 데 이 터 를 받 지 못 한 상황 에서 계속 서버 에 요청 을 보 내 는 것 이다.차이 점 은 서버 가 요청 을 받 으 면 직접 응답 하지 않 고 요청 을 끊 는 것 이다.자신 이 정 해진 시간 에 데이터 의 변 화 를 판단 하고 변화 가 있 으 면 바로 클 라 이언 트 에 게 돌아 가 시간 이 초 과 될 때 까지 기다 리 지 않 는 다 는 것 이다.
긴 폴 링 의 장점 은 클 라 이언 트 의 요청 이 불필요 한 클 라 이언 트 요청 을 피 할 수 있다 는 것 이다.단점 은 서버 가 대량의 요청 을 걸 어 자원 소 모 를 증가 시 키 고 서버 가 HTTP 요청 의 병행 수량 에 제한 이 있다 는 것 이다.
위 챗 홈 페이지 판 의 로그 인 은 전형 적 인 긴 폴 링 의 예 이다.
그림 에서 볼 때 클 라 이언 트 가 서버 에 계속 요청 을 보 내 고 서버 가 첫 번 째 로 응답 을 하지 않 아서 클 라 이언 트 가 기다 리 고 시간 이 초 과 된 상황 에서 계속 요청 을 보 냅 니 다.
전체적으로 말 하면 저 는 보통 긴 폴 링 을 사용 하 는 것 이 더 많다 는 것 을 이해 합 니 다.짧 은 폴 링 은 프로 그래 밍 이 간단 하고 소형 응용 에 적합 합 니 다.위 챗 홈 페이지 에 로그 인 하 는 것 처럼 수천 명의 사용자 가 동시에 로그 인 합 니 다.한 동안 서버 에서 수천 개의 요청 을 받 아 처리 하 는 것 이 어디 에 견 딜 수 있 습 니까?모든 서버 에서 처리 요청 의 수량 을 분담 하 는 것 은 결코 문 제 를 해결 하 는 방법 이 아 닙 니 다.
WebSocket
위 에서 두 가지 폴 링 방식 을 소 개 했 지만 두 가 지 를 종합 하면 비교적 뚜렷 한 단점 이 있 고 정리 해 보면 다음 과 같은 몇 가지 가 있다.
4.567917.가짜 실시 간,즉 상기 두 가지 방식 은 모두 진정한 실시 간 이 아니다.짧 은 폴 링 의 클 라 이언 트 폴 링 시간 이 아무리 짧 든 긴 폴 링 의 서비스 측 폴 링 시간 이 아무리 짧 든 어느 정도 지연 시간 이 존재 한다4.567917.모든 폴 링 은 필요 한 데이터 가 돌아 오지 않 으 면 자원 을 계산 하 는 낭비 이다
웹 소켓 의 원 리 를 보 세 요.간단 합 니 다.
웹 소켓 클 라 이언 트 는 먼저 HTTP 프로 토 콜 을 통 해 몇 개의 특별한 header 를 서버 에 보 내 서 서버 에 현재 내 가 HTTP 요청 을 하고 있 지만 웹 소켓 으로 업그레이드 해 야 한다 고 알려 줍 니 다.
다시 한 번 말씀 드 리 겠 습 니 다.HTTP Header 가 871 바이트 라 고 가정 한 테스트 가 있 습 니 다.WebSocket 은 데이터 전송 이 프레임 기반 이기 때문에 프레임 전송 이 더욱 효율 적 이 고 장단 폴 링 에 비해 2 개의 바이트 가 871 바이트 의 Header 를 대체 할 수 있 습 니 다.테스트 결 과 는 다음 과 같 습 니 다.
같은 초당 클 라 이언 트 폴 링 횟수 는 10W/s 의 고주파 횟수 에 달 할 때 폴 링 은 665 Mbps 를 소모 해 야 하 는데 웹 소켓 은 1.526Mbps 로 435 배 에 가깝다.
WebSocket 은 진정한 실시 간 을 실현 하고 대역 폭 자원 을 대량으로 절약 했다.그러나 저 는 자신의 문제 도 있 습 니 다.바로 개발 원가 가 비교적 높다 는 것 입 니 다.이곳 의 개발 원 가 는 자신 이 WebSocket 을 실현 하 는 것 이 아니 라 자바 언어 차원 에서 Netty-Socketio 를 직접 사용 하면 됩 니 다.API 는 간단 하고 WebSocket 에 대한 완전한 실현 을 제공 합 니 다.진정한 개발 원 가 는 분포 식 환경 에서 의 데이터 동기 화 문제 에 있다.
예 를 들 어 온라인 채 팅 시스템 10W 인 이 동시에 온라인 에 있 는데 이때 한 사용자 가 1K 음성 메 시 지 를 보 냈 다.한 컴퓨터 로 10W 의 연결 을 유지 하면 되 지만(여 기 는 HTTP 요청 이 아니 기 때문에 연결 풀 수의 영향 을 받 지 않 는 다)문 제 는 대역 폭 이다.단일 컴퓨터 는 10W 사용자 에 게 1K 음성 메 시 지 를 동시에 전송 하 는데 필요 한 대역 폭 은 최소 10M 이다.이것 은 단순히 데 이 터 를 전송 하 는 것 일 뿐 데이터 가 들 어 오 는 장면 을 고려 하지 않 고 실제 운행 과정 에서 필요 한 대역 폭 이 더 많아 기업 에 있어 매우 큰 비용 이다.
따라서 대량으로 연 결 된 장면 에서 모두 클 러 스 터(실제 적 으로 대량의 연결 이 없 더 라 도 높 은 가용성 을 위해 클 러 스 터 를 할 수 있다)를 한다.10W 는 5 대의 기 계 를 동시에 나 누 어 주 고 모든 기 계 는 2W 로 연결 되 며 클 러 스 터 에서 발생 하 는 문 제 를 고려한다.
클 라 이언 트 1 은 데 이 터 를 서버 1,서버 1 에 연 결 된 모든 클 라 이언 트 가 이 음성 을 푸 시 할 수 있 지만 문 제 는:
4.567917.서버 2~서버 5 중대 의 모든 클 라 이언 트 는 어떻게 데 이 터 를 얻 습 니까?간단 한 방법 은 메시지 큐 를 사용 하여 모든 구독 서버 에 데 이 터 를 메시지 큐 를 통 해 보 내 는 것 입 니 다
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HTTP 프로 토 콜 기반 의 실시 간 데이터 획득 기술 에 대한 상세 한 설명사용자 가 PC 에서 물건 을 사서 웹 페이지 를 불 러 일 으 켰 습 니 다.PC 측 과 웹 페이지 측 이 통 하지 않 기 때문에 우 리 는 사용자 가 곧 지불 을 완성 할 것 이 라 고 예상 합 니 다.이 럴 때...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.