본문 바로가기

728x90
반응형
개발 55

CAP 정리와 PACELC 정리 CAP 정리 CAP 정리는 C (Consistency/일관성), A (Availability/가용성), P(Partition tolerance/분할 용인)의 약자로, 이 세 가지 조건을 모두 만족하는 분할 컴퓨팅 시스템(Distributed System)이 존재하지 않음을 나타내는 이론입니다. 다른 말로는 CAP 정의, CAP theorem, Brewer's theorem이 있습니다. 이 이론의 조건들에 대해서 먼저 짚고 넘어가겠습니다. 조건 설명 Consistency (일관성) 모든 노드는 동일한 데이터를 바라볼 수 있어야 합니다.  즉, 모든 읽기에 대해서 모든 DB의 노드들이 항상 동일한 데이터를 가지고 있어야 합니다. Availability (가용성) 모든 요청은 성공 혹은 실패라는 정상적인 응.. 2022. 8. 10.
[HBase] Online Region Merge와 Empty Region Merge에 대해 Intro 운영하는 서비스에서 HBase 테이블의 column family에 ttl을 세팅하여 사용하고 있습니다. ttl을 걸어두게 되면, Hbase는 ttl(만료 시간)에 도달한 row를 삭제합니다. 참고로 HBase에서는 Delete 연산을 하더라도 바로 삭제되지는 않습니다. 'tombstone marker'를 사용해서 Scan/Get과 같은 조회연산에서 반영되지 않도록 하고, 실제로 삭제되는 시점은 Major Compaction 때 삭제됩니다. 이는 ttl을 설정한 row에도 적용이 됩니다. 갑자기 ttl이 왜나오냐 의문을 가지실 수 있는데요. 제가 운영하는 테이블의 rowkey는 timestamp가 포함된 형태고 1개의 column family를 사용하는데 ttl을 7일로 설정해두었습니다. (멍청.. 2022. 6. 30.
[Redis] Redis Cluster의 기초 Redis 6/21 Redis HA Design - Seninel vs Cluster Redis Cluster를 사용하는 이유 Redis는 다양한 Client들에 대한 요청을 동시에, 빠르게 처리해야 한다. Redis는 In-Memory 데이터 스토어기 때문에 물리적인 경합이 없음. 근데 왜 Redis에 장애가 날까? event loop 방식으로 처리가 되어있음 -> 병렬로 동작하지 않고 main thread에서 event loop 방식으로 순차적으로 처리가 되고 있음 -> Redis는 Mulitp Process나 Tread가 아닌 Single Thread에서 요청들을 순차적으로 선행으로 실행 (Event loop 처리) -> 메모리에서 처리되는 빠른 업무로 단일처리로써 문맥교환없이 빠르게 처리하기 위해.. 2022. 6. 21.
Machine Learning 개념 인공지능, 데이터 마이닝, 머신러닝, 딥러닝의 차이점 인공지능, 데이터 마이닝, 머신러닝, 딥러닝의 차이점 오늘은 AI와 관련해서 작성해보고자 합니다. 처음 AI를 접하게 되면, 비슷해보이는 개념에 다른 용어들이 마구 나오는 것을 볼 수 있습니다. 대표적으로 데이터 마이닝 (Data mining), 머신러닝(ML), dalsacoo-log.tistory.com 머신러닝의 분류 Supervised Statistical Learning (지도 · 감독 학습) Input을 기반으로 Output(정답/Response)을 예측하거나 추정하는 기법입니다. 레이블링된(Output이 적혀있는) 훈련 데이터를 학습하여 모델을 만들고, 레이블링이 되지 않은 테스트 데이터를 모델에 적용하여 입력된 데이터에 대해서 맞는 답을.. 2022. 6. 16.
[Spring] library dependency version이 바뀌는 이슈 해결 Intro 스프링 프로젝트에서 0.9버전의 old kafka 라이브러리(kafka_2.10:0.9.0.0)를 사용할 일이 있었는데요. 해당 라이브러리와 의존관계가 있는 kafka-client 버전이 로컬에서 0.9에서 2.3.1로 변경되는 것을 확인했습니다. 문제는 2.3.1 version이 붙어서 잘 되면 상관없지만... old kafka와 kafka 2.x의 인터페이스가 많이 바뀌었다보니 특정 메서드를 찾지 못하는 에러가 발생했습니다. 사실 단순히 0.9버전의 kafka-client lib의 디펜던시를 받아서 사용하면 문제는 해결되었는데요. 저의 경우엔 관련해서 프로젝트를 뒤져봐도 2.3.1버전의 kafka-client dependency를 추가하지 않았는데 2.3.1버전으로 잡히는 것이 이상하여 좀.. 2022. 4. 12.
필수 개발환경 세팅 Jetbrain toolbox, IntelliJ GitKraken Docker Lens Atom Postman JDK8 (for apple silicon) https://inma.tistory.com/157 nvm https://cotak.tistory.com/156?category=456808 yarn https://classic.yarnpkg.com/lang/en/docs/install/#mac-stable host 세팅 sudo vim /etc/hosts sudo dscacheutil -flushcache [Java] jenv 설치 및 사용법 (MacOS 여러 Java 버전 설치) 안녕하세요. 이번 포스팅에서는 MacOS에서 여러 Java 버전을 설치하는 방법을 알아봅니다. Python에 pyenv.. 2022. 2. 3.
728x90
반응형