kafka
-
Slack에서 Kafka 운영/관리 하는 방법개발하면서/타인글보면서 2023. 6. 4. 11:41
트위터에서 Slack uses Kafka at Scale라는 제목을 시작으로 Slack에서 카프카를 왜 썼고 어느정도 규모인지 얘기하는 thread가 있어 정리해 봤다. https://twitter.com/BdKozlovski/status/1661700334157430784 트위터에서 즐기는 Stanislav Kozlovski “Slack uses Apache Kafka at scale: - 6.5Gbps - 700TB of data - 100s of nodes Here's their story 👇” twitter.com 네트워크 망은 6.5 Gbps를 사용하고 700TB 데이터, 100개 이상의 서버 노드가 존재한다. 1. 2016년에 큐 시스템으로 Redis를 사용 서비스 Web App들이 Redis..
-
Uber에서 Kafka consumer 모니터링 하는 방법개발하면서/타인글보면서 2021. 10. 25. 22:46
"Kafka consumer monitoring"하면 어떤 게 떠오르나요? __consumer_offsets 토픽, lag, autocommit, consumer rebalance, Burrow ※ Burrow에 정리한 dol9 글 https://dol9.tistory.com/272 https://dol9.tistory.com/273 현재 우버는 대부분의 서비스에서 Kafka를 사용 중인데 Kafka consumer 모니터링을 위해 자체 개발한 얘기가 소개된게 있어 정리해보았습니다. ※ 규모의 경제로 여차하면 자체 개발하는 것 같다. -_-;; 자체 개발 -> 오픈 소스 -> 기술 회사 창업? ㅋㅋㅋ 그리고 정리하다보니 __consumer_offsets 토픽 데이터뿐만 아니라 어떠한 이유로 내려간 con..
-
Uber에서 Kafka를 MSA 큐로 사용하기 위해 고려한 것들개발하면서/타인글보면서 2021. 9. 19. 16:47
Kafka를 ETL이 아니라 서비스에 적용했다는 사례가 종종 들린다. 마지막 commit 이후 처리가 완료된 message가 연속적으로 있을 때 offset commit 돼야 하고 exactly-once, 그리고 consumer group 중 한 개 consumer만 재시작돼도 rebalance가 일어나면서 처리가 멈춰서 개인적으로 서비스에 Kafka를 도입에 부정적이다. 차라리 RabbitMQ처럼 온전히 Queue 목적으로 만들어진 제품을 쓰는 게 여러모로 좋다고 생각했다. 이런 나를 비웃듯이 우버에서 Kafka를 서비스에 어떻게 적용하는지 소개했다. 크흐~~~ https://eng.uber.com/kafka-async-queuing-with-consumer-proxy/ 결론부터 말하면 Kafka Co..
-
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 코드를 보..
-
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..
-
Kafka Consumer Lag 모니터링, Burrow를 알아보자 (2)개발하면서/코드보면서 2019. 8. 21. 01:09
이전 포스트에서 Burrow의 기본 구조와 Consumer group list 관리가 어떻게 되고 있는지 알아보았습니다. 이번에는 Burrow의 모듈 중 storage, evaluator를 알아보겠습니다. storage는 Burrow에서 수집하는 데이터(Topic/Consumer 정보) 저장/조회 역할을 담당하고 있습니다. evaluator는 Consumer Offset/Lag을 지켜보면서 Consumer Group의 상태를 판단하는 역할을 합니다. Topic/Partition 상태를 판단해서 가장 안 좋은(?) 상태가 Consumer Group의 상태가 됩니다. storage storage는 카프카의 topic, offset, consumer offset 정보를 저장/조회 역할을 하는 모듈입니다. Bu..