Pulsar 커넥터 개요
Pulsar 커넥터 개요 (Connector overview)
메시징 시스템은 데이터베이스나 다른 메시징 시스템 같은 외부 시스템과 쉽게 연동할 수 있을 때 가장 강력해져요. Pulsar IO 커넥터는 바로 그 '외부 시스템과의 연동'을 쉽게 만들어 주는 도구예요. Pulsar IO 커넥터를 이용하면 Apache Cassandra, Aerospike 등 다양한 외부 시스템과 상호작용하는 커넥터를 쉽게 만들고 배포하고 관리할 수 있어요.
출처: 문서
본문
개념 (Concept)
Pulsar IO 커넥터는 크게 두 가지 유형으로 나뉘어요.
- Source
- Sink
아래 다이어그램은 Source, Pulsar, Sink 사이의 관계를 보여줘요.
Source
Source 커넥터는 외부 시스템의 데이터를 Pulsar로 밀어 넣어요(feed). 흔히 쓰는 Source로는 다른 메시징 시스템과 파이어호스(firehose) 스타일의 데이터 파이프라인 API가 있어요.
Pulsar 내장 Source 커넥터의 전체 목록은 source connector 문서를 참고하세요.
Sink
Sink 커넥터는 Pulsar의 데이터를 외부 시스템으로 밀어 넣어요. 흔히 쓰는 Sink로는 다른 메시징 시스템과 SQL/NoSQL 데이터베이스가 있어요.
Pulsar 내장 Sink 커넥터의 전체 목록은 sink connector 문서를 참고하세요.
처리 보장 (Processing guarantee)
처리 보장(processing guarantee)은 Pulsar 토픽에 메시지를 쓸 때 발생하는 오류를 어떻게 처리할지를 정하는 개념이에요.
Pulsar 커넥터와 Functions는 아래와 동일한 처리 보장 방식을 사용해요.
| 전달 의미 (Delivery semantic) | 설명 |
|---|---|
| at-most-once | 커넥터로 전송된 각 메시지는 한 번 처리되거나 아예 처리되지 않아요. |
| at-least-once | 커넥터로 전송된 각 메시지는 한 번 또는 그 이상 처리돼요. |
| effectively-once | 커넥터로 전송된 각 메시지는 그에 대응하는 하나의 출력을 가져요. |
커넥터의 처리 보장은 Pulsar의 보장에만 의존하는 게 아니라 외부 시스템에도 관련이 있어요. 즉 Source와 Sink의 구현 방식에 따라 달라지는 부분이 있다는 뜻이에요.
- Source: Pulsar 토픽에 메시지를 쓰는 동작이 처리 보장을 지키도록 하는 것은 Pulsar가 보장해요. 이 부분은 Pulsar의 통제 범위 안에 있어요.
- Sink: 처리 보장은 Sink 구현에 달려 있어요. Sink 구현이 재시도(retry)를 멱등(idempotent)하게 처리하지 않으면, Sink는 처리 보장을 지키지 못할 수 있어요.
처리 보장 설정하기 (Set processing guarantees)
커넥터를 만들 때 아래 의미 중 하나로 처리 보장을 설정할 수 있어요.
- ATLEAST_ONCE
- ATMOST_ONCE
- EFFECTIVELY_ONCE
커넥터를 만들 때
--processing-guarantees를 지정하지 않으면 기본 의미는ATLEAST_ONCE예요.
예시로 Admin CLI를 살펴볼게요. REST API나 JAVA Admin API에 대한 더 자세한 내용은 여기를 참고하세요.
- Source
- Sink
bin/pulsar-admin sources create \ --processing-guarantees ATMOST_ONCE \ # Other source configs
pulsar-admin sources create의 옵션에 대한 더 자세한 내용은 여기를 참고하세요.
bin/pulsar-admin sinks create \ --processing-guarantees EFFECTIVELY_ONCE \ # Other sink configs
pulsar-admin sinks create의 옵션에 대한 더 자세한 내용은 여기를 참고하세요.
처리 보장 업데이트하기 (Update processing guarantees)
커넥터를 만든 뒤에도 아래 의미 중 하나로 처리 보장을 업데이트할 수 있어요.
- ATLEAST_ONCE
- ATMOST_ONCE
- EFFECTIVELY_ONCE
예시로 Admin CLI를 살펴볼게요. REST API나 JAVA Admin API에 대한 더 자세한 내용은 여기를 참고하세요.
- Source
- Sink
bin/pulsar-admin sources update \ --processing-guarantees EFFECTIVELY_ONCE \ # Other source configs
pulsar-admin sources update의 옵션에 대한 더 자세한 내용은 여기를 참고하세요.
bin/pulsar-admin sinks update \ --processing-guarantees ATMOST_ONCE \ # Other sink configs
pulsar-admin sinks update의 옵션에 대한 더 자세한 내용은 여기를 참고하세요.
커넥터 다루기 (Work with connector)
Pulsar 커넥터를 관리하려면(예: 커넥터의 생성, 업데이트, 시작, 중지, 재시작, 리로드, 삭제 등) Connector Admin CLI의 sources와 sinks 하위 명령어를 사용할 수 있어요. 최신의 완전한 정보는 Pulsar admin 문서를 참고하세요.
커넥터(Source와 Sink)와 Functions는 인스턴스(instance)의 구성 요소이며, 모두 Functions 워커(worker) 위에서 실행돼요. Connector Admin CLI나 Functions Admin CLI로 Source, Sink, Function을 관리하면 워커 위에 인스턴스가 하나 시작돼요. 더 자세한 내용은 Functions worker 문서를 참고하세요.