문제

메시지 기반 시스템을 사용하는 동기는 무엇입니까?

다음과 같은 서비스 버스에 대해 많이 보고 있습니다. NServiceBus 그리고 대중교통 기본 방법론의 이점이 무엇인지 궁금합니다.

도움이 되었습니까?

해결책

메시지 기반 시스템을 사용하는 데는 여러 가지 장점이 있습니다.

  1. 메시지는 응용 프로그램 간의 잘 정의 된 기술 중립 인터페이스를 형성합니다.
  2. 응용 프로그램의 느슨한 커플 링을 활성화합니다.
  3. 성능, 튜닝 및 스케일링을위한 많은 옵션 :
    • 다른 하드웨어에 요청자 및 서비스 프로세스를 배포하십시오
    • 단일 서버를 공유하는 여러 요청자
    • 여러 서버를 공유하는 여러 요청자
  4. 다양한 메시징 중간 전야는 응용 프로그램과 독립적으로 공통 메시징 패턴을 구현합니다.
    • 요청/답장
    • 오프라인 업데이트를 발사하고 잊어 버립니다
    • 게시/구독
  5. 많은 미들웨어 제품이 메시지 변환을 처리합니다 (예 : Swift to SwiftXML).
  6. 많은 미들웨어 제품은 단일 큰 요청을 몇 가지 작은 요청으로 분해 할 수 있습니다.
  7. 그들은 거의 모두 여러 플랫폼을 지원합니다.

우연히이 분야의 두 시장 리더는 WebSphere MQ 및 관련 제품을 가진 IBM과 Enterprise Service Bus의 TIBCO입니다.

다른 팁

메시지 기반 아키텍처는 시간과 공간 모두에서 제작자와 메시지 소비자를 제거합니다. 이것은 많은 이점이 있습니다.

  • 생산자와 소비자는 다른 기계에서 실행할 수 있습니다
  • 생산자와 소비자는 다른 시간에 운영 할 수 있습니다.
  • 생산자와 소비자는 다른 하드웨어/소프트웨어 플랫폼에서 실행할 수 있습니다 (동일한 메시지 프로토콜 만 이해하면됩니다).
  • 여러 생산자 / 소비자를 조정하는 것은 쉽습니다 (예 : Dave Markle이 설명했듯이 여러 기계가 필요한 컴퓨팅 집약적 인 작업의 경우)
  • 서비스가 일시적으로 사용할 수없는 경우 안정성이 높아짐 (예 : 주문 처리를 수행 할 때 메시징 시스템을 사용하여 주문을 피하는 데 도움이 될 수 있음)

RPC 스타일의 커뮤니케이션을 할 때 이러한 혜택의 대부분을 잃습니다 (즉, 서비스 응답을 기다리는 동안 차단할 때).

하나의 사용 사례는 주어진 품목에서 작동 할 수있는 자원 풀과 확장 가능한 방식으로 배포 해야하는 작업 목록이있을 때입니다.

한 번은 3270 개의 스크린 스크레이퍼 (모두 느리게)와 메인 프레임 통합을 해야하는 프로젝트를 가졌습니다. 한 번에 상자에 최대 10 개의 프로세스를 열 수있었습니다. 나는 스크린 크래프 및 업데이트에 대한 수천 개의 계정을 가지고 있었기 때문에 작업을 대기열에 넣었고 기계 (약 3 개 EM이 있었다)는 메시지 대기열 (MSMQ)에서 작업 항목을 집어 들고 화면 스크래핑을 수행했습니다. 그리고 그게 다야. 나는 새로운 기계를 쉽게 돌리거나 작업 흐름을 방해하지 않고 오래된 기계를 비활성화 할 수 있으므로 좋았습니다.

이점은 실제로 애플리케이션의 일부를 분리하는 것입니다.버스를 설정하고 애플리케이션을 추가한 후에는 다른 부분에 영향을 미치지 않을 것이라고 보장할 수 있는 새로운 부분을 추가하여 앱을 쉽게 확장할 수 있습니다.시간이 지남에 따라 시스템에 지속적으로 추가하는 매우 좋은 방법입니다.

