분류 전체보기 308

Consumer Assignment Strategies

목차 [Range] Consumer를 브로커가 할당한 member_id 를 사용하여 사전순으로 배치하고, 이를 파티션 숫자 순서대로 할당. ex) consumer 3개가 있고, 2개 토픽이 각각 파티션 2개,2개를 갖고 있다면 아래처럼 할당된다. Consumer Assigned Topic Partitions C0 T0P0, T1P0 C1 T0P1, T1P1 C2 유휴 만약 토픽별로 파티션 개수의 편차가 크다면 뒤에 있는 Consumer들은 유휴상태로 남아있는다. [Round-Robin] 참조: https://kafka.apache.org/24/javadoc/org/apache/kafka/clients/consumer/RoundRobinAssignor.html#:~:text=The%20round%20rob..

Kafka/Consumer 2023.02.04

Auto Commit 사용시 메시지 유실 테스트

목차 [목표] Auto-Commit을 할 때 방금 가져온 메시지 오프셋을 커밋하는지 마지막에 처리한 오프셋을 커밋하는지 확인. Consumer에서 Auto-Commit 을 사용할 때 메시지 유실 가능성이 있는지 확인. [메시지 유실될 가능성?] 구글링을 해보면 아래같은 케이스에서 메시지 유실 가능성이 있다고 한다. 이러한 상황이 발생하려면 auto commit을 켰을 때 방금 읽어온 메시지 오프셋을 커밋해야 한다. [테스트 환경] Java - zulu JDK11 Apache Kafka Client - 2.8.1 Spring Kafka - 2.6.13 [테스트 방법] Consumer Properties enable.auto.commit = true max.poll.records = 10 auto.commi..

Kafka/Consumer 2023.02.04

Kafka Fundamental Hands On

목차 [Phase 1 : 기본 커맨드 (토픽 생성, 수정, 삭제, Producer, Consumer 구동하기)] # 토픽 리스트 조회 $ sudo kafka-topics --bootstrap-server localhost:9092 --list # 토픽 생성 $ sudo kafka-topics --create --bootstrap-server localhost:9092 --topic hands-on-jaeshim --partitions 5 --replication-factor 4 --config min.insync.replicas=2 Created topic hands-on-jaeshim. # 토픽 확인 $ sudo kafka-topics --describe --bootstrap-server localho..

Kafka 2023.02.04

Istio

[Istio?] Service Mesh를 구현할 수 있는 오픈소스 솔루션. 서비스에 경량화 프록시(Proxy)를 사이드카(sidecar) 방식으로 배치하여 서비스 간 통신을 제어. Istio를 사용하면 Application 코드의 변경없이 로드밸런싱, 서비스간 인증, 모니터링 등을 적용하여 마이크로 서비스를 쉽게 관리할 수 있다. 마이크로서비스간의 모든 네트워크 통신을 담당하는 프록시인 Envoy를 서비스마다 배포한다음 프록시들의 설정값을 저장하고 관리하는 컨트롤러 역할을 한다. 각각의 마이크로 서비스에 사이드카 형태로 배포된 envoy프록시를 Data Plane이라고하며, Data Plane을 컨트롤하는 부분을 Control Plane이라고 한다. [Istio 구조] Data Plane: 각 서비스에 ..

Kubernetes 2023.01.31

Service Mesh

[개요] Service Mesh 아키텍쳐는 MicroService 아키텍쳐와 더불어 활발하게 언급되고 있는 아키텍쳐이다. 왜 Service Mesh 아키텍쳐가 무엇인지 그리고 왜 활발하게 언급되고있는지, 구현체인 Istio에 대해서도 정리한다. [Service Mesh?] 마이크로서비스 구조를 띄는 시스템의 통신이 Mesh 네트워크의 형태를 띄는 것에 빗대어 Service Mesh로 명명되었다고 한다. 애플리케이션 계층이 아닌 인프라 플랫폼 계층에 특정 모듈을 삽입하여 애플리케이션에 대한 라우팅, 보안 등의 기능을 추가하는 것. 마이크로서비스에서 각 서비스들이 상호 통신을 할 때 코딩수준에서 통신방법을 정의해서 사용하는 방식을 많이 사용하였다. 하지만 통신이 복잡해지기 시작하면 이처럼 직접 구현하는 것이..

Kubernetes 2023.01.31