일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ChannelPipeline
- spring cloud
- vue.js
- grafana
- KAFKA
- spring boot redis
- docker-compose
- cassandra
- Airflow
- jmeter
- Docker Compose
- netflix oss
- WebLogic
- docker compose mysql
- Spring Open Feign
- argo cd
- Selenium
- weblogic 10
- MySQL
- docker
- RabbitMQ
- JPA
- spring boot
- Redis Sentinel
- coalesce
- mybatis
- Netty
- Hibernate
- QueryDSL
- redis
- Today
- Total
목록전체 글 (404)
IT.FARMER
kafka partitioner 란? (producer, consumer) 카프카에는 파티셔너에서 선택할수있는 몇 가지 전략이 존재한다. 이는 파티셔너에서 파니션으로 데이터를 분배해주게 되는데, 이때 어떤 방식으로 파티션에 분배할지에 대한 선택이다. 먼저 프로듀서가 무엇인지 부터 알아보자. 카프카의 프로듀서란 ? 카프카에서 프로듀서란 데이터를 생성해서 카프카 클러스터에 데이터를 보내어 큐에 쌓게 하는 역활을 한다. 프로듀셔는 카프카로 데이터를 전송할때 내부적으로 직렬화 → 분할→ 압축 단계를 거처 Accumulator 공간에 쌓여 있다가 Batch 형태로 브로커에 전송된다. 전체 적인 그림으로 보면 다음과같다. ProducerRecode 라는 클레스로 프로듀서를 만들어 send() 메세지를 보내면 첫째 ..
kafka ack mode 란? 카프카에는 ack 모드라는것이 있다. acknowledgment의 약어이다. (어렵다..) 이 ack 모드는 메세지를 성공적으로 처리했는지 kafka 에게 알리는 방식을 말한다. 방식에는 다음과 같이 세가지 방식이 있다. ack=0, ack=1, ack=all 이 모드들은 메세지의 송수신방식에 대한 설정이다. kafka는 메세지의 송신과 수신을 보장하기 위해 Producer 가 메세지를 송신할때 Broker가 메세지를 수신하고, Consumer가 Broker 에서 메세지를 수신할때까지 기다리는 방식을 사용한다. 쉽게 말해 ack mode란 ? Producer가 kafka의 broker 로 메세지를 보내게 되는데, producer 가 보낸 메세지를 kafka가 잘 받았는가?..
Message Queue, serial process(직렬처리구조) 프로듀서에서 발행한 A,B,C 데이터들을 컨슈머에서 하나씩 데이터를 가져와 (FIFO : first in first out) 순차적으로 처리 한다. Message queue, Parallel(병렬처리 기법 ) 하나의 큐에 여러개의 컨슈머가 할당되어 있는 경우엔 순차적메세지를 가져와 각자 독립적으로 처리가 가능하다. 빠르게 데이터를 소비 하며 시간을 줄일수있다. 확장에 용이 하다. Message Queue , multi consumer(다중컨슈머)Pub/Sub 프로듀서에서 발행한 데이터를 , 여러 컨슈머에서 동시에 받아 볼수있다. 채팅이나, 알림에 사용 할 수 있다. 하나의 메세지를 여러 컨슈머가 동시에 처리하는 것을 말한다.
큐를사용하고 공부하다보면 여러가지 큐가 있다는 사실을 안다. kafka, redis queue,rabbit mq, active mq…. 하지만 이큐들이 어떤 메커니즘으로 어떤 철학을 가지고 생성되었는지 까지는 알지 못했다. 그래서 어느순간 궁금하긴했다. 이 제품들의 차이점이 말이다. 기본적인 차이점들은 대부분 알고들있다. AMPQ 프로토콜을 지원한다. 단순 메모리 큐다, TCP 통신을 이용함으로 대용량에 적합하다. 이렇게는 알고있지만 브로커에대해선 아직 생소하다. 그래서 한번 찾아보기 시작했고 이에대해 정리를 해보았다. 메세지큐에는 여러가지 큐들이 있다. 카프카, 레빗엠큐, 엑티브엠큐, 레디스큐까지 다양하다. 헌데 우린 이 메세지큐들이 좋다는걸 알지만 어떤차이점이 있고 언제 어떻게 적절하게 사용하여야 하..
docker kafka 보안 설정 카프카사용시 네트워크 정책이나, 보안설정을 하지 않으면 다른곳에서 컨슈머 서버를 기동시 토픽에 들어간 데이터가 어디서 빠져나가는지 확인 할 수 없다. 이때문에 접근제어 컨트롤를 할 수 있도록 셋팅해주어야 한다. 간단하게 먼저 PLAIN SASL 인증 을 사용하여 server.properties 에서 설정을 할수있다. 더강력한 보안을 위해 PLAIN SALS, SSL/TLS 을 사용 할수 있다. 그렇다고 SALS , SSL/TLS 꼭 사용하여야만 하는것은 아니다. PLAIN SALS, SSL/TLS 사용하지 않고도 다음설정으로 외부 접근을 컨트롤 할 수있다. listener.name.plain.authz.allowlist=192.168.1.1,localhost author..
gradle nexus 연동 사전에 nexus 에 release 저장소와 snapshots 저장소를 만들어 둔 상태에서 gralde 에 nexus를 연동하기 위해 저장소 설정을 추가 한다. gradle v6 이하 (7이상은 ) 여기를 참조 nexus 3.16 이상 //////////////////////////////////////////////////////////////////////////////////////////////// // 전체 프로젝트에 적용될 설정 //////////////////////////////////////////////////////////////////////////////////////////////// allprojects { def nexusUrl = 'http://..
gradle nexus repository upload, maven-publish 연동방법 gradle 에서 6.0까지만 plug-in 으로 maven (apply maven)을 지원하고 v7 부터는 지원하지 않아 maven-publish 를 사용하게 되었다. 사실 기존 방식이 조금더 직관적이었다고 생각이 든다. 셋팅도 좀더 편하고 말이다. 하지만 maven-publish 를 사용하면 사용할수있는 기능이 좀더 많다고 생각이 든다. Maven 게시 플러그인 (gradle.org)
오류- Lock wait timeout exceeded; try restarting transaction db에서 갑자기 락이발생했다고 하며 업데이트하는 쿼리가 타임아웃이발생하며 다음과 같은 오류가 발생했다. Lock wait timeout exceeded; try restarting transaction 검색을 해보니 정말 다양한 이유에 의해 락이 발생하는 것을 확인했고, 상황에 따라 다르게 해결해야 했다. 우리가 겪은 부분은 delete 와 insert,update 에대한 트렌젝션 처리기 한곳에 묶여있기 때문이었다. 삭제를 하고나서 트렉젝션으로 묶었으니 락이걸렸고 , 새로운 트렉젝션으로 업데으트를 하려니 업데이트나, 인설트를 하지 못해서 해당 오류가 나고있었다. 코드는 다음과 같다. AClass { ..
kafka patitioning 과 replication, ack ISR 의 관계 우리는 카프카를 사용하며 고가용성이다, 안정적이다는 이야기를 하며 사용한다. 어떤부분에 있어서 고가용성과 안정적인 부분이 있는지 알아보자. 카프카를 설치하고 토픽을 생성하며 우리는 replication 갯수, 그리고 partition 의 갯수를 정의하게 된다. 이때 replication 과 partation의 의미를 알아보자. replication-factor 3 --partitions 3 우리는 토픽을 생성하며 보통 이렇게 옵션을 넣는다. replication-factor 3 복제 본수에 대한 3벌 --partitions 3 파티션 3개 위에 설명 그대로 토픽 생성시 파티션 3개를 생성하고 , 토픽에 메세지가 오면 다른 ..