티스토리 뷰

Leader Election

Leader Election 사용처

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

데이터 흐름도

  • 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을 이용.

Replica를 구축 후 Leader Server가 다운될 경우 alert을 보낸다.

 

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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함