분배 시스템 메시지가 비정상 인 경우 수행 할 작업

영상

비동기 처리 모델

분산, 마이크로 서비스 및 기타 매우 매력적인 대명사에 관해서는 이러한 단어의 영어 번역이 훌륭하기 때문이 아니라 현대 인터넷과 엔터프라이즈 수준의 개발이 실제로 배포되어 있기 때문에 항상 인터뷰에서 눈에 띄게 될 수 있습니다. 마이크로 서비스 및 기타 모드에서 우수한 아키텍처 효과가 달성되었습니다. 마이크로 서비스이든 이전 SOA이든, 프로그램의 IO 처리에서 시스템 간의 메시지 교환에 이르기까지 비동기 처리 모델과는 항상 분리 할 수 ​​없습니다. 모든 곳에 비동기 수치가 있습니다.

시스템 간 비동기식 메시지 처리에 관해서는 메시지 큐 (MQ)에 대해 이야기해야합니다. 현재 업계에서 가장 인기있는 MQ 유형은 자신 만의 바이두 브레인 보충제를 만드세요. 하지만 MQ는 비동기 데이터 처리를위한 솔루션 일 뿐이라는 점을 상기해야합니다. MQ 없이도 비동기 처리를 수행 할 수 있습니까? 물론 가장 간단하고 무례한 방법은 데이터베이스 방식을 사용하는 것인데, 메시지 생산자는 데이터베이스에 데이터를 직접 삽입하고 소비자는 데이터베이스를 읽어 데이터를 얻는 방식을 사용하므로 MQ가 비동기 처리를 의미하지는 않습니다.

비동기 메시지 처리는 각 시스템을 최대한 분리하고 각 시스템의 독립적 인 확장을위한 더 많은 공간을 제공합니다. 그러나 비동기 메시지 처리는 메시지 파이프 라인 성능 및 메시지 파이프 라인의 고가용 성과 같은 몇 가지 문제에 직면합니다. 비즈니스 계층에 가까운 것은 "데이터 예외 처리"가 아닐 수 있습니다. 기본적으로 이것은 데이터 처리 모델의 끝이고 데이터 흐름의 끝이지만 종종 비즈니스의 중요한 부분입니다.

비동기 메시지가 분산 트랜잭션의 일부로 사용되는 경우 메시지 처리 결과에 대한 피드백도 설계되고 분산 코디네이터는 메시지 결과의 성공에 따라 트랜잭션 결과를 결정합니다.

비동기 메시지 소비자에 관한 한, 다양한 비즈니스 시나리오에 따라 다음과 같은 예외 처리 솔루션이 있습니다.

무시

이것은 모든 예외 데이터 처리 솔루션 중 가장 조잡하고 간단한 것입니다. 예외가 발생하면 무시하고 아무것도하지 마십시오.

비정상적인 상황에서 어떤 조치도 취하지 마십시오. 언뜻보기에는 매우 나쁜 해결책으로 들릴 수 있지만 실제 비즈니스에서는 완전히 수용 할 수 있습니다. 오류로 인한 손실이 작거나 무시할 수있는 경우 오류 수정 메커니즘 집합을 설정하는 데 드는 비용이 예외를 무시하는 것보다 훨씬 높습니다.이 시나리오에서는 무시하도록 선택하는 것이 종종 더 나은 솔루션입니다. 그리고 오류 수정 메커니즘이 수동 개입이 필요하도록 설계되면 비용이 높아지고 다른 비즈니스에도 영향을 미칠 가능성이 있습니다. 더욱 두려운 것은 오류 수정 메커니즘 자체에 문제가 있으면 비용이 더 많이 든다는 것입니다. .

매우 간단한 밤나무를 예로 들어 보겠습니다. 로그인 로그에 대한 통계 작업과 마찬가지로 특정 사람이 처리 한 데이터에 이상이 있으면 무시하기로 선택하는 경우가 많습니다. 통계 비즈니스 자체에는 데이터 내결함성 메커니즘이 있기 때문에 통계 요구 사항 측면에서 100,000과 100001 사이에 차이가 없습니다.

다시 해 보다

직접 무시 된 솔루션을 사용할 수없는 경우 작업을 다시 시도해야 할 수 있습니다. 재 시도의 경우 성공률이 충분히 높으면 재 시도는 합리적인 선택입니다. 재 시도는 간접적 인 오류를 수정할 수 있지만 비즈니스 규칙 및 데이터 모델을 위반하는 데이터에 대해서는 아무것도 할 수 없습니다.

가장 이상적인 경우 재시도 작업이 멱등 성인 경우 멱 등성 성능은 무엇입니까 (직접 Baidu로 이동)? 상황이 훨씬 간단 해지며 재시도 작업을 안심하고 구현할 수 있습니다. 그러나 일정 시간 또는 특정 횟수 후에도 재시도 작업이 성공하지 못한 경우 대부분의 경우 특정 후속 전략이 필요할 수 있습니다. 예를 들면 다음과 같습니다. 10 회 재시도 후에도 여전히 실패하면 포기합니다.

구성하다

이 전략은 롤백 작업이므로 많은 보상이 아닌 분산 트랜잭션에서 자주 사용됩니다. 특히 프로그램이 데이터를 수신하고 일련의 작업을 수행하는 시나리오에서 보상 작업은 트랜잭션 롤백의 개념과 유사하므로 시스템이 일련의 작업 이전 상태로 돌아갈 수 있습니다. 이 보상 메커니즘은 "트랜잭션"요구 사항이있는 시나리오에 매우 적합합니다.

귀하의 비즈니스에서 "거래"수요 시나리오는 무엇입니까? 메시지에 반영 해 주셔서 감사합니다. 잠시만 말씀 드리겠습니다. 주간 건축 서적 발송 활동은 아직 진행 중입니다. 관심을 가져 주셔서 감사합니다.

영상

더 흥미로운 기사

영상

추천

출처blog.51cto.com/zhanlang/2532766