Concurrency Model 이란 ?
- Concurrency Model이란 시스템에서 여러 연산이 동시에 어떻게 수행되는지를 설명하는 개념입니다. 주로 효율성과 성능 향상을 위한 자원 최적화가 목표입니다. Concurrency Model로 대표적인 모델이 5가지 있습니다.
- 스레드 기반 모델
- 이 모델에서는 프로세스 내의 독립적인 실행 단위인 스레드들이 동시에 작업을 수행합니다. 각 스레드는 프로세스의 자원을 공유하며, 멀티스레딩은 동시성을 구현하는 데 널리 사용됩니다.
- 이벤트 기반 모델
- 이벤트 기반 동시성에서는 특정 이벤트(사용자 입력, 네트워크 메시지 등)에 응답하여 작업을 수행합니다. 이 모델은 이벤트 루프와 콜백 함수를 사용하여 비동기적인 행동을 처리합니다.
- 메시지 전달 모델
- 이 모델에서는 독립적인 컴포넌트 또는 프로세스가 메시지를 통해 통신합니다. 각 컴포넌트는 자체 로컬 상태를 유지하고, 메시지 전달을 통해 다른 컴포넌트와 상호 작용합니다.
- 병렬 프로세싱 모델
- 이 모델은 여러 처리기(CPU 코어, 컴퓨터)를 사용하여 여러 연산을 동시에 수행합니다. 병렬 컴퓨팅은 대규모 데이터 처리와 고성능 컴퓨팅 작업에 널리 사용됩니다.
- Actor 모델
- Actor 모델은 독립적인 액터들이 메시지를 통해 통신하며 각각의 작업을 수행하는 방식입니다. 액터는 자신의 상태를 관리하고, 다른 액터에게 메시지를 보내거나 받을 수 있습니다.
Natural Concurrency Model
- Vector에서는 동시성을 모델로 Natural Concurrency Model을 사용합니다. Natural Concurrency Model은 들어오는 데이터 양과 유형에 따라 자동으로 리소스를 할당하고 조정합니다. 이 같은 역할을 Sources에서 수행하고 받은 데이터를 기반으로 동시성 단위를 정합니다.
- File Source : 파일 수에 따라 동시성 구현
- Socket Source : 유지하고 있는 활성 오픈 수에 따라 구현
Stateless Function Transform
- Stateless Function Transform이란 이전 데이터나 상태에 의존하지 않고 독립적으로 데이터 변환처리 하는 것을 뜻합니다.
- Sources 플러그인의 명세에서 state가 stateful로 정의되어 있습니다.
- state가 stateless 로 지정된 경우 stateless function transform을 기반으로 동시성(병렬) 처리가 가능합니다. 이처럼 Vector의 동시성 모델은 Stateless Function Transform에 크게 의존하여 동시성을 구현한 것을 확인할 수 있습니다.
참조
https://vector.dev/docs/about/under-the-hood/architecture/concurrency-model/
https://vector.dev/docs/reference/configuration/sources/