System Design. Part09. 웹 크롤러 설계
Part09. 웹 크롤러 설계 URL Frontier 핵심 개념 URL Frontier는 단순한 FIFO 큐가 아닌 크롤링할 URL들을 저장하고 관리하는 우선순위, 예의, 신선도를 모두 고려하는 시스템이다. 1. 우선순위 관리 PageRank, 트래픽, 업데이트 빈도를 종합한 스코어링 신선도 보장: 뉴스 사이트, 소셜 미디어 우선 ...
Part09. 웹 크롤러 설계 URL Frontier 핵심 개념 URL Frontier는 단순한 FIFO 큐가 아닌 크롤링할 URL들을 저장하고 관리하는 우선순위, 예의, 신선도를 모두 고려하는 시스템이다. 1. 우선순위 관리 PageRank, 트래픽, 업데이트 빈도를 종합한 스코어링 신선도 보장: 뉴스 사이트, 소셜 미디어 우선 ...
Part07. 분산 시스템을 위한 유일 ID 생성기 설계 대규모 분산 시스템에서는 수십억 건의 이벤트에 대해 중복 없이 고유한 ID를 빠르게 생성해야 한다. 1. Snowflake린? 이러한 요구사항을 충족하기 위해 등장한 것이 바로 Snowflake 알고리즘이다. Snowflake는 고유성, 시간 순 정렬성, 분산 확장성, 저지연 생성이라는 네...
Part06. 키 값 저장소 설계 분산 키-값 저장소는 대규모 데이터에 대해 확장성, 가용성, 내결함성을 달성하기 위해 다음 요소들을 종합적으로 고려한다. CAP 정리 CAP 정리: 분산 시스템은 데이터 일관성(C), 가용성(A), 파티션 감내(P) 중 세 가지 요구사항을 동시에 만족하는 분산 시스템을 설계하는 것은 불가능하...
Part04. 처리율 제한 장치의 설계 처리율 제한 장치란? API 서버, 웹 서비스 등에서 지나치게 많은 요청이 들어오는 것을 방지하기 위해 일정 시간 동안 허용하는 요청 수를 제한하는 기능이다. 처리율 제한 방식 3가지 비교 구분 🧍 클라이언트 서버 미들웨어(API Gatewa...
사내 스터디에서 PostgreSQL9.6 성능이야기 책을 참고하여 학습 후 정리한 글입니다. Q1. IO 전략 4가지 중 BULK READ는 언제 발생할까? Shared Buffer 크기의 1/4 이상인 테이블에 대해 Seq Scan 시 발생한다. // PostgreSQL의 IO 유형 typedef enum BufferAccessStra...
사내 스터디에서 PostgreSQL9.6 성능이야기 책을 참고하여 학습 후 정리한 글입니다. Shared Buffer 구조 Shared Buffer의 구성 요소 Shared Buffer 를 구성하는 요소는 크게 4가지 (해시 테이블, 해시 테이블에 딸린 해시 엘리먼트, 버퍼 상태를 관리하는 버퍼 디스크립터, 실제 블록을 저장하는 버퍼 풀) 이다. ...
사내 스터디에서 PostgreSQL9.6 성능이야기 책을 참고하여 학습 후 정리한 글입니다. 01. 아키텍처 개요 postgreSQL 의 물리적 구조는 다음과 같다. 참고 : https://severalnines.com/blog/understanding-postgresql-architecture/ Shared Memory Shared Me...
코루틴 코루틴이란 실행의 지연과 재개를 허용함으로써, 비선점적 멀티태스킹을 위한 서브 루틴을 일반화한 컴퓨터 프로그램 구성요소를 뜻한다. 비선점적 멀티태스킹이란? 비선점형 : 하나의 프로세스가 CPU를 할당받으면 종료되기 전까지 다른 프로세스가 CPU를 강제로 차지할 수 없다. 선점형 : 하나의 프로세스가 다른 프로세스 대신에 프로세서(CP...
chapter09. 제네릭스 9.1 제네릭 타입 파라미터 제네릭스를 사용하면 타입 파라미터를 받는 타입을 정의할 수 있다. 제네릭 타입의 인스턴스를 만들려면 타입 파라미터를 구체적인 타입인자로 치환해야 한다. 제네릭 클래스 Box를 정의하는 예시를 통해 알아보자. class Box<T>(val value: T) 여기서 Box 클래...
chapter08. 고차 함수: 파라미터와 반한 값으로 람다 사용 8.1 고차 함수 정의 고차 함수는 다른 함수를 인자로 받거나 함수를 반환하는 함수다. 코틀린에서는 람다나 함수 참조를 사용해 함수를 값으로 표현할 수 있다. 따라서 고차 함수는 람다나 함수 참조를 인자로 넘길 수 있거나 람다나 함수 참조를 반환하는 함수다. 8.1.1 함수 타입 ...