Skip to content

Latest commit

 

History

History
62 lines (56 loc) · 3.58 KB

2020_12.md

File metadata and controls

62 lines (56 loc) · 3.58 KB

2020년 12월

23일 수요일

이벤트의 발행과 구독

SQS(Simple Queue Service)

의미

  • 분산 시스템을 구성할 때 시스템간 메세지를 주고 받을 수 있는 메세지통
  • 전송, 수신, 삭제 3가지 기능을 제공

구조

  • Queue(줄)

    • Queue 안에 message가 들어가 있다.
    • 여러가지용도의 메세지들을 그룹핑하여 관리의 편의성을 도모하기 위해 존재
    • Queue에 Message를 올리는 것: SEND
    • Queue에서 Message를 읽는 것: RECEIVE
      • 이 때, Queue에서 리시브 된 Message는 보이지 않는 상태로 바뀐다.(사용자가 정해놓은 시간까지 - visibility timeout: 기본값 30초 )
        • 만약 삭제되지 않는다면 다른 서버가 동일한 작업을 하게 될 수도 있기 때문에(즉, 분산서버 환경이기 때문에!)
      • 그럼 아예 메시지를 삭제하면 되지 visibility timeout을 설정할까?
        • 메세지를 receive한 서버가 장애가 나서 작업을 처리하지 못하는 경우를 대비
        • 그럼 이 때 메세지는 처리가 되지 않은 상태임!
          • 처리할 경우에는 message를 삭제하지만, 지금은 삭제되지 않았기 떄문에 visibility timeout 이후에 queue에 다시 message가 추가됨
      • 메세지를 수신한 서버가 메세지를 처리하게 되면
        • 해당 큐에 메세지 삭제 요청을 보낸다.
        • 다음 작업을 위해 새로운 큐에 메세지를 추가한다. (SEND)
  • Message

    • polling: 당겨오는 것
      • start polling for message : 해당 큐에 있는 메세지를 가져오겠다! 이런 의미
    • 서버가 정기적으로 큐에 접속해서 큐에 메세지가 있으면 가져오게 되는 것
    • Message Available : 큐로부터 받을 수 있는 메세지 수
    • Message in Filght : 현재 큐에서 보이지는 않지만 다른 서버로부터 처리되고 있는 메세지 수
    • Receice Count : 몇 번이나 리시브가 일어났는지
    • 두 개의 서버가 경합
      • 서버1과 서버2가 하나의 큐에서 폴링하고 있을 떄
      • 서버1이 메세지1을 가져가면 서버2는 visibility timeout동안 볼 수 없음

SNS(Simple Notification Service)

의미

  • 구독중인 Service 또는 사용자(Client)에 메시지 전달, 전송을 조정 및 관리하는 웹서비스 (즉, 알림 서비스)
  • SNS의 구독자는 승인을 해야 정보를 받아볼 수 있다(이메일)

용어

  • 사용자
    • topic을 어떤 pub/sub이 통신할지를 결정하는 정책을 지정하므로써, 주제를 생성하고 액세스를 제어
  • Topic(주제)
    • 각각의 topic은 고유한 이름을 가지므로 publisher는 메시지를 게시하고 subscriber는 알림을 받을 수 있도록 구독할 수 있다.
    • publisher가 게시하는 대상이자 Subscriber가 구독하는 대상

24일 목요일

SQS와 SNS

SNS

  • 분산 발행-구독 시스템
  • 메시지는 게시자가 SNS로 보낼때와 같이 가입자에게 푸쉬됨
  • 이메일, SMS, http엔드포인트, SQS와 같은 여러 엔드 포인트를 지원

SQS

  • 분산 큐잉 시스템
  • 메시지가 수신자에게 푸쉬되지 않음
  • 수신자는 SQS에서 메시지를 폴링해야 함
    • 메시지가 즉시 가입자에게 푸시되는 SNS와는 달리
    • SQS에서 메시지 배달에 약간의 대기 시간을 제공
  • 여러 수신자가 동시에 메시지를 수신할 수 없음
  • 하나의 수신자가 하나의 메시지를 수신하여 처리하고 삭제할 수 있음