반응형 Delvelopment60 캐시(Cache) Local Cache & Global Cache Cache (캐시) 란? Cache는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래걸리는 경우나 값을 다시 계싼하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간이 없어 더 빠른 속도로 데이터에 접근 가능하다. DBMS의 부하를 줄여주고 성능을 높혀주나, Disk가 DB에 비해 작아 비용이 비싸다. 캐시는 시스템의 효율성을 위해 여러 분야에서 두루 쓰이고 있다. 보통 Spring framework 에서 개발을 진행하면서 Cache는 ehCache와 Redis를 주로 사용한다. Local Cache (ehCache [Heap]) Local 장비 내에서만 사용 되는 캐.. 2021. 3. 11. Redis의 자료형, 특징과 시간복잡도 그리고 클러스터 Redis 레디스(Redis)는 Remote Dictionary Sever의 약자로 Key-Value 구조로 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템(DBMS)이다. 모든 데이터를 메모리로 불러와서 처리하는 메모리 기반 DBMS이다. BSD라이선스를 따른다. Redis는 가장 인기 있는 key-value 저장소이다. 외부층에서 Redis의 데이터 모델은 Key를 Value에 매핑하는 자료구조의 디렉토리 이다. Redis 그리고 기타 구조화된 스토리지 시스템 사이의 주요 차이점 중 하나는 Redis는 스트링뿐만 아니라 자료구조의 추상적 자료형(abstract Data)도 지원을 한다는 점이다. 문자열의 리스트 문자열의 집합 (반복되지 않고 정렬되지 않은 요.. 2021. 3. 10. [Kafka] 같은메시지를 반복적으로 소비했던 리밸런싱 이슈 해결 (MAX POLL RECORDS CONFIG = "max.poll.record 초기 Kafka 운영 중 이상한 이슈에 직면했다. - 현상 kafka의 소비되어 처리된 메시지가 한 번이계속 반복적으로 수행하고 적게는 몇번 많게는 수십번까지 다시 소비하는 현상 이였다. 내 이론상 kafka 메시지는 리스너에서 처리된 후 kafka에 커밋을 치고 offset값을 올려주면서 다음 메시지를 처리한다고 생각했는데... 즉, 다시 말해서 정말 생각지도 못했던 이슈였던 것이다. 원인을 찾고 해당 증상을 면밀히 조사하여, kafka 리스너 셋팅 몇개를 수정하면서 문제를 해결하긴 했지만 초기에 알지 못했으면 큰 이슈로 연결 될뻔 했다. - 원인 Consumer가 메시지를 처리하는 도중 Timeout이 발생했고 그로 인해 파티션 리밸런싱 과정이 일어났다. Consumer는 (MAX_POLL_RECOR.. 2020. 11. 30. [Kafka] Topic 메세지 보관주기 설정 (MSK) AWS 에서 제공하는 MSK 의 다큐먼트먼저 공유한다. https://docs.aws.amazon.com/ko_kr/msk/latest/developerguide/msk-configuration-properties.html 사용자 지정 MSK 구성 - Amazon Managed Streaming for Apache Kafka advertised.listeners 속성은 설정할 수 있지만 listeners 속성은 설정할 수 없습니다. docs.aws.amazon.com 카프카를 운영하면서 메시지를 언제까지 보관해야할지 고민에 빠졌다. 기본값인 1주일 정도를 보관하자니 너무 무거워서 부담이되고. 짧으면 너무 메세지를 짧게 가지고있어서 확인을 못할 것 같고, 라는 고민에 빠졋다. 결국 1~3일 정도가 적당하다.. 2020. 10. 12. [kafka Connect] 주기적으로 수행되는 무거운 쿼리 ALL_OBJECTS (table.poll.interval.ms) Kafka Connect 를 운영하던 중 1분에 몇번씩 아래와 같은 무거운 쿼리가 수행하는 것을 파악할 수 있었다. SELECT NULL AS table_cat, o.owner AS table_schem, o.object_name AS table_name, o.object_type AS table_type, NULL AS remarks FROM all_objects o WHERE o.owner LIKE :1 ESCAPE '/' AND o.object_name LIKE :2 ESCAPE '/' AND o.object_type IN ('xxx', 'TABLE') ORDER BY table_type, table_schem, table_name DB 자원의 큰 리소스를 차지하고 있었고. 해당 쿼리는 DB의 테이.. 2020. 10. 12. MQ (Message queue)란? 사내에서 Kafka 도입에 대한 발표가 있어서.. 정리차 한글자씩 적어보려한다. MQ 란? → Producer, Consumer가 존재하며 Producer는 메시지를 큐에 전송하고 Consumer가 큐의 메시지를 처리하는 방식이다. → MQ를 사용하면 비동기로 요청을 처리하고 queue에 저장하여 consumer에게 병목을 줄여줄 수 있는데 장단점은 존재한다. 왜 쓸까? → 일반적으로 Server-Client 구조에서는 사용자가 요청을 하면 Server에서는 Request에 대한 처리를 한 후 Response 한다. 이런 간단한 구조는 MQ와 같은 미들웨어를 사용할 필요가 없다. → MQ의 종류에도 RabbitMQ, Kafka, ActiveMQ 등 여러가지 MQ들이 존재한다. 각 시스템 목적에 맞춰 사용.. 2020. 8. 21. 이전 1 ··· 3 4 5 6 7 8 9 10 다음 반응형