전체 글

    Akka Actor Intro

    Rock the JVM 강의 내용을 기반으로 정리하였습니다.(https://courses.rockthejvm.com/p/akka-classic-essentials) Actor 소개Actor(액터) 모델은 1970년대에 객체 지향 프로그래밍 패러다임에 영감을 주었지만, 이후 프로그래밍 역사는 다른 방향으로 흘러가 오늘날 우리가 알고 있는 클래스와 객체를 만들어냈습니다. 전통적인 객체 지향 프로그래밍에서는 클래스를 기반으로 코드를 모델링하고, 각 인스턴스는 고유한 데이터를 가지고 메서드를 통해 외부 세계와 상호작용합니다. Actors(액터)도 개인적인 데이터를 갖고 있다는 점에서는 비슷하지만, 외부와 상호작용하는 방식은 다릅니다. 액터와 소통하는 방법은 메서드를 호출하는 것이 아니라, “메시지를 보내는 것”..

    리더 에포크와 복구

    리더 에포크는 카프카의 파티션들이 복구 동작을 할 때 메시지의 일관성을 유지하기 위한 용도기본적으로 브로커가 재시작되면 자신의 하이워터마크보다 높은 메시지들은 신뢰할 수 없는 메시지로 판단하고 삭제 상황1)팔로워가 재시작되어서 자신보다 높은 하이워터마크 레코드를 삭제하기 전에 리더에게 리어 에포크 요청을 진행리더는 리더 에포크 응답으로 1번 오프셋 message2까지라고 응답을 보내고팔로워는 1번 오프셋가지 하이워터마크를 샹향 조정여기서 리더가 장애가 발생해서 팔로워가 리더로 승격되더라도 데이터는 유실되지 않음 상황2)프로듀서로부터 message3을 받아서 1번 오프셋에 저장팔로워가 없으므로 하이워터마크를 샹향 조정 기존의 리더가 장애에서 복구되었고, 리더가 있으니 팔로워가 됨(리더에 포크 요청 X) 정..

    리플리케이션

    브로커의 장애에도 불구하고 연속으로 안정적인 서비스를 제공하고 데이터 유실을 방지하기 위해서 리플리케이션을 지원 kafak-topics.sh --bootstrap-server peter-kafka01.foo.bar:9092 --create --topic peter-test01 --partitions 1 --replication-factor 3카프카는 컨트롤러 브로커를 통해서 클러스터의 상태를 관리하고 있음 - 컨트롤러 브로커는 클러스터에 있는 모든 브로커의 메타데이터를 유지하고 관리하는 역할kafka-topics.sh --create 명령을 실행하면, 지정된 브로커(peter-kafka01.foo.bar:9092)로 요청요청을 받은 브로커는 컨트롤러 브로커에게 토픽 생성 요청을 전달컨트롤러 브로커는 현재..

    카프카 기본 용어 정리

    카프카 공부를 시작하기 전 용어에 대한 개념부터 정리해봅니다.레코드(=메세지)관계형 데이터베이스에서 로우와 비슷한 개념카프카 데이터의 기본 단위단순한 바이트의 배열토픽관계형 데이터베이스에서 테이블과 비슷한 개념파일시스템의 폴더와 비슷한 개념파티션하나의 토픽이 한 번에 처리할 수 있는 한계를 높이기 위해서 토픽 하나를 여러 개로 나눠 병렬처리가 가능하도록 만든 것파티션에 메시지가 쓰여질 때는 추가만 가능(append-only)오프셋파티션에 메시지가 저장되는 위치리플리케이션파티션을 여러 개로 복제해서 카프카 클러스터 내 브로커들에게 분산시키는 동작을 의미브로커 개수 인 경우에는 토픽을 생성할 때 InvalidReplicationFactorException 에러가 발생프로듀서PUB/SUB 시스템에서 발행자를 ..