문제

소켓을 사용하여 두 서버간에 데이터를 보내거나 데이터 이동에 MQ와 같은 것을 사용해야하는 것이 좋습니다.

내 질문 : 데이터를 한 번만/보증하는 경우 소켓을 신뢰할 수 있습니까?

다른 솔루션이 있습니까?

감사.

도움이 되었습니까?

해결책

소켓은 네트워크 통신을 수행하기위한 애플리케이션 수준 API입니다. 소켓의 신뢰성은 소켓을 만들 때 선택한 네트워크 프로토콜에 따라 다릅니다. TCP/IP를 선택하면 "신뢰할 수있는"전송이 표시됩니다. UDP/IP를 선택하면 "신뢰할 수없는"전송이 나타납니다.

다른 답변에 명시된 바와 같이, TCP는 데이터를 잃거나 부패하지 않도록합니다.

  1. 네트워크 중단이 충분히 길거나 발신자 또는 수신자가 죽으면 TCP/IP 연결이 중단되고 연결을 다시 시작하는 단계를 수행하지 않으면 데이터가 손실됩니다.
  2. 네트워크 레벨 데이터 손상이있는 경우 체크섬에 의해 감지되지 않을 확률이 적습니다.

TCP/IP가 제공하는 것보다 높은 수준의 신뢰성 보증을 위해서는 애플리케이션 소켓 기반 네트워킹 계층의 상단에보다 민감한 체크 조정 및 보장 된 전달 메커니즘을 구현해야합니다. 또는 당신에게 어려운 일을하는 메시지 대기 제품을 사용하십시오.

따라서 질문에 대한 답은 소켓을 사용하는 방법과 시스템에 필요한 수준에 달려 있다는 것입니다.

다른 팁

소켓은 구현만큼 신뢰할 수 있으며 기본 하드웨어를 기반으로합니다. 보장 된 배송 서비스를 만드는 번거 로움을 원하지 않는다면 (어떤 조건 하에서 100%가 일어나지 않을 것인가), 메시지 대기열 시스템은 좋은 내기입니다. 메시지 대기열은 표준 소켓을 사용하면 자신을 구현 해야하는 모든 지속성, 큐잉, 리트리 등을 구현했습니다.

어떤 일이 발생하든 보장 된 배송이 필요한 경우 (상대방이 유지 보수를 위해 오프라인으로 가면) 모든 논리를 직접 작성하고 싶지 않은 경우 MQ를 사용해야 할 것입니다. 소켓은 해당 당사자가 MQ이든 메시지의 최종 수신기이든 상관없이 상대방에게 연결하는 데 사용하는 것입니다.

MQ를 포함하여 모든 통신이 수행되므로 소켓은 신뢰할 수 있습니다.

그러나 애플리케이션의 신뢰성을 향상시키기 위해 MQ와 함께 약간의 garanteed 전달을 추가 할 수 있습니다. 무엇입니까? Garanteed Delivery는 귀하의 메시지가 소비자가 적어도 한 번 이상 처리되도록합니다. 소비자가 꺼져 있습니까? 생산자가 꺼져 있습니까? MQ 서버가 꺼져 있습니까? 디스크 충돌? MQ 덕분에 메시지가 손실되지 않습니다. 그 외에도 소비자를 다시 시작하면 메시지가 두 번 처리되지 않습니다. 메시지에 백만 달러의 양도가 포함 된 경우 Wich가 중요 할 수 있습니다. 그러나 귀하의 메시지가 끔찍한 시간에 처리 된 것은 아닙니다. 그리고 처리 시간은 응용 프로그램에 따라 garanteed 전달보다 더 중요합니다.

필요에 따라 서버간에 통신하는 가장 좋은 방법을 선택하는 것은 귀하에게 달려 있습니다. Garanteed Delivery는 재무 및 성과 비용이 모두 있으므로 필요한 경우에만 사용해야합니다 (예 : 수백만 달러의 트랜 퍼).

대부분의 응용 프로그램의 경우, 실패 할 때 메시지를 재 시도하여 만 만족스러운 것을 달성 할 수 있습니다. 그러나 그것은 한 번 전용 전용 전달이 아닙니다. 혼자서 구현하려고 시도하지 마십시오. 거의 거의 달성 할 수없는 매우 어려운 것입니다. MQ 또는 Apache AQ만큼 복잡한 소프트웨어를 재개발하는 것을 고려하는 것은 USELES입니다.

도움이되기를 바랍니다.

  • Jeb

소켓은 데이터 전송을위한 원시 메커니즘입니다. 다른 모든 것은이 위에 구현됩니다. 에서 OSI 네트워크 모델 그것들은 레이어 4에 속합니다. 비록 신뢰할 수있는 엔드 투 엔드 연결을 구현하지만 최종 프로토콜로 거의 사용되지 않습니다. 거의 항상 응용 프로그램 계층을 구현해야합니다. 이것이 응용 프로그램에 따라 다릅니다 (파일을 전송하거나 메시지 만 보내야 함) 및 네트워크 인프라.

사용하는 경우 a 스트림 소켓, TCP 프로토콜은 데이터가 전송시 손실되지 않고 손상 될 가능성이 없도록합니다 (16 비트 체크섬이 충분한 지 또는 앱 레이어 체크섬 메커니즘이 필요한지 여부를 결정해야하지만).

MQ 시스템이 제공하는 것과 필요하거나 필요로 할 수있는 것은 응용 프로그램 수준입니다. 거래 유형 신뢰성, 즉 간헐적 하드웨어 또는 소프트웨어 고장에 직면하더라도 전달을 보장하는 능력.

데이터 유형에 따라 간단한 웹 서비스가 가장 빠른 솔루션 일 수 있습니다. 그들은 비교적 쉽게 설정하고 테스트합니다. 몇 가지 구체적인 예의 경우 어떤 종류의 데이터와 환경을 실행하고 있는지 알아야합니다.

개발중인 응용 프로그램 유형에 크게 좌우됩니다. 메시지의 응답이나 ACK가 필요한 프로그램을 작성하고 TCP 소켓이 좋습니다. 그러나 워크 플로우 종류의 시나리오를 구현하는 경우 메시지 대기열을 사용해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top