본문 바로가기
728x90

AMQP10

Redis 동작 원리 & data structure & Back up! 1. Redis 는 어떻게 동작할까? : Redis 핵심 서버 엔진은 단일 쓰레드, 논블로킹 이벤트 루프로 동작 ( 클라이언트 요청 → 이벤트 루프 → 명령 실행 → 응답 하는 구조임) - 이벤트 루프란? 1) 클라이언트가 요청을 보냄 → 소켓 이벤트 감지 2) 이벤트 루프가 해당 명령을 싱글 스레드에서 바로 실행 (대부분의 명령은 메모리 연산이므로 바로 처리 가능) 3) 처리 결과를 바로 클라이언트 소켓에 기록 (별도 스레드 없이도 논블로킹 소켓 사용 가능) 4) 이벤트 루프는 다음 이벤트(클라이언트 요청, 타이머, 내부 이벤트 등)로 넘어감 "이러한 구조때문에 rua script 를 최소화 해서 사용.. 2025. 8. 14.
Kafka DLT 활용해서 재시도 처리 /w Spring Kafka 내에서는 message 처리에 실패한 message 를 저장하는 별도의 topic 이 있다.= DLT 처리 실패한 message 를 Kafka with spring 기능을 활용해서 자동 retry 를 설정할 수 있다. 이는 Transactional outout pattern 의 동작원리와는 다른 구성이다. DLT 의 경우 Kafka 자체의 message 전달 실패에만 사용이가능하다.하나의 예로, consumer 에서 토픽을 받자말자 error 를 return 하게 되면 kafka 는 이를 오류로 인식하고 message 전달의 실패로 간주하게 된다. 하지만 consumer 전달은 잘 받고 consumer 에 연결된 서비스 로직을 수행중에 오류가 나게되면, DLT 로 message 가 저장되지 않.. 2025. 5. 5.
Redis Cluster 설명 앞써 블로그에서는 docker file 기반의 redis를 어떻게 띄우는지를 설명했었다.하지만 실무에서는 이렇게 단일 redis 서버하나 띄워놓고 운용하기에는 리스크가 너무 크다.가장 큰 리스크는 서버 하나가 유일한데 그게 뻗어버리면?관련된 서비스가 마비될 것이다. 따라서, 원활한 서비스를 위해서는 2가지 중 하나를 선택해야 하는데 그중 하나가 Sentinel 이고 다른 하나가 Cluster 구성이다. 1. Sentinel - HA 지원, Master & Slave 의 Replica 구성 가능 - 과반수의 투표체계를 사용하기 때문에 홀수개의 redis를 구성해야한다.(그중 하나가 Master 나머지 두개가 Slave) - Sentinel 구성을 위해서는 기존 redis 와 별도의 추가 구.. 2025. 4. 21.
Valkey 란 무엇일까? valkey 는 redis 와 (거의) 같은거다!!무슨 말일까? Redis 가 라이센스 정책을 오픈 소스를 탈출? 하는것(https://redis.io/blog/redis-adopts-dual-source-available-licensing/)으로 결정 함에 따라 BSD 오픈소스 인 Valkey 에 관심이 쏠리는 것이다. Valkey은 Redis version 7.2.4을 folk 떠서 만든 것이고, redis 와 동일하게 in memory 저장소를 사용하며, caching, MQ, rua script, redis 가 지원하는 자료구조를 동일하게 지원한다. [공식 사이트]https://valkey.io/ ValkeyValkey is an open source (BSD) high-performance ke.. 2025. 3. 7.
KRaft 사용하여 Kafka 컨테이너 띄우기 1. KRaft 란?    : Kafka 의 기존 외부 의존성을 제거하고 Kafka 자체적으로 metadata 를 관리하기 위해 개발 됨     (기존에는 ZooKeeper 서버에 접속하여 관리하는 구조로써, ZooKeeper 를 대신하여 사용)  2. 왜 사용해야 할까?KRaft는 2021년 아파치 Kafka 2.8 버전과 같이 공개되었으며, Apache Kafka 3.7 버전이 Zookeeper 모드를 지원하는 마지막 버전이고, 이후 Kafka 4.0 버전의 경우는 KRaft 모드로만 사용 가능 3. 사용방법     : KRaft 모드를 사용하려면 주키퍼가 필요 없으며, 대신 Kafka의 자체 메타데이터 관리와 컨트롤러가 처리 4. Quorum     : 분산 시스템에서 결정을 내리거나 작업을 수행하.. 2025. 3. 7.
카프카는 어떻게 빠른 속도를 보이는 것인가? ( Kafka Buffer Pool ) 카프카는 어떻게 빠른 속도를 보이는 것인가? 디스크 기반의 저장소를 사용하는 카프카는 메모리 기반의 저장소를 사용하는 레디스보다도 더 좋은 성능을 보인다.(memory 처리속도와 SSD 처리속도는 아래의 그림을 참고하면 된다.) 요약하면 "120 나노 세컨드"와 "50~150의 마이크로 세컨드"의 차이다. (어마어마한 차이인 것이다.) 그럼 카프카는 어떻게 memory 기반의 redis를 MQ로써 사용할 때 보다 더 빠른 성능을 보이는 것인가?그건 바로 저장소는 disk 기반으로 작동하지만, disk 에 저장하기전에 memory buffer pool에 batch 형식을 기반으로 동작한다는 것이다. Producer 에서 메시지 이벤트를 발생시켜, 카프카 브로커로 전달될 때 로직레벨에서 이를 바로 디스크.. 2025. 2. 21.
redis dockerfile 로 local에서 띄우기 현업에서 개발을 하다보면, redis 를 사용해야할 시기가 찾아온다.왜 redis를 써야되는지에 대한 리뷰는 차차 다뤄보도록 하고, 지금은 redis docker file 을 local 에서 어떻게 띄우고 실행시켜 보는지에 대해 간단하게 다뤄보도록 하겠다. 우선 도커파일의 구성은 아래와 같아. #docker fileFROM redis:7.2.5-alpine3.20EXPOSE 6379CMD ["redis-server"] 티스토리에 yaml 이 보이질 않아, 어쩔수없이 java 코드로 표기하긴 했지만 파일명의 확장자는 yaml 이다.  간단하게 코드 내용을 보면, redis 7.2.5 에 대한 이미지를 불러다가(불러올때는 경량화 버전인 alpine 을 쓰도록 하자),6379포트로 사용하겠다라는 의미이다. d.. 2024. 11. 1.
Kafka 세팅 시 참고할 만한 내용정리 1. 카프카의 기본 구성     - Zookeeper       : 카프카의 정상동작을 보장하기 위해 메타데이터를 관리하는 코디네이션(Broker의 Health Check 포함)     - Producer       : message 생산자     - Kafka Broker       : kafka 설치 서버     - Consumer       : message 소비자     - Partition       : 병렬처리를 위해 하나의 토픽을 분산 처리     - Topic       : Data 저장소     - Offset        : message 가 저장되는 위치(읽어오는 순서에 영향. FIFO) 1-1. Kafka 내 토픽 생성    - kafka-topics.sh 명령어를 이용하면 됨(Ka.. 2024. 10. 1.
Kafka 세팅 docker compose yaml Kafka 를 세팅하는 방법에는 여러가지가 있다. 1. on premise 로 직접 설치 2. docker 로 하나씩 띄우기 3. docker compose 로 한번에 띄우기  4. K8S 내 yaml 로 띄우기 5. K8S 내 kustomise 로 띠우기 6. K8S 내 helm 으로 직접 설치하기 이글에서는 다양한 방법중 docker compose 를 이용하여 local 환경에서 가볍게 세팅하는 방법에 대해 알아보겠다.우선 docker compose 를 사용하기 위한 설치는 필수!!(brew setting 은 필수!!(mac 기준이다.)brew install cask docker 설치한 다음 docker -v 와docker-compose -v 명령어를 실행하여 제대로 설치가 되었는지 확인해보자! 이미.. 2024. 9. 12.
redis 어디까지 써봤나? feat. Goddis 이번 블로그는 redis에 대해 다뤄보려한다. redis를 현업에서도 많이 사용중일텐데 과연 어디까지 써봤을까?에 대한 주제이다. ◎ 먼저 redis 의 기본 기능에 대해...(자료구조와 주요 기능 측면)더보기키-값 저장소: Redis는 키와 값의 쌍을 저장합니다. 값은 문자열, 리스트, 셋, 해시, 정렬된 셋 등 다양한 형식이 가능문자열 (String): 가장 간단한 데이터 형식으로, 텍스트나 숫자를 저장리스트 (List): 문자열 값의 순서가 있는 리스트를 저장셋 (Set): 중복되지 않는 문자열 값을 저장정렬된 셋 (Sorted Set): 값에 Score를 매겨 정렬된 상태로 저장할 수 있는 자료구조해시 (Hash): 필드와 값의 쌍을 저장하는 데이터 구조비트맵 (Bitmap): 비트 단위로 데이터.. 2024. 8. 28.
728x90