기존의 서버 앱용 모놀리식 애플리케이션 아키텍처는 최근 소프트웨어 산업에서 패러다임의 변화를 겪었으며 현재 마이크로서비스 아키텍처가 그 자리를 차지하고 있습니다. 각각 단일 기능을 나타내고 해당 프로세스에서 실행되는 가볍고 느슨하게 연결된 모듈 모음에 대한 아이디어는 꽤 인기가 있었으며 그럴 만한 이유가 있었습니다. 각각의 개별 서비스가 종속성 없이 독립적으로 생성, 관리 및 테스트되기 때문에 마이크로 서비스 아키텍처를 통해 확장성, 의존성 및 고가용성이 가능합니다.
마이크로서비스는 느슨하게 결합되어 있으므로 메시지 브로커가 이 인프라에 적합하여 분리를 유지하면서 비동기식 마이크로서비스 통신을 허용하는 것이 좋습니다. 비동기 통신은 두 서비스가 다른 서비스를 기다릴 필요가 없음을 의미합니다. 이를 위해 게시-구독 모델이 마이크로 서비스 간의 통신 매체로 널리 채택되었습니다.
NCache .NET용 메모리 내 분산 데이터 저장소이며 이벤트 기반 통신을 위해 기능이 풍부한 메모리 내 게시/구독을 제공합니다. 따라서, NCache Pub/Sub 모델을 사용하여 마이크로 서비스 간의 비동기 통신을 위한 메시징 브로커로 쉽게 구성할 수 있습니다.
NCache 세부 정보 Pub/Sub 메시징 및 이벤트 Pub / Sub NCache 기술 문서
사용 NCache 마이크로서비스용 인메모리 Pub/Sub
게시/구독이 다음에서 사용 설정되었습니다. NCache 마이크로서비스(.NET/.NET Core) 이벤트를 게시하고 구독할 수 있습니다. 이벤트는 마이크로서비스 외부에 게시됩니다. NCache 메시지 브로커. 각 구독자 마이크로서비스에는 게시자 마이크로서비스가 게시한 적절한 이벤트를 처리하기 위한 이벤트 핸들러가 포함되어 있습니다. 이 아키텍처의 단순하고 논리적인 다이어그램이 그림 1에 강조 표시되어 있습니다.
.NET/.NET Core 마이크로 서비스, NCache 메시지가 하나 이상의 구독자에게 전달되는 이벤트 버스 또는 메시지 브로커 역할을 합니다. 자세한 내용은 NCache Pub/Sub 모델은 다음을 참조하십시오. NCache 선적 서류 비치 또는 우리 블로그 사용 NCache 인메모리 Pub/Sub로.
이 블로그 게시물은 eShopOnContainers 로 확장된 샘플 애플리케이션 NCache 과 GitHub에 업로드됨. 프로젝트는 주입 NCache .NET 마이크로 서비스 간의 앱 조정을 위한 이벤트 버스로 사용됩니다. NCache이 애플리케이션에서 의 역할은 그림 2에 나와 있습니다.
NCache 세부 정보 Pub/Sub 메시징 및 이벤트 Pub / Sub NCache 기술 문서
사용의 빠른 예 NCache 인메모리 게시/구독
사용법 - eShopOnContainers 신청, NCache 여러 시나리오에서 메시지 브로커 역할을 합니다. 여기에 강조 표시된 한 가지 시나리오는 장바구니 세부 정보가 표시되는 사용자 체크아웃 이벤트입니다. 출판 ~로 NCache 이벤트 버스 및 주문 애플리케이션이 가질 수 있습니다. 구독 한 주문을 처리하기 위해 사용자 체크아웃 시 들어오는 바구니에.
- 게시 : 이 단순화된 코드 스니펫은 사용자 ID와 주소, 카드 번호 등과 같은 모든 장바구니 세부 정보가 메시지 페이로드로 추가되고 이벤트 버스에 게시되는 Basket.API 마이크로 서비스의 장바구니 결제 로직의 일부를 보여줍니다. Basket.API 코드는 다음에서 찾을 수 있습니다. BasketController.cs GitHub의 수업.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[Route("checkout")] [HttpPost] public async Task<ActionResult> CheckoutAsync([FromBody]BasketCheckout basketCheckout, [FromHeader(Name = "x-requestid")] string requestId) { var userId = GetUserIdentity(); basketCheckout.RequestId = GetRequestID(); var basket = await GetBasketAsync(userId); var userName = User.FindFirst(x => x.Type == "unique_name").Value; var eventMessage = new UserCheckoutAcceptedIntegrationEvent(userId, userName, basketCheckout.Address, basketCheckout.CardNumber, basketCheckout.RequestId, basket); // This message is published to the NCache Pub/Sub store eventBus.Publish(eventMessage); } |
- 구독 신청 : 다음 코드 스니펫은 Ordering.API 마이크로서비스에서 가져온 것입니다. GitHub에 업로드됨. 여기에는 사용자가 장바구니를 체크아웃하면 이벤트가 메시지로 게시되고 주문을 추가로 처리하기 위해 구독자의 핸들러가 호출되는 UserCheckout 이벤트에 대한 구독이 포함됩니다.
1 2 3 4 |
var eventBus = app.ApplicationServices.GetRequiredService<IEventBus>(); eventBus.Subscribe<UserCheckoutAcceptedEvent, IIntegrationEventHandler<UserCheckoutAcceptedEvent>>(); |
NCache 세부 정보 Pub/Sub 메시징 및 이벤트 Pub / Sub NCache 기술 문서
영구 구독을 통한 Pub/Sub 메시지 내구성
마이크로서비스는 느슨하게 결합되어 있기 때문에 마이크로서비스가 언제든지 애플리케이션에 합류하거나 떠날 수 있음을 의미합니다. 또한 트래픽이 많은 메시지 전달 중에 네트워크 결함이 발생하면 어떻게 됩니까? 즉, 이벤트 버스와의 마이크로서비스 연결이 충분히 탄력적이어야 하므로 네트워크가 일시적으로 중단되더라도 메시지가 손실되지 않습니다.
NCache 두 가지 유형의 지속 가능한 구독을 제공하여 .NET/.NET Core 마이크로서비스:
- 지속 가능한 공유 구독: 여러 구독자가 하나의 구독을 구독할 수 있습니다. 라운드 로빈 방법은 여러 가입자에게 메시지를 보내는 데 사용됩니다. 가입자가 네트워크를 떠나더라도 활성 가입자 간의 메시지는 계속 배포됩니다.
- 독점 지속 구독: 하나의 구독에는 한 번에 하나의 활성 구독자만 있습니다. 연결이 활성화될 때까지 동일한 구독에서 새 구독자 요청이 수락되지 않습니다.
NCache 세부 정보 Pub/Sub 메시징 및 이벤트 Pub / Sub NCache 기술 문서
연결 재시도를 통한 통신 안정성
마이크로서비스는 통신을 위해 네트워크에 의존하기 때문에 연결 설정 메커니즘이 필요한 예기치 않은 네트워크 오류가 발생할 수 있습니다. 따라서, NCache 신뢰할 수 있는 커뮤니케이션 플랫폼을 유지합니다. 연결 재시도 과 살아 유지 .NET/.NET Core 서비스는 네트워크 오류가 발생할 경우 자동으로 캐시에 연결을 시도합니다. 이렇게 하면 Polly와 같은 타사 라이브러리에 의한 재시도 정책이 필요하지 않습니다.
NCache 세부 정보 연결 재시도 통신 신뢰성 NCache 기술 문서
NCache?
이제 조직에서 모놀리식 애플리케이션을 통해 마이크로서비스 아키텍처를 채택함에 따라 NCache .NET/의 중간 매체로 사용되는 메모리 내 분산 데이터 저장소가 됩니다..NET Core 마이크로서비스 애플리케이션.
- 매우 빠르고 선형적으로 확장 가능: 메모리에 있고, NCache 다른 Pub/Sub 솔루션보다 빠른 통신을 제공합니다. 게다가 배포되는 것은 NCache 더 많은 로드를 처리하기 위해 Message Broker 클러스터에 더 많은 서버를 추가할 때 이동 중에 확장할 수 있습니다.
- 고가용성: NCache 단일 장애 지점을 보장하지 않는 동적 자가 치유 PXNUMXP 클러스터 아키텍처를 제공합니다. 게다가, NCache 메시지를 현명하게 복제하고 내구성 있는 구독을 제공하므로 캐시 서버가 다운되는 경우 메시지 손실이 없으므로 통신을 위한 마이크로 서비스의 고가용성을 보장합니다. NCache 또한 클러스터를 중지하지 않고 런타임에 이러한 서버를 추가할 수 있도록 하여 클러스터의 서버 수를 늘려야 할 때 고가용성을 제공합니다.
- 출신 .NET Core: .NET/에 내장된 마이크로서비스용.NET Core, NCache 100% .NET 제공 / .NET Core 애플리케이션 스택에 원활하게 통합되는 네이티브 스택.
요약하자면, 마이크로서비스는 애플리케이션을 논리적 단위로 단순화하지만 이들 사이의 통신을 관리하는 것도 어려워집니다. 따라서, NCache 동시에 분리도 고려하는 고가용성 메시징 브로커를 도입하는 데 따른 추가 복잡성을 제거합니다.
우리는 다른 블로그에 분산 캐싱으로 마이크로서비스 성능 확장. 가서 확인해보세요!