상태가없는 프로토콜을 사용하는 것이 더 나은 것으로 간주됩니까?
-
06-07-2019 - |
문제
나는 상태의 프로토콜이 쿠키와 같은 '에뮬레이션 된 상태'를 덜 덜어 준다는 것을 알 수 있습니다.
그러나 구현이 정확하고 다시 연결되도록 테스트가 훨씬 어려워지고 세션 연속이 처리하기가 매우 어려울 수 있습니다.
항상 무국적 프로토콜을 사용하는 것이 더 나은 관행으로 간주됩니까, 아니면 실제로 도메인에 구체적입니까?
상태가 높은 프로토콜을 다룰 때 인증이 더 쉬워 지지만 상태가 많은 프로토콜을 사용해야하는 다른 이유가 있습니까?
해결책
응용 프로그램에 상태가 얼마나 중요합니까? 다른 기계간에 일정한 데이터 흐름이 필요합니까, 아니면 버스트를하는 것이 더 유용합니까? IP Telepony 유형 응용 프로그램을 작성하는 경우 상당히 상태가 많은 것을 원할 것입니다. Sationeless로 도망 갈 수 있다면 저렴하고 쉽게 할 수 있습니다. 연결의 끝이 삭제되거나 연결 자체가 다운되면 데이터 손실의 위험이 높아지는 반면, 무국적 연결을 사용하면 잠시 기다려야 할 가능성이 높아지고 시도하면됩니다. 다시.
그것들은 실제로 다른 작업을위한 다른 도구이지만, 온라인에서 Sationeless Technologies의 편의성과 편리함을 감안할 때 옵션이있을 때 그 방향으로 보는 것이 논리적입니다.
다른 팁
무국적 장점 :
- 높은 확장 성 (모든 노드에 요청을 보낼 수 있고 언제든지 노드를 추가 할 수 있습니다).
- 고 가용성 (하나의 노드가 실패하면 손실 된 상태가 없으며 다른 노드에 대한 요청을 재현합니다).
- 고속 (상태가 없으므로 결과는 캐시 가능합니다)
나는 그것을 도메인을 구체적으로 고려할 것이다. 핑과 같은 도덕적 동등한 글을 쓰는 경우 무국적 프로토콜이 올바른 선택입니다. 반면에, VNC를 쓰고 있다면, Stateful은 확실히 갈 길입니다.
언제 선택 해야하는지에 대해서는 두 가지를 염두에 두어야합니다. 첫째, 구현 선택은/또는 문제 공간이 연속체입니다. 모든 실제 작업에는 적어도 약간의 상태가 있습니다. 문제는 양쪽 끝에서 그것을 추적 할 수있는 번거 로움의 가치가있는 가치가있는 오버 헤드입니다. 둘째, 당신은 일반적으로 단일 프로토콜이 아닌 프로토콜 스택을 다루고 있습니다. 모든 것이 올바른 수준으로 살리되도록하면 사물을 엄청나게 단순화 할 수 있습니다.
상태는 후속 요청에 따라 상태가 1 서버에서 다른 서버로 전송 될 필요가 없기 때문에 무국적 프로토콜이 클러스터링하기가 더 쉽습니다.
나는 Stateful과 Sationeless의 모든 설계 문제에 대해 개인적으로 익숙하지는 않지만, NFSV4는 15 년 동안의 이전 버전의 NFS가 무국적자 인 후에 상태가 많다는 것을 알고 있습니다.
몇 분의 인터넷 검색은 NFSV4의 상태에 대해 이야기하는 여러 기사와 블로그를 공개합니다. 이것은 관련된 일부 디자인 문제에 대한 흥미로운 독서 여야합니다.
무국적 프로토콜의 또 다른 좋은 점은 서버 장애 조치 상황 및/또는 클러스터링/로드 밸런싱 상황을 처리하는 것이 더 쉽다는 것입니다.
상태가 더 좋습니다. 그러면 항상 상태를 보낼 필요가 없습니다. 그런 다음 프로토콜이 더 간단 해집니다.