개발하면서
-
Kafka purgatory (1)개발하면서/타인글보면서 2020. 6. 29. 00:18
4. 그래서 Kafka에서는 어떻게 사용되고 있냐? DelayedOperation으로 검색하면 다양한 곳에서 사용하는데(Group Coordinator, Replica Manager, ZkAdminManager 등...) 여기서는 Replica Manager 기준으로 알아본다. broker가 가동되면 Replica manager가 한 개씩 생성되고 Replica Manager에는 역할 별 Purgatory가 존재한다. 이때 Partition을 생성하면 ReplicaManager의 Purgatory를 주입해서 아래 그림의 왼쪽은 파티션을 생성할 때 replicaManager의 Purgatory를 delayedOperations로 만들어 주입하는 코드고 오른쪽은 도식화 한것이다. 아래 그림은 xxxPurga..
-
Kafka purgatory개발하면서/타인글보면서 2020. 6. 20. 19:31
업무 중에 request를 보내면 X초 이후에 실행되는 scheduling repository를 살펴보다가 Kafka purgatory는 어떻게 구현했을지 호기심이 생겨 알아보았다. Confluent 블로그와 hierarchical timing wheels 논문을 쉽게 소개한 블로그, 두 개를 보며 나름대로 정리했다. https://www.confluent.io/blog/apache-kafka-purgatory-hierarchical-timing-wheels/ 1. Purgatory란 무엇이고 Kafka 어디에 사용되나? 네이버 사전에 Purgatory를 검색하면 연옥이라고 나오고 의미는 아래와 같다. 가톨릭 교리에서 연옥은 천국으로 가기에는 자격이 부족하지만 지옥으로 갈 정도의 큰 죄를 짓지 않은 죽은..
-
Kafka의 Sticky Partitioner 살펴보기개발하면서/타인글보면서 2020. 1. 18. 13:55
Kafka Broker(server)에 메시지를 주고받는 client 역할을 하는 Kafka Producer / Consumer 중 Producer의 성능 개선 기능이 있어 살펴보려고 한다. ref url: KIP-480, Apache Kafka Producer improvements Sticky Partitioner[Confluent Blog] Kafka Producer의 메시지 전송 방법 두 부분으로 나뉘어 있다. 사용자 코드에서 send()를 실행하면 토픽, 파티션별 record를 모아 놓는(record batch) Accumulator Accumulator에 쌓인 record batch를 가져와서 Kafka Broker에 전송하는 작업을 쉼 없이 하는 Network thread [2.4 코드를 보..
-
Elasticsearch shard 할당 방식을 정리해보자개발하면서/타인글보면서 2019. 11. 27. 21:13
최근 사내에서 사용하고 있는 Elasticsearch를 별다른 설정 없이 쓰다 보니 종종 인덱스/샤드 관련 문제가 생겨서 shard allocation 관련 학습 필요성이 생겼다. Elasticsearch Shard allocation 공식 문서와 AWS의 shard allocation 문서를 읽고 나름 직역했다. https://www.elastic.co/guide/en/elasticsearch/reference/7.2/modules-cluster.html master 노드의 주 역할은 인덱스의 샤드를 데이터 노드에 (고르게) 분배하고 균형을 위해 샤드를 재분배하는것입니다. 샤드 할당하는 4가지 방법과 꿀팁을 소개합니다. 여기서 소개하는 설정 값은 cluster update settings에 나온 방법으..
-
ES hot-warm, Rollout, Shrink 알아보기개발하면서/타인글보면서 2019. 10. 27. 00:52
회사에서 ES도 다루고 있는데 초반에는 별다른 관리 없이도 문제가 없었는데 인입되는 양이 점점 많아지면서 인덱스 관리가 필요했고, 그때 알아본 키워드가 hot-warm architecture, rollover, shrink 였습니다. 급한 불을 끈 후 위 링크는 에버노트 깊은 곳에 저장하고 있다가... 올해 더 많은 데이터 인입이 계획 되어있어서, 아... 학습 좀 하고 적용해야겠다는 생각에 리서치를 시작했습니다. ES 공식 블로그 문서를 읽고 직역 비스므리한 정리를 하였습니다. ES 공식 블로그 - Hot Warm Architecture https://www.elastic.co/kr/blog/hot-warm-architecture-in-elasticsearch-5-x?fbclid=IwAR0gajLECY..
-
Kafka 스키마 관리, Schema Registry개발하면서/코드보면서 2019. 8. 26. 00:56
Why? Apache Kafka® is a distributed streaming platform. Apache Kafka 페이지에 들어가면 볼드체로 가장 먼저 보이는 문장입니다. 카프카는 메시지 브로커 역할을 굉장히 잘해주는데요 , 주고받는 메시지의 유효성 검사(?)는 하지 않습니다. 보내면 받은 대로 저장하고 달라면 저장된 데이터를 주는 역할만 하죠. Consumer 입장에서는 받은 메시지가 어떤 내용인지 알아야 파싱 하고 적절한 로직을 실행할 텐데 Kafka는 이를 보장하지 않으니 Producer, Consumer 개발하는 쪽에서 서로 약속하고 메시지를 주고받아야 합니다. 그래서 csv, xml, json 같은 데이터 포맷을 적용해서 메시지를 주고받습니다. 하지만 이것도 불안한 점이 있습니다. Pr..