"인스턴트 메시징 기술 분석 및 실제"연구는 3 노트 - 실시간 메시지를 확인하는 방법 IM 시스템

같이 IM 기술은 여러 반복적 인 업그레이드를 경험했다 :
기술의 진화의 IM의 역사

설문 조사의 제어 길이 상대적 효율성 간단하고 짧은 폴링 비효율적 이관에서,
전이중 푸시 서버의 문제를 해결 웹 소켓, 및
IM 기반의 TCP 프로토콜 파생 긴 연결이 활성화 푸시에게 서버를 실현 될 수있다.

짧고 긴 폴링 기반 프로토콜 HTTP 연결

짧은 폴링
긴 연결
장면 주기적으로 폴링 서비스 고주파 측에 새 메시지. 서버가 요청을 수신하면 새 메시지가 새 메시지가 클라이언트에 반환 될 경우, 더 뉴스는 빈리스트를 반환하고 연결을 닫습니다. 즉 :에 관계없이 발생하는 뉴스의 현재 라운드의 어떤 서버가 없습니다, 즉시 응답 및 반환됩니다. 이 요청은 새 메시지를 인수하지 않을 경우, 결과는 즉시 응답을 반환하지 않습니다,하지만 서버 "정지 (중단)"요청 시간 동안 대기 한 번 새 메시지는이 시간 동안 생성되고, 즉시 응답을 반환 할 수 있습니다.
결점 서비스 측에서 요청의 높은 주파수가 높은 QPS가 발생합니다; 클라이언트의 경우, 폴링의 주파수가 높을수록, 요청의 대부분은 쓸모없는 고가의 전기 (비용 효과)과 비용 흐름 (순 비용)입니다 와 백 엔드 스토리지 자원에 대한 더 큰 압력을 발생합니다. 단지 감소 입구 QPS 요청 및 폴링 자원의 후단의 압력을 감소하지 않습니다 서스펜션 라이브 서버 요청. (메시지 대기 1,000 요청이있는 경우, 1000 개 스레드 지속적으로 폴링 할 수도 있습니다) 메시지로 돌아갑니다 종료됩니다 긴 폴링을하지 않습니다를 아직 완전히 클라이언트가 제한 시간 내에 유효하지 않은 요청되는 문제를 해결할 수 없습니다.

결론 : 짧은 긴 폴링 연결이 모두가 HTTP 프로토콜을 기반으로하고, HTTP는 상태 비 저장 프로토콜입니다 때문에 완전히 이벤트 기반 "에지 트리거"서버가 새 메시지를 생성 한 할 수없는, 클라이언트에 직접 푸시, 클라이언트가 여러 요청을 초기화 할 수 없습니다, 서버에 클라이언트의 상태를 기록하지 않습니다 서버 - 모든 요청은 클라이언트에 의해 시작할 수 있습니다.

둘째, 전이중 (full-duplex) 통신을 하나의 TCP 연결 웹 소켓의 프로토콜을 기반으로

클라이언트와 서버는 악수를 완료하는 데 필요한, 그것은 오래 지속 연결을 만들 수 있으며, 언제든지, 양방향 데이터 전송.
서버가 새 메시지를 수신하면, 당신은 실시간으로 메시지를 확인하기 위해 설립 연결, 직접 푸시, 정말 "에지 트리거를"웹 소켓 수 있습니다.
장점 :
양방향 통신 지원 서버 측 푸시 극적 서버 폴링 감압 1]
상기 당사자 간의 네트워크 오버 헤드 통신 환원 낮은 제어 오버 헤드 (2)의 데이터 교환,
비교적 간단한 3.Web 기본 지원.

셋째, IM 기반으로 긴 연결은 TCP 파생 프로토콜

유도 전용 프로토콜 TCP를 기반으로 긴 웹 소켓 접속 인 프로토콜뿐만 아니라 XMPP, MQTT 피어 통신 프로토콜을 제외하고 IM 도메인에서.
네트워크가 중단되지 않는 한 라인이 서버에 연결하는 사용자 장비 및 매핑 특정 TCP 연결 사이에 좋은 관계를 유지하기 위해 서버에서 사용자에게 연결, 한 번 긴 연결을 확립이 독점 프로토콜은,이 있었다. 이러한 방법으로, 클라이언트는 항상 서버, 사용자의 클라이언트의 해당 온라인지도를 찾을 언제든지이 관계를 통해 또한 서버를 찾을 수 있습니다.

추천

출처www.cnblogs.com/sunshineliulu/p/11450664.html