티스토리 뷰
Leader Election
Leader Election 사용처
- Subscription(구독) 시스템
- ex)Netflix, Youtube premium, Notion, Watcha, etc...
- 유저별 구독 날짜는 payment system에 중요한 데이터지만, payment system 자체가 새로운 비즈니스이므로 직접 구축하지 않는다.
- ex) Shopify, paypal, Kakao pay, etc...
- 유저들의 구독을 처리하는 방법
- Leader server는 주기적으로 DB에 payment가 필요한 user list를 요청
- DB에서는 요청에 대한 응답을 Leader server에 반환
- Leader server는 응답받은 user list를 Third Party에서 payment를 진행하도록 User list 전송
- Third party에서 Pay가 발생
- 발생한 Pay내용을 Leader server에 전송
- Leader server는 해당 내용에 대한 업데이트를 DB에 요청
- 해당 내용에 대한 업데이트

- Server down 문제 존재
- 만약 3번 또는 5번에서 server down이 발생한 경우 DB가 업데이트 되지 않는 문제가 생긴다.
- Leader Election시스템을 이용하여 이를 방지 한다.
- Leader Election은 Replica를 구축해놓고 Leader server와 replica server는 지속적으로 commuication이 이루어지며, Leader server에서 down이 발생할 경우 replica server들에 alert을 발생시킨다.
- Leader server의 down이 발생하면 replica server중 하나의 server가 Leader server의 역할을 위임받는다.
- 여기서 Leader server와 replica server의 지속적인 communication은 Consensus Algorithm을 이용.

Peer to Peer - P2P
- System design과 Large scale system에서 필요한 P2P
- Constraint
- 한곳에서 대용량 파일을 전송하는 상황 (5GB파일을 전송하는 상황)
- DB개수 1000개
- Server가 감당할 수 있는 속도(throughput) : 40Gps -> 5GB/1sec (초당 5GB 전송가능)
- 한곳에서 1000번 전송을 해야되는 상황이고 1000초가 걸리며 약 17분이 소요되며 이는 너무 긴 시간이다.

- 위의 문제를 해결하기 위해 P2P시스템을 이용할 수 있다.
- 5GB를 Device 개수만큼 나눈다. => 5GB/1000 = 5MB의 시간이 걸린다.

- 각 Device마다 어떤 segment를 가지고 있는지 확인해야 한다.
- Peer selection(Peer discovery)
- Central DB : 전체 Device에 대한 모든 Hash map을 가지고 있다, 어떤 segment가 어디서 받았는지에 대한 정보를 가지고 있다.
- Gassip protocol(혹은 Epidemic protocol)
- 한 노드는 다른 노드에 gossip message를 전송한다. (push gossip)
- 전달받아서 infected상태가 된 노드도 똑같이 행동한다.
- Hash table을 사용한다. => DHT(Distributed Hash Table)
Polling

- client는 setting된 interval마다 server에 request를 보낸다.
- Polling이 감당할 수 있는 request보다 더 많은 부하를 감당하기 위해 Streaming 시스템이 있다.
Streaming
- client는 server에 요청없이 listening만 할 수 있다.
- server는 client에 데이터 전달이 제대로 되지 않는 경우를 고려하지 않는다.
- ex) socket, websocket등이 있다.

- Client의 한번의 요청으로 Server와 Client는 연결고리가 생기며, 이때부터 Server에서 Client로 일방적으로 데이터 전송을 시작한다.
- socket의 역할은 client에서 write read가 가능한 locally file이 생성되도록 한다.
- 주로 실시간 데이터를 다룬다.
- 대표적으로 코인 시세와 매도/매수를 다루는 거래소, 영상 Streaming 서비스를 지원하는 Netflix, Twitch등이 있다.
- 기존에 정리한 Websocket에 대한 포스트이다.
https://kmj24.tistory.com/153?category=932366
Web Socket, 웹 소켓
웹 소켓이란? - 웹 표준 프로토콜 중 하나이다. - 웹 페이지의 한계에서 벗어나 실시간으로 상호작용 하는 웹 서비스를 만드는 표준 기술 이다. - Chrome, Safari, Firefox, Opera등의 브라우저에서 사
kmj24.tistory.com
'시스템 디자인' 카테고리의 다른 글
시스템 디자인 8주차 (0) | 2021.09.09 |
---|---|
시스템 디자인 7주차 (0) | 2021.08.30 |
시스템 디자인 5주차 (0) | 2021.08.13 |
시스템 디자인 4주차 (0) | 2021.07.31 |
시스템 디자인 3주차 (0) | 2021.07.21 |