Kafka Streams in Action
도서명:Kafka Streams in Action
저자/출판사:윌리엄,베젝/에이콘출판
쪽수:360쪽
출판일:2019-07-12
ISBN:9791161753263
목차
1부. 카프카 스트림즈 시작하기
1장. 카프카 스트림즈에 오신 것을 환영합니다
1.1 빅 데이터로의 전환, 그로 인한 프로그래밍 환경의 변화
1.1.1 빅 데이터의 기원
1.1.2 맵리듀스의 중요 개념
1.1.3 배치 처리로는 충분하지 않다
1.2 스트림 처리 소개
1.2.1 스트림 처리를 사용해야 할 경우와 사용하지 말아야 할 경우
1.3 구매 거래 처리
1.3.1 스트림 처리 옵션 따져보기
1.3.2 요구사항을 그래프로 분해
1.4 구매 트랜잭션에 대한 관점 변경
1.4.1 소스 노드
1.4.2 신용카드 마스킹 노드
1.4.3 패턴 노드
1.4.4 보상 노드
1.4.5 스토리지 노드
1.5 처리 노드의 그래프인 카프카 스트림즈
1.6 카프카 스트림즈를 구매 거래 흐름에 적용하기
1.6.1 소스 정의하기
1.6.2 첫 번째 프로세서: 신용카드번호 마스킹
1.6.3 두 번째 프로세서: 구매 패턴
1.6.4 세 번째 프로세서: 고객 보상
1.6.5 네 번째 프로세서: 구매 레코드 기록하기
요약
2장. 빠르게 살펴보는 카프카
2.1 데이터 문제
2.2 카프카를 사용해 데이터 다루기
2.2.1 지마트의 오리지널 데이터 플랫폼
2.2.2 카프카 판매 거래 데이터 허브
2.3 카프카 아키텍처
2.3.1 카프카는 메시지 브로커다
2.3.2 카프카는 로그다
2.3.3 카프카에서 로그가 동작하는 방식
2.3.4 카프카와 파티션
2.3.5 키에 의한 그룹 데이터 분할
2.3.6 사용자 정의 파티셔너 작성하기
2.3.7 사용자 정의 파티셔너 지정하기
2.3.8 정확한 파티션 수 정하기
2.3.9 분산 로그
2.3.10 주키퍼: 리더, 팔로워, 복제
2.3.11 아파치 주키퍼
2.3.12 컨트롤러 선출
2.3.13 복제
2.3.14 컨트롤러의 책임
2.3.15 로그 관리
2.3.16 로그 삭제
2.3.17 로그 압축
2.4 프로듀서로 메시지 보내기
2.4.1 프로듀서 속성
2.4.2 파티션과 타임스탬프 지정
2.4.3 파티션 지정
2.4.4 카프카의 타임스탬프
2.5 컨슈머로 메시지 읽기
2.5.1 오프셋 관리
2.5.2 자동 오프셋 커밋
2.5.3 수동 오프셋 커밋
2.5.4 컨슈머 생성하기
2.5.5 컨슈머와 파티션
2.5.6 리밸런싱
2.5.7 더 세분화된 컨슈머 할당
2.5.8 컨슈머 예제
2.6 카프카 설치 및 실행
2.6.1 카프카 로컬 설정
2.6.2 카프카 실행하기
2.6.3 첫 번째 메시지 보내기
요약
2부. 카프카 스트림즈 개발
3장. 카프카 스트림즈 개발
3.1 스트림 프로세서 API
3.2 카프카 스트림즈를 위한 Hello World
3.2.1 Yelling App의 토폴로지 생성하기
3.2.2 카프카 스트림즈 설정
3.2.3 Serde 생성
3.3 사용자 데이터로 작업하기
3.3.1 토폴로지 구성하기
3.3.2 사용자 정의 Serde 생성하기
3.4 대화형 개발
3.5 다음 단계
3.5.1 새로운 요구사항
3.5.2 카프카 외부에 레코드 기록하기
요약
4장. 스트림과 상태
4.1 이벤트
4.1.1 스트림은 상태가 필요하다
4.2 카프카 스트림즈에 상태를 가진 작업 적용하기
4.2.1 transformValues 프로세서
4.2.2 고객 보상의 상태 유지
4.2.3 값 변환기 초기화
4.2.4 상태를 사용해 Purchase 객체를 RewardAccumulator에 매핑하기
4.2.5 보상 프로세서 업데이트
4.3 조회와 이전에 본 데이터에 상태 저장소 사용하기
4.3.1 데이터 지역성
4.3.2 실패 복구와 내결함성
4.3.3 카프카 스트림즈에서 상태 저장소 사용하기
4.3.4 추가적인 키/값 저장소 공급자
4.3.5 상태 저장소의 내결함성
4.3.6 변경로그 토픽 설정하기
4.4 추가적인 통찰을 위해 스트림 조인하기
4.4.1 데이터 설정
4.4.2 조인을 수행하기 위해 고객 ID를 포함한 키 생성하기
4.4.3 조인 구성하기
4.4.4 그 밖의 조인 옵션
4.5 카프카 스트림즈의 타임스탬프
4.5.1 제공된 TimestampExtractor 구현
4.5.2 WallclockTimestampExtractor
4.5.3 사용자 정의 TimestampExtractor
4.5.4 TimestampExtractor 명시하기
요약
5장. KTable API
5.1 스트림과 테이블의 관계
5.1.1 레코드 스트림
5.1.2 레코드 및 변경로그 업데이트
5.1.3 이벤트 스트림과 업데이트 스트림 비교
5.2 레코드 업데이트와 KTable 구성
5.2.1 캐시 버퍼 크기 설정하기
5.2.2 커밋 주기 설정하기
5.3 집계와 윈도 작업
5.3.1 업계별 거래량 집계
5.3.2 윈도 연산
5.3.3 KStream과 KTable 조인하기
5.3.4 GlobalKTable
5.3.5 쿼리 가능한 상태
요약
6장. 프로세서 API
6.1 더 높은 수준의 추상화와 더 많은 제어 사이의 트레이드 오프
6.2 토폴로지를 만들기 위해 소스, 프로세서, 싱크와 함께 작업하기
6.2.1 소스 노드 추가
6.2.2 프로세서 노드 추가
6.2.3 싱크 노드 추가
6.3 주식 분석 프로세서로 프로세서 API 자세히 살펴보기
6.3.1 주식 성과 프로세서 애플리케이션
6.3.2 process() 메소드
6.3.3 펑추에이터 실행
6.4 코그룹 프로세서
6.4.1 코그룹 프로세서 작성
6.5 프로세서 API와 카프카 스트림즈 API 통합하기
요약
3부. 카프카 스트림즈 관리
7장. 모니터링과 성능
7.1 기본적인 카프카 모니터링
7.1.1 컨슈머와 프로듀서 성능 측정
7.1.2 컨슈머 지연 확인하기
7.1.3 프로듀서와 컨슈머 가로채기
7.2 애플리케이션 메트릭
7.2.1 메트릭 구성
7.2.2 수집한 메트릭 확인 방법
7.2.3 JMX 사용
7.2.4 메트릭 조회
7.3 추가적인 카프카 스트림즈 디버깅 기술
7.3.1 애플리케이션 구조 조회
7.3.2 다양한 애플리케이션 상태 알림 받기
7.3.3 StateListener 사용
7.3.4 상태 리스토어 리스너
7.3.5 uncaught 예외 핸들러
요약
8장. 카프카 스트림즈 애플리케이션 테스트
8.1 토폴로지 테스트
8.1.1 테스트 만들기
8.1.2 토폴로지에서 상태 저장소 테스트
8.1.3 프로세서와 트랜스포머 테스트
8.2 통합 테스트
8.2.1 통합 테스트 구축
요약
4부. 카프카 스트림즈 고급 개념
9장. 카프카 스트림즈 고급 애플리케이션
9.1 카프카와 다른 데이터 소스 통합
9.1.1 카프카 커넥트로 데이터 통합하기
9.1.2 카프카 커넥트 셋업
9.1.3 데이터 변환
9.2 데이터베이스 제약 걷어내기
9.2.1 대화식 쿼리 작동 방법
9.2.2 분산 상태 저장소
9.2.3 분산 상태 저장소 설정 및 검색
9.2.4 대화식 쿼리 작성
9.2.5 쿼리 서버의 내부
9.3 KSQL
9.3.1 KSQL 스트림과 테이블
9.3.2 KSQL 구조
9.3.3 KSQL 설치 및 실행
9.3.4 KSQL 스트림 만들기
9.3.5 KSQL 쿼리 작성
9.3.6 KSQL 테이블 생성
9.3.7 KSQL 설정
요약
부록 A. 추가적인 구성 정보
__시작 시 리밸런싱 수 제한하기
__브로커 중단에 대한 회복력
__역직렬화 오류 처리
__애플리케이션 스케일업
__록스DB 설정
__미리 토픽 리파티셔닝 만들기
__내부 토픽 설정
__카프카 스트리밍 애플리케이션 재설정
__로컬 상태 클린업
부록 B. 정확히 한 번의 시맨틱