들어가기 전이 글은 HTTP/2 in action 4장을 읽으며 공부한 글입니다. 4.1 HTTP/1.2가 아니라 HTTP/2인 이유바이너리 프로토콜 (프레임 기반으로 메세지를 주고 받음)동기적이 아니라 다중화 (한 커넥션에서 여러 스트림을 보낼 수 있음) 흐름 제어 (TCP 수준이 아니라 HTTP/2 수준)스트림 우선순위화헤더 압축 (HTTP/1.1까지는 헤더압축 없음) 서버 푸시HTTP/2는 HTTP/1.x 프로토콜의 성능을 개선하기 위해 만들어진 프로토콜이고, 위 개선점이 존재한다. 일반 개발자들은 개발함에 있어서 HTTP/2, HTTP/1.x를 구분할 필요는 없다. HTTP/2 역시 GET, POST 같은 메서드를 사용해 요청하고 200, 300 같은 응답 코드를 받는 방식으로 동작하기 때문이다...
https://armeria.dev/docs/server-annotated-service/#parameter-injection Annotated services — Armeria documentationAnnotated services Visit armeria-examples to find a fully working example. Armeria provides a way to write an HTTP service using annotations. It helps a user make his or her code simple and easy to understand. A user is able to run an HTTP service by fe…armeria.dev https://github.com/..
들어가기 전 이 글은 핵심 이론부터 프로그래밍 실습까지 분산 컴퓨팅을 읽고 정리한 글입니다. 몇몇 참고 글도 있습니다. 요약 분산 시스템의 스냅샷은 프로세스 / 채널 State가 모두 포함됨. 분산 시스템의 스냅샷을 챈디 - 램포트 알고리즘을 통해서 작성할 수 있음. 챈디 - 램포트 알고리즘은 마커를 이용해서 채널의 State를 정확히 기록함. 10.1 단체 메세징 어플리케이션 문제 10.2 벡터 시계 10.3 전역 스냅샷 분산 시스템에서 특정 시점의 상태를 잘 보존해둔다면 분산 시스템 운영에 많은 도움이 될 수 있다. 예를 들어 장애가 발생해서 분산 시스템을 전체 재기동 해야하는 경우, 해당 시점의 상태로 돌아가는데 사용할 수 있기 때문이다. 분산 시스템에서 상태 보존의 대상이 되는 것은 크게 두 가지..
들어가기 전 이 글은 핵심 이론부터 프로그래밍 실습까지 분산 컴퓨팅을 읽고 정리한 글입니다. 몇몇 참고 글도 있습니다. 요약 분산 시스템의 참여자들은 시간 동기화가 되어야 하는 경우가 많음. 분산 시스템에서 시간 동기화가 이루어지지 않는다면, Data Inconsistency가 발생할 수 있음. 분산 시스템의 완전한 시간 동기화는 '절대적 시간' 기준으로는 달성하기 어려움. 분산 시스템의 시간 동기화는 '램포트 시계'를 기준으로 '논리적 시간'으로 동기화 할 수 있음. 시간 동기화가 되지 않아 발생하는 Data Inconsistency는 램포트 시계를 포함한 프로토콜로 해결할 수 있지만, 적절한 프로토콜이 수립되어야 의미가 있음. 3.1 이중화 된 데이터베이스 문제 분산 시스템에서 시간 동기화를 알아보기..
들어가기 전 이 글은 핵심 이론부터 프로그래밍 실습까지 분산 컴퓨팅을 읽고 정리한 글입니다. 핵심 요약 2.1 계좌 이체 문제 A → B로 1,000원을 이체하는 경우를 고려해보자. 이를 위해서는 다음 두 가지 동작이 원자적으로 일어나야 한다. A 계좌에서 1,000원 감소. B 계좌에서 1,000원 증가 A, B가 서로 직접 소통하는 경우에는 이 작업은 원자적으로 이루어지지 않거나, 평생 아무런 일도 발생하지 않을 것이다. A → B : B 계좌 1,000원 증액 요청 B → A : B 계좌 1,000원 확인 응답 A → B : 메세지 2번의 확인 응답 ... 먼저 메세지 1번에 대해 B가 적절히 응답하지 못하는 경우, A는 자신의 계좌에서 1,000원 감소시킬 수 없다. 만약 그렇게 한다면 A의 계좌..