기타 IT 지식
Hot Stream vs Cold Stream
whjungdev
2024. 10. 15. 17:06
Hot Stream
- 동작 방식:
- Hot stream은 데이터 생산이 구독자와 독립적으로 이루어집니다. 즉, 데이터가 생성되고 방출되는 과정이 구독 여부와 관계없이 계속 진행됩니다.
- 구독자의 존재 여부:
- 구독자가 없더라도 데이터를 계속 방출합니다. 이로 인해 구독자가 구독을 시작한 시점에 이미 방출된 데이터는 받지 못할 수 있습니다.
- 예시:
- SharedFlow, StateFlow, Channel 등. 예를 들어, 이벤트 기반 시스템에서 발생하는 이벤트는 여러 소비자에게 동시에 전달되며, 소비자가 구독하기 전에 발생한 이벤트는 소비되지 않습니다.
- 상태 유지:
- 일반적으로 마지막 상태나 값을 유지하여 새로운 구독자에게 제공할 수 있는 기능이 있습니다.
Cold Stream
- 동작 방식:
- Cold stream은 구독자가 있을 때만 데이터를 생산하고 방출합니다. 즉, 구독자가 구독을 시작해야 데이터 생성이 이루어집니다.
- 구독자의 존재 여부:
- 구독자가 없으면 데이터가 생성되지 않으며, 구독자가 생기면 처음부터 데이터를 방출합니다. 따라서 모든 구독자는 동일한 데이터 시퀀스를 경험하게 됩니다.
- 예시:
- 일반적인 Flow, Sequence 등. 예를 들어, 데이터베이스에서 쿼리를 실행하거나 API 요청을 하는 경우, 구독자가 있을 때만 데이터 요청이 발생합니다.
- 상태 유지:
- 상태를 유지하지 않으며, 구독자가 구독하기 시작하면 처음부터 데이터를 방출합니다.
요약
Hot Stream | Cold Stream | |
데이터 방출 방식 | 구독자와 독립적으로 계속 방출 | 구독자가 있을 때만 방출 |
구독자 상태 | 구독자가 없어도 방출 | 구독자가 없으면 방출 없음 |
예시 | SharedFlow, StateFlow | Flow, Sequence |
상태 유지 | 마지막 상태를 유지 가능 | 상태를 유지하지 않음 |
출처 : ChatGPT