이벤트 스트리밍과 이벤트 소싱은 이벤트 중심 아키텍처에서 서로 관련되어 있지만 서로 다른 개념입니다.
이벤트 스트리밍은 시스템에서 발생하는 이벤트를 지속적으로 캡처하고 기록하는 프로세스입니다. 이러한 이벤트는 즉시 처리 및 분석되거나 나중에 분석하기 위해 저장될 수 있습니다. 이벤트 스트리밍은 일반적으로 금융 거래나 소셜 미디어 플랫폼과 같이 대량의 실시간 데이터를 처리해야 하는 시스템에 사용됩니다.
다음은 널리 사용되는 Kafka 메시징 시스템을 사용하여 Go에서 이벤트 스트리밍을 수행하는 간단한 예입니다.
으아악이벤트 소싱은 애플리케이션 상태의 모든 변경 사항을 일련의 이벤트로 저장하는 시스템 구축 패턴입니다. 그런 다음 이러한 이벤트를 사용하여 언제든지 애플리케이션의 상태를 재구성할 수 있습니다. 이벤트 소싱은 금융 시스템이나 의료 시스템과 같이 감사 가능성, 추적 가능성 또는 규정 준수가 필요한 시스템에서 자주 사용됩니다.
다음은 Go에서 이벤트 소싱을 위해 메모리 내 이벤트 저장소를 사용하는 간단한 예입니다.
으아악이벤트 소싱은 집계에 대한 각 수정 사항을 이벤트로 기록하고 이를 연속 스트림에 추가하는 접근 방식입니다. 집계의 최종 상태를 재구성하려면 이러한 이벤트를 순서대로 읽은 다음 집계에 적용해야 합니다. 이는 CRUD(생성, 읽기, 업데이트 및 삭제) 시스템에서 수행되는 즉석 수정과 대조됩니다. CRUD 시스템에서 레코드 상태에 대한 모든 변경 사항은 데이터베이스에 저장되어 본질적으로 동일한 내용을 재정의합니다
이전 버전 모음입니다.
가격 변경 사항이 제품 테이블에 저장되면 가격만 업데이트되고 다른 부분은 변경되지 않습니다. 그러나 이러한 접근 방식은 그림 5.1에서 볼 수 있듯이 이전 가격과 변경 이면의 맥락을 잃을 수 있습니다.
새로운 가격 및 주요 메타데이터(예: 조정 이유)를 포함한 정보를 유지하기 위해 변경 기록이 이벤트 테이블에 이벤트로 저장됩니다. 필요한 경우 검색할 수 있도록 이전 가격은 변경되지 않은 상태로 유지됩니다.
효과적인 이벤트 소싱을 달성하려면 강력한 일관성을 보장하고 낙관적 동시성 제어를 사용하는 이벤트 저장소를 사용하는 것이 좋습니다. 실제로 이는 여러 수정이 동시에 발생할 때 초기 수정만 스트림에 추가될 수 있음을 의미합니다. 이후 수정 사항은 다시 시도해야 하거나 실패할 수 있습니다.
위 내용은 이벤트 흐름 및 이벤트 소싱의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!