다중화
-
분산 환경에서의 장애감지: Gossip Protocol시스템 설계 2022. 8. 28. 17:43
[가상 면접 사례로 배우는 대규모 시스템 설계]를 읽고 작성하는 포스트 입니다. 틀린 내용이 있을 수도 있습니다! 틀린 내용이 있다면 댓글로 달아주시면 감사하겠습니다! 분산 시스템에서는 보통 두 대이상의 서버가 똑같이 한대의 서버에 장애가 발생한 것을 감지해야 해당 서버에 장애가 발생했다고 간주한다. 모든 노드 사이에 멀티캐스팅 채널을 두어, 노드의 장애를 발생할 수 있지만 이는 노드 수가 늘어나면 비효율적이다. 이러한 분산 환경에서 장애를 감지할 때는 gossip protocol을 이용하는 것이 효율적이다. 동작원리 - 각 노드는 멤버쉽 목록을 유지 - 멤버쉽 목록은 멤버 ID와 heartbeat counter 쌍의 목록을 나타냄 - 각 노드는 주기적으로 자신의 heartbeat counter를 증가시..
-
분산 환경에서의 일관성 처리: 정족수 합의시스템 설계 2022. 8. 28. 15:07
[가상 면접 사례로 배우는 대규모 시스템 설계]를 읽고 작성하는 포스트 입니다. 틀린 내용이 있을 수도 있습니다! 틀린 내용이 있다면 댓글로 달아주시면 감사하겠습니다! 다중화된 노드에 데이터를 분산 저장할 때, 정족수 합의 알고리즘을 이용해서 일관성 수준을 조절한다. N = 사본의 갯수 W = 쓰기 연산에 대한 정족수로 쓰기 연산이 성공한 것으로 간주되려면, 적어도 W개의 서버로부터 쓰기 연산이 성공했다는 응답을 받아야 한다. R = 읽기 연산에 대한 정족수로 읽기 연산이 성공한 것으로 간주되려면, 적어도 W개의 서버로부터 읽기 연산이 성공했다는 응답을 받아야 한다. 예시 다음은 N=3일 때 key1을 통해서 val1을 서버에 저장할 때다. 참고로 중재자는 클라이언트와 노드 사이의 Proxy이며, 노드가..
-
대규모 시스템에서 데이터베이스 사용시스템 설계 2022. 7. 24. 23:12
틀린 내용이 있을 수도 있습니다! 틀린 내용이 있다면 댓글로 달아주시면 감사하겠습니다! 대규모 시스템 설계에서 필요한 데이터베이스 사용에 대해 학습한 내용을 정리했다. 어떤 데이터베이스를 사용할 것인가 데이터베이스에는 여러가지 종류가 있지만, 크게 RDBMS와 NoSQL 이 두가지에 대해서 알아본다. 1. RDBMS 자료를 테이블, 행과 열을 통해서 표현한다. 테이블의 관계에 따라 Join이 가능하다. 정규화를 거쳐 데이터 중복 없이 한번만 저장할 수 있다. 스키마로 인해 데이터가 유연하지 못하다. Mysql, Oracle, postgresql, sqlite 2. NoSQL Not only SQL이라는 슬로건에서 생겨난 데이터베이스로 key와 value로 데이터를 관리한다. 관계형 모델을 사용하지 않으며..