의사 소통이 핵심입니다. 특히 느슨하게 연결된 수천 개의 엔터티가 포함된 높은 트랜잭션 분산 응용 프로그램이 있는 경우. 이 경우 오래된 정보 없이 응용 프로그램을 원활하게 실행하려면 서로 다른 모듈 간에 확장 가능하고 유연한 통신이 절실히 필요합니다.
새롭게 떠오르는 애플리케이션이 마이크로서비스 기반 아키텍처로 전환하고 있기 때문에 관련 애플리케이션의 지원 통신 아키텍처를 설계할 때 고려해야 할 몇 가지 근본적인 질문이 있습니다.
- 확장 성이 있습니까?
- 신뢰할 수 있습니까?
- 수납 효율이 좋은가요?
NCache 마이크로서비스 기반 .NET/ .NET Core 분야의 다양한 어플리케이션에서 사용됩니다. NCache 이제 게시자-구독자(Pub/Sub) 기능을 제공하여 이러한 애플리케이션에 대한 이벤트 기반 메시징 패러다임을 활성화합니다.
NCache 세부 정보 NCache Pub / Sub NCache 기술 문서
도입 NCache Pub / Sub
NCache .NET 웹 애플리케이션에서 실시간 정보 공유를 가능하게 하는 인메모리 Pub/Sub 메시징을 제공합니다. Pub/Sub 모델은 관심 있는 사용자가 메시지를 게시하고 구독하는 채널을 제공하여 자연스럽게 게시자와 구독자를 분리합니다. 지금 언제 NCache 메시징 버스 역할을 하는 Pub/Sub 모델은 기본 NCache 분산 아키텍처 그리고 수많은 편리한 풍모. 우리는 결합하는 방법을 볼 것입니다 NCache 및 Pub/Sub는 위의 문제를 해결하고 궁극적으로 애플리케이션이 더 잘 통신하도록 도울 수 있습니다.
당신은 볼 수 있습니다 의 핵심 구성 요소 NCache Pub / Sub 이 기능의 기본 사항을 이해합니다. 더 이상 고민하지 않고 Pub/Sub 메시징을 활용하기 위해 작업을 수행하는 방법을 먼저 살펴보겠습니다.
이용 방법 NCache 게시/구독 메시징
상점에 추가된 모든 새 제품에 대한 알림을 받아야 하는 전자 상거래 애플리케이션이 있다고 가정하십시오. 를 사용하여 달성할 수 있기 때문에 NCache Pub/Sub, 먼저 해야 할 일 캐시를 생성. Pub/Sub 전용 캐시를 사용하는 것이 좋습니다. 다음으로 새 제품과 관련된 알림을 받고, 메시지를 게시하고, 메시지를 구독하기 위한 주제를 만드는 단계별 프로세스에 대해 설명합니다.
NCache 세부 정보 NCache Pub / Sub NCache 기술 문서
주제 만들기
NCache ~을 제공하다 ITopic
고유한 이름으로 주제를 생성하는 인터페이스입니다. 게시자 애플리케이션이 다음과 같은 이름으로 주제를 만드는 방법은 다음과 같습니다. 신제품 방법을 사용하여 CreateTopic
.
1 2 3 4 5 6 |
// Pre-condition: Cache is already connected // Specify the topic name string topicName = “newProducts” // Create topic ITopic topic = cache.MessagingService.CreateTopic(topicName); |
주제가 이미 존재하는 경우 주제의 인스턴스가 다음과 같이 반환됩니다. ITopic
.
특정 이벤트가 더 중요하고 발생 즉시 전달해야 하는 경우가 발생할 수 있습니다. 예를 들어 완제품/판매 제품에 대한 알림을 받는 것은 판매자/구매자에게 가장 중요할 수 있습니다. 이 경우 설정할 수 있습니다. 주제 우선순위 토픽을 생성하는 동안 토픽을 생성하고 관련 알림을 기다림 없이 받아볼 수 있습니다.
메시지 게시
주제가 생성되면 게시자 애플리케이션은 다음을 사용하여 해당 주제에 관련 메시지를 게시할 수 있습니다. Publish
방법. 이를 위해 먼저 주제의 이름을 제공하여 주제의 인스턴스를 가져옵니다. 다음 코드는 새 제품과 관련된 메시지를 기존 주제에 게시하는 방법을 보여줍니다. 신제품.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Pre-condition: Cache is already connected // Topic “newProducts” already created string topicName = “newProducts” // Get the topic ITopic productTopic = cache.MessagingService.GetTopic(topicName); // Create the object to be sent in message Product product = FetchProductFromDB(10248); // Create the new message with the object order var productMessage = new Message(product); // Publish the order with delivery option set as all orderTopic.Publish(productMessage, DeliveryOption.All, true); |
게시자는 애플리케이션의 시나리오에 따라 특정 메시지를 브로드캐스트하거나 전달해야 할 수 있습니다. 예를 들어 제품 가격이 업데이트되면 모든 구독자에게 알려야 합니다. 그러나 항상 그런 것은 아닙니다. 메시지를 게시하는 동안 전달 모드를 지정할 수 있습니다. 다음 두 가지 메시지 전달 옵션은 에서 제공합니다. NCache 게시/구독.
- All (기본): 등록된 모든 구독자에게 메시지를 전달합니다.
- 모든 품종: 등록된 가입자에게 메시지를 전달합니다.
만나다 배송 옵션 자세한 내용은.
또한 Pub/Sub 캐시의 저장 공간을 효율적으로 관리하기 위해 다음을 설정할 수도 있습니다. 메시지 만료.
주제 구독
주제에 대해 메시지가 게시된 후 구독자 애플리케이션은 다음을 사용하여 메시지를 수신하기 위해 해당 주제에 대한 구독을 생성합니다. CreateSubscription
방법. 아래 코드는 구독자 애플리케이션이 주제에 대한 구독을 만드는 방법을 보여줍니다. 신제품 과 MessageReceived
콜백.
1 2 3 4 5 6 7 8 9 10 |
// Pre-condition: Cache is already connected // Topic “newProducts” already created string topicName = “newProducts” // Get the topic ITopic productTopic = cache.MessagingService.GetTopic(topicName); // Create and register subscribers for topic newProducts // MessageReceived callback is specified ITopicSubscription orderSubscriber = orderTopic.CreateSubscription(MessageReceived); |
구독자 애플리케이션이 판매 알림 수신 시 제품 가격을 업데이트해야 한다고 가정합니다. 그런 다음 의도한 가격 업데이트 작업을 다음에서 수행할 수 있습니다. MessageReceived
콜백.
위의 예에서 생성된 구독은 비영구적이며 구독은 기본적으로 비영구적입니다. 게다가, 당신은 또한 할 수 있습니다 지속 가능한 구독 생성 를 사용하여 NCache IDurableTopicSubscription
상호 작용. 영구 가입의 경우, NCache 연결 손실 시 가입자의 구독을 유지합니다. 이는 구독자가 오프라인인 경우에도 주제에 게시된 메시지가 구독에 할당됨을 의미합니다. 따라서 가입자는 다시 연결할 때 이러한 메시지를 받을 수 있습니다.
또한 다음을 사용하여 제공된 패턴에 해당하는 단일/다중 토픽을 구독할 수 있습니다. 패턴 기반 구독 방식 어디에 NCache 여러 와일드카드를 지원합니다.
알림 등록
게시자는 메시지의 상태와 주제의 가용성을 알아야 할 수 있습니다. 사용하는 동안 게시자 애플리케이션이 등록할 수 있는 알림의 종류를 살펴보겠습니다. NCache 게시/구독 메시징.
MessageDeliveryFailure:
문제로 인해 메시지가 배달되지 않은 경우 알림을 받습니다.OnTopicDeleted:
주제가 삭제될 때 알림을 받으려면.
게시자가 이러한 두 가지 유형의 알림에 등록하는 방법은 다음과 같습니다.
1 2 3 4 5 6 7 |
// You have an instance productTopic of existing topic // Register message delivery failure productTopic.MessageDeliveryFailure += OnFailureMessageReceived; //Register topic deletion notification productTopic.OnTopicDeleted = TopicDeleted; |
NCache 분산 메시징을 위한 Pub/Sub?
여기까지 우리는 NCache 게시/구독 기능. 이제 어떤 이점이 Ncache Pub/Sub는 초기에 제기된 질문을 처리하도록 제안합니까?
- NCache 제공 선형 확장성 이로 인해 귀하의 애플리케이션은 증가하는 구독 요청 수를 원활하게 처리할 수 있습니다.
- NCache 보장 고가용성 NCache 동적 환경에서 가입자의 연결성을 수용합니다.
- NCache 저장 공간을 지능적으로 관리하기 위해 캐시에 상주하는 항목에 대한 만료 및 제거를 허용합니다.
따라서 Pub/Sub의 느슨한 결합 및 비동기 메시징 모드와 함께 위의 기능은 NCache Pub/Sub 기능은 향후 .Net 애플리케이션의 분산 메시징에 매우 유망합니다.