예.우리는 이와 같은 시스템을 가지고 있으며 각 명령은 전체 GUI의 일부로 구현됩니다. 새로운 기능을 추가하거나 기존 기능을 수정하려면 새 부분을 작성하여 시스템에 추가하기만 하면 됩니다.호출되면 나머지 항목에 종속되지 않습니다.이는 우리의 앱을 매우 쉽게 확장할 수 있다는 것을 의미합니다.또한 네트워크의 노드 간에 메시지가 전달됩니다. 한 컴퓨터에서 무언가 변경되면 메시지가 다른 모든 컴퓨터로 전송되어 스스로 업데이트할 수 있습니다.다양한 이벤트에 대한 수백 가지 메시지가 있으므로 적절한 메시지에 반응하는 새로운 서비스를 추가하여 시스템을 확장할 수 있습니다.

메시지 전달 아키텍처는 일반적으로 웹 서비스와 동일한 기능을 갖고 있으며 호출할 수 있는 개별 서비스가 있고 새 서비스를 쉽게 추가할 수 있습니다.

메시지 전달 아키텍처에 고급(그리고 값비싼!) 미들웨어 제품이 필요하다고 생각하지 마십시오. Windows는 메시지 전달 아키텍처에서 실행됩니다. 창에 전달되는 모든 WM_* 메시지는 ..글쎄요, 메시지는 아키텍처의 가장 좋은 예를 보여준다고 생각합니다. 시스템의 어떤 부분도 다른 부분에 대해 알 필요가 없으며 대화 상자에서 원하는 만큼 많은 컨트롤을 처리할 수 있으므로 무한히 확장할 수 있습니다. 등.

메시지 전달은 멋진 아키텍처입니다. 비록 애플리케이션을 긴밀하게 결합하는 것보다 속도가 느릴 수 있지만, 특히 이미 스크립팅이나 .net 앱을 사용하고 있다면 요즘에는 사용하지 않을 이유가 없습니다.

메시지 지향 시스템은 일반적으로 특정 클래스의 통합 문제에 좋습니다. 다른 대안은 응용 프로그램이 RPC를 통한 통합 또는 응용 프로그램을 통합하기위한 공유 데이터 저장소 (파일 또는 DB 기반)가 있습니다.

이러한 통합 패턴에 대한 메시징의 장점은 두 응용 프로그램을 동일한 데이터 저장소 스키마에 연결하지 않으며 응용 프로그램을 포인트 ~ 포인트 RPC 통합 시나리오에 연결하지 않는다는 것입니다 (더 많은 응용 프로그램이 더 복잡해집니다).

비동기 커뮤니케이션 (이메일 대 온라인 채팅) 및 메시지 라우팅 및 변환 가능성의 이점도 있습니다.

저는 C# 및 Remoting을 사용하는 시스템용 개발을 도왔습니다. 클라이언트(서비스 또는 GUI)는 일부 사용자 정의 데이터가 포함된 메시지를 보낼 수 있으며 수신자는 다음에 연결될 때 또는 즉시 이를 수신할 수 있습니다.그런 다음 메시지를 처리할 수 있습니다(로드 밸런싱 서비스의 경우 메시지 소유권을 가져옴).또한 장기 실행 프로세스가 완료되면 GUI를 업데이트하는 데에도 사용되었습니다.

메시징 시스템 자체에는 각 메시지를 처리하는 구성 가능한 파이프라인이 있습니다. 다음은 우리가 개발한 몇 가지 파이프라인의 예입니다.

  • 저장소(데이터베이스에 메시지 생성/저장)
  • 라우팅(메시지를 보내야 하는 위치가 결정됨)
  • 보안(클라이언트가 수신하도록 허용된 경우 해결됨)
  • 삭제(시스템에서 메시지를 삭제해야 하는 경우 해결됩니다. 즉, 클라이언트에게 알리고 해당 메시지를 캐시에서 제거하고 DB에 플래그를 지정해야 함을 의미합니다).
  • TakeOwnership(소유한 메시지만 변경할 수 있으므로 한 번에 하나의 클라이언트만 메시지 상태를 수정할 수 있도록 하는 작업)

따라서 귀하의 질문에 대한 답변으로 메시징 시스템은 귀하가 고객이 누구인지 모르거나 관심이 없을 때 정보를 보내는 훌륭한 수단입니다.

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