일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- spring
- Vmalert
- springboot
- Brooklin
- ProjectLoom
- consumer
- VictoriaMetrics
- JVM
- 비동기
- Mirror
- Zookeeper
- JDK
- java
- Rebalance
- swagger
- Reactive
- Vmagent
- Reassign
- restdocs
- kafka
- raft
- NoClassDefFoundError
- broker
- tsdb
- ExecutableJar
- webflux
- OFFSET
- API문서
- OpenJDK
- Today
- Total
목록 분류 전체보기 (33)
거북이 developer
최근에 흥미로웠던 LinkedIn 에서 Brooklin 을 활용한 Mirror Maker 를 소개하고자 한다. 현재 Kafka Cluster 간 Message 를 Mirroring 하는 방법은 다양하다. 대표적으로 Mirror Maker 라는 오픈소스가 있고(이건 v2 가 release 되었다), Kafka Connector 나 오늘 소개할 Brooklin, 그리고 직접 Consumer 와 Producer 를 구현해서 만들수도 있다. 필자가 Kafka Mirroring 과 관련된 모든 오픈소스를 확인해본건 아니지만, 적어도 위에서 언급한 방법들에 대해서만 한정하자면 모두 공통적으로 Source Cluster 에서 message 를 Consuming 하고, 이를 Target Cluster 로 Publish..
Project Loom 이란? Project Loom 은 Java 의 동시성 처리 개선을 위해 Ron Pressler(Quasar 라는 Java 경량 스레드 라이브러리 개발자)가 제안하여 2017년에 시작된 프로젝트다. 최근에 완성도 높은 형태의 얼리 엑세스 빌드가 제공되어 올해 정식 릴리즈가 되지 않을까 하는 기대감이 생겼다. Project Loom 의 동기 🗽 하나의 서버에서 수백만개의 소켓을 다룰 수 있지만, OS 스레드를 직접 사용하는 Java 에서는 동시에 수천개 이상의 요청을 효율적으로 다루기 어렵다. 즉, 현재 Java 의 스레드는 자원 사용면에서 효율적이지 못하다. 비동기 관련 API 들이 나왔지만 사용하기 어렵고 디버깅이 쉽지 않아 유지보수에 좋지 않다. Project Loom 의 목표 ..
InfluxDB Line Protocol 기본적으로 VictoriaMetrics 를 실행하면 8428 포트로 운영이 되고, 해당 포트에 InfluxDB Line Protocol 형식으로 data 요청이 가능하다. 만약 InfluxDB Line Protocol 을 받을 포트를 변경하고 싶다면, -influxListenAddr 옵션을 통해 변경할 수 있다. /path/to/victoria-metrics-prod -influxListenAddr=:8428 VictoriaMetrics 는 InfluxDB Data 를 받으면 이를 Prometheus 데이터 포인트로 변환을 한다. 아래와 같은 InfluxDB Data 를 보낸다고 가정하면 foo,tag1=value1,tag2=value2 field1=12,fiel..
개요 Go-fasthttp 개발자가 만든 Prometheus 호환 TSDB 특징 PromQL 을 하위호환하는 MetricsQL 지원 InfluxDB, Graphite, Prometheus 등 다양한 Metric Input 지원 간단한 아키텍쳐 Gorilla Compression 을 통한 효율적인 storage 활용 Line Use Case 존재 설계 철학 KISS(Keep It Simple, Stupid) 단순한 아키텍쳐 지향 - shared nothing 외부 의존성 최소화 최소한의 자동화 지원하지 않는 것들 클러스터 자동 resizing 자동 노드 discovering data rebalancing Architecture Gorilla Compression Facebook 에서 Time Series ..
1. Zookeeper 구축 1) Zookeeper 설치 https://archive.apache.org/dist/zookeeper/ 경로에서 원하는 버전의 zookeeper 를 다운받는다. 다운받은 zookeeper 압축파일을 원하는 경로에 해제한다. 2) Zookeeper 설정 zookeeper configuration 을 참고하여 zookeeper 설정 파일을 정의한다. cluster 로 구축해야하므로 설정파일에 zookeeper 로 구축할 각 서버정보를 아래와 같이 정의한다. server.{zookeeper-1.serverId}={zookeeper-host1}:{follower-port}:{leader-election-port} server.{zookeeper-2.serverId}={zookeep..
필요한 상황 Consumer 에 이슈가 발생해서 특정 시점으로 offset 을 돌려서 다시 읽고 싶어요. 지금까지 읽었던 메세지를 다시 읽게 하고 싶을 경우? 사전 확인 사항 - offset 을 어디까지로 reset 할지 확인 특정 offset 으로 reset 을 하고 싶다면 Consumer 에서 남긴 로그를 통해 각 파티션별 reset 하고자 하는 offset 값을 알아야 한다. 특정 시점으로 reset 을 하고 싶다면 reset 하고자 하는 시점을 'yyyy-MM-ddTHH:mm:SS.sss' 포맷으로 정의한다. - 경우에 따라 메세지 처리가 중복으로 발생할 수 있는데 이때 이슈가 없는지 확인한다. 이슈가 없다면 상관없지만 이슈가 있을 경우 Consumer 로직에서 중복처리를 하지 않도록 수정작업이 ..
필요한 상황 신규 broker 장비 추가 broker 장비 이전 특정 토픽을 특정 노드에서만 운영하고 싶을 때 실행 방법 kafka bin 디렉토리 하위에 있는 kafka-reassign-partitions.sh 스크립트를 사용 이동시킬 topic 이 무엇인지 json 포맷으로 정의 예) example-to-move.json {"topics":[{"topic": "example1"},{"topic": "example2"},{"topic": "example3"}],"version":1} --topics-to-move-json-file 옵션으로 위에서 생성한 json 파일을 지정하고, --generate 옵션을 통해 이동시킬 broker 에 대한 파티션 설정값을 자동으로 생성 $ bin/kafka-reass..
내용 정리 Kafka Broker 로그에 간혹가다 아래와 같은 ERROR 로그가 발생한다. ERROR [ReplicaManager broker=23] Error processing append operation on partition test-8 (kafka.server.ReplicaManager) org.apache.kafka.common.errors.OutOfOrderSequenceException: Invalid sequence number for new epoch: 3 (request epoch), 4 (seq. number) ERROR [ReplicaManager broker=22] Error processing append operation on partition test-55 (kafka.s..