You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
지표 서버를 구축, 즉 중간에 브로커를 통해 발행, 구독하면 지표값들을 질의할 수 있는 서버가 만들어지는 효과
2. 카프카 입문
2.1 메시지와 배치
카프카는 저장된 데이터의 순서를 보장한 채로 지속성 있게 보관되며 읽을 수 있음. 또한 확장시 성능을 향상시키고 실패가 발생하더라도 데이터 사용에는 문제가 없도록 시스템 안에서 데이터를 분산시켜 저장할 수 있음.
카프카의 데이터의 기본 단위는 메시지. 단순한 바이트의 배열을 의미. 데이터에는 키와 밸류로 나뉘어 저장
카프카는 효율성을 위해 메시지를 배치단위로 저장. 같은 토픽의 파티션에 쓰여지는 메시지들의 집합을 의미함.
2.2 스키마
흔히 아는 JSON, XML이 있음. 하지만 이 방식들은 타입 처리 기능이나 스키마 버전 간의 호환성 유지 기능이 떨어짐.
많은 카프카 개발자들은 아파치 에이브로(Avro)를 선호
2.3 토픽과 파티션
카프카에 저장되는 메시지는 토픽단위로 분류. 이러한 토픽은 다시 여러 개의 파티션으로 나뉘어짐
토픽에 여러개의 파티션이 있는 만큼 토픽 안의 메시지 전체에 대해 순서는 보장되지 않으며, 단일 파티션 안에서의 메시지만 순서가 보장
각 파티션이 서로 다른 서버에 저장될 수 있기 때문에 하나의 토픽이 여러 개의 서버로 수평적으로 확장되어 하나의 서버의 용량을 넘어가는 성능을 보여줌.
또한 파티션은 복제 가능. 즉, 서로 다른 서버들이 동일한 파티션의 복제본을 저장하고 있기 때문에 서버 중 하나에 장애가 발생한다고 해서 읽거나 쓸 수 없는 상황은 X
2.4 프로듀서와 컨슈머
프로듀서
프로듀서는 새로운 메시지를 생성. Publisher, Writer라고도 부름. 메시지는 특정한 토픽에 쓰여짐
기본적으로 메시지를 쓸 때 토픽에 속한 파티션을 나눠서 쓰도록 되어 있음. 대게 키와 키값의 해시를 통해 특정 파티션을 대응시키는 파티셔너를 사용하여 구현. 동일한 키값을 가진 메시지는 같은 파티션에 저장. (커스텀 파티셔너도 지정 가능)
컨슈머
컨슈머는 메시지를 읽음. 1개 이상의 토픽을 구독하여 저장된 메시지들을 각 파티션에 쓰여진 순서대로 읽어 옴. 메시지에 오프셋을 기록함으로써 어느 메시지까지 읽었는지를 유지.
컨슈머 그룹
컨슈머는 컨슈머 그룹의 일원으로써 작동. 토픽에 저장된 데이터를 읽어오기 위해 협업하는 하나 이상의 컨슈머로 이루어짐.
따라서 2개이상의 클러스터를 통해 컨슈머를 분리하여도 메시지의 순서가 유지될 수 있음.
위의 방법을 사용함으로써 대량의 메시지를 갖는 토픽들을 읽기 위해 컨슈머들을 수평 확장할 수 있음. 컨슈머 중 하나에 장애가 발생하더라도, 그룹 안의 다른 컨슈머들이 파티션을 재할당 받아 다시 일함.
하나의 컨슈머가 2개이상의 파티션을 읽을 수 있는데 이러한 대응 관계를 컨슈머의 파티션 소유권이라고 함.
--> 토픽 하나에 여러 파티션
--> 파티션들은 각각 다른 서버에서 동작
--> 컨슈머 그룹은 컨슈머의 집합인데, 이 각각의 컨슈머들이 각각의 파티션별로 메시지를 읽음. (하나의 컨슈머가 2개이상 파티션을 읽을수도 있음.)
2.5 브로커와 클러스터
하나의 카프카 서버를 브로커 라고 부름. 브로커는 프로듀서로부터 메시지를 전달받아 오프셋을 할당한 뒤 디스크 저장소에 작성.
카프카의 브로커는 클러스터의 일부로써 작동하도록 설계. 하나의 클러스터 안에 여러 개의 브로커가 포함될 수 있으며, 그 중 하나의 브로커가 클러스터 컨트롤러의 역할을 하게 됩니다.
컨트롤러는 파티션을 브로커에 할당해주거나 브로커를 모니터링하는 관리 기능을 담당.
파티션은 클러스터 안의 브로커 중 하나가 담당하며 이를 파티션 리더라고 함.
복제된 파티션은 여러 브로커에 할당될 수도 있는데 이들을 파티션의 팔로워라고 함.
복제 기능은 파티션의 메시지를 중복 저장함으로써 리더 브로커에 장애가 발생했을 때 팔로워 중 하나가 리더 역할을 이어할 수 있도록 함.
2.6 다중 클러스터
카프카의 확장에 따라 다수의 클러스터 운용 가능.
데이터 유형별 분리
보안 요구사항을 충족시키기 위한 격리
재해 복구를 대비한 다중 데이터센터
3 왜 카프카인가?
3.1 다중 프로듀서 제공
카프카는 여러 프로듀서를 처리 가능. 프로듀서가 여러 토픽을 사용하든 하나의 토픽을 사용하든..... 이는 MSA환경에서 일관성있게 데이터를 유지하는데 적합
3.2 다중 컨슈머 제공
카프카는 많은 컨슈머가 상호 간섭 없이 어떠한 메시지 스트림도 읽을 수 있도록 설계되어 있음. 다수의 컨슈머는 컨슈머 그룹의 일원으로 작동함으로써 하나의 스트림을 여럿이서 나눠서 읽을 수 있음. (주어진 메시지는 전체 컨슈머 그룹에 대해 한 번만 처리.)
3.3 디스크 기반 보존
카프카는 메시지를 지속성 있게 저장할 수 있음. 이는 컨슈머가 데이터를 실시간으로 읽어올 필요는 없다는 의미기도 함. 컨슈머가 정지하더라도 메시지는 카프카내부에 보존됨.
3.4 확장성
카프카는 유연한 확장성을 가지고 있기 때문에 어떤 크기의 데이터도 쉽게 처리할 수 있음. 하나의 브로커에서 수십개의 브로커로 구성된 환경으로의 이동이 가능.
4 데이터 생태계
4.1 이용 사례
활동 추적 : 사용자 행동 분석
메시지 교환
다양한 환경에서의 메일 API 호출을 동일한 형식, 일정하게 호출 가능, 알림 등
지표 및 로그 수집
커밋 로그
데이터베이스에 가해진 커밋로그가 카프카로 발행됨으로써 쉽게 실시간 업데이트를 받아볼 수 있음
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
1. 발행/구독 메시지 전달
2. 카프카 입문
2.1 메시지와 배치
2.2 스키마
2.3 토픽과 파티션
2.4 프로듀서와 컨슈머
프로듀서
프로듀서는 새로운 메시지를 생성. Publisher, Writer라고도 부름. 메시지는 특정한 토픽에 쓰여짐
기본적으로 메시지를 쓸 때 토픽에 속한 파티션을 나눠서 쓰도록 되어 있음. 대게 키와 키값의 해시를 통해 특정 파티션을 대응시키는 파티셔너를 사용하여 구현. 동일한 키값을 가진 메시지는 같은 파티션에 저장. (커스텀 파티셔너도 지정 가능)
컨슈머
컨슈머는 메시지를 읽음. 1개 이상의 토픽을 구독하여 저장된 메시지들을 각 파티션에 쓰여진 순서대로 읽어 옴. 메시지에 오프셋을 기록함으로써 어느 메시지까지 읽었는지를 유지.
컨슈머 그룹
컨슈머는 컨슈머 그룹의 일원으로써 작동. 토픽에 저장된 데이터를 읽어오기 위해 협업하는 하나 이상의 컨슈머로 이루어짐.
따라서 2개이상의 클러스터를 통해 컨슈머를 분리하여도 메시지의 순서가 유지될 수 있음.
위의 방법을 사용함으로써 대량의 메시지를 갖는 토픽들을 읽기 위해 컨슈머들을 수평 확장할 수 있음. 컨슈머 중 하나에 장애가 발생하더라도, 그룹 안의 다른 컨슈머들이 파티션을 재할당 받아 다시 일함.
하나의 컨슈머가 2개이상의 파티션을 읽을 수 있는데 이러한 대응 관계를 컨슈머의 파티션 소유권이라고 함.
--> 토픽 하나에 여러 파티션
--> 파티션들은 각각 다른 서버에서 동작
--> 컨슈머 그룹은 컨슈머의 집합인데, 이 각각의 컨슈머들이 각각의 파티션별로 메시지를 읽음. (하나의 컨슈머가 2개이상 파티션을 읽을수도 있음.)
2.5 브로커와 클러스터
2.6 다중 클러스터
카프카의 확장에 따라 다수의 클러스터 운용 가능.
3 왜 카프카인가?
3.1 다중 프로듀서 제공
카프카는 여러 프로듀서를 처리 가능. 프로듀서가 여러 토픽을 사용하든 하나의 토픽을 사용하든..... 이는 MSA환경에서 일관성있게 데이터를 유지하는데 적합
3.2 다중 컨슈머 제공
카프카는 많은 컨슈머가 상호 간섭 없이 어떠한 메시지 스트림도 읽을 수 있도록 설계되어 있음. 다수의 컨슈머는 컨슈머 그룹의 일원으로 작동함으로써 하나의 스트림을 여럿이서 나눠서 읽을 수 있음. (주어진 메시지는 전체 컨슈머 그룹에 대해 한 번만 처리.)
3.3 디스크 기반 보존
카프카는 메시지를 지속성 있게 저장할 수 있음. 이는 컨슈머가 데이터를 실시간으로 읽어올 필요는 없다는 의미기도 함. 컨슈머가 정지하더라도 메시지는 카프카내부에 보존됨.
3.4 확장성
카프카는 유연한 확장성을 가지고 있기 때문에 어떤 크기의 데이터도 쉽게 처리할 수 있음. 하나의 브로커에서 수십개의 브로커로 구성된 환경으로의 이동이 가능.
4 데이터 생태계
4.1 이용 사례
Beta Was this translation helpful? Give feedback.
All reactions