일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 적두트리
- OpenVidu
- 13459
- 풀이
- 메모리계층
- 백준
- WebRTC란
- tfjs
- ESP32
- Vite 사용 이유
- stl
- 구슬탈출
- 자료구조
- mediastream
- 페이지교체알고리즘
- LOLIN D32
- c++
- TDD
- 백준 2133
- 테스트주도개발
- dp
- 2623
- TDD란?
- REACT
- 3XN 타일링
- RBT
- 구현
- 1796
- 데이터 링크 계층
- 9996
- Today
- Total
그냥 블로그
[디자인 패턴] Publisher - Subscriber vs Observer 패턴 본문
- 데드락 ( 교착 상태 ) 해결 방법 기억 안나서 공부!
- 이벤트 리스너, 이벤트 루프, JS 단일 스레드 (JS 및 NODE의 동작 과정)
발행-구독(Publisheer-Subscriber) 중재자 패턴 (Mediator Pattern)
발행-구독(영어 : Publish-Subscribe) 디자인 패턴은 소프트웨어 아키텍처 패턴의 하나로, 메시지 발행 컴포넌트(발행자)와 메시지 수신 컴포넌트(구독자) 사이 결합도를 낮추기 위해 사용된다. 비동기 메시징 패러다임
-> 바로 연결된게 아니기 때문에 ~~
이 패턴의 핵심은 발행자가 메시지를 누구에게 구독자는 어떤 발행자로부터 메시지를 받는지 알 필요가 없다는 데 있다. 즉, 발행자와 구독자 사이에 직접적인 연결 고리가 없어, 시스템의 유연성과 확장성을 향상시킨다.
=> Publisher는 중재자에게 정보를 전달하고, 중재자는 Subscriber 정보를 보고 적합하면 보내주는 방식이다.
- pub이 sub의 선언 위치나 존재를 알 필요가 없다.
- sub 역시 pub의 선언 위치나 존재를 알 필요가 없다.
- 중재자랑만 잘 연결되어 있으면 되는 것 ㅇㅇ
메시지 큐
대용량 데이터 처리를 위한 배치 작업이나 채팅 서비스 비동기 데이터 처리등에 이용
프로세스나 프로그램 인스턴스*가 데이터 상호 교환 시 사용하는 통신 방법
*인스턴스 : 일반적인 실행 중인 임의의 프로세스, 클래스의 현재 생성된 오브젝트
객체 ( 오브젝트 ) 의 인스턴스는 데이터베이스나 SGA, 백그라운드 프로세스 프로세스 등 광범위한 컴퓨터 시스템 자원의 접근에 할당된 물리 메모리의 일부를 가르킨다.
응용 프로그램 (application) 을 메모리에 띄운 것 => 하나의 프로세스라고 보인다.
객체 지향 프로그래밍(OOP)에서 인스턴스(instance)는 해당 클래스의 구조로 컴퓨터 저장공간에서 할당된 실체를 의미한다. 여기서 클래스는 속성과 행위로 구성된 일종의 설계도
=> 내가 아는 인스턴스
계산 문제를 '입력과 출력이 명확히 기술된 것'으로 수학적으로 정의할 때, 계산 문제의 입력이 될 수 있는 것은 무한히 많이 존재하고 그것들 하나하나를 해당 계산 문제의 인스턴스라고 부른다.
=> OOP에서는 객체, 운영체제 관점에서는 프로세스인듯.
*메시지 지향 미들웨어(MOM)를 구현한 시스템을 의미한다.
*MOM : 비동기 메시지를 사용하는 응용 프로그램 간 데이터 송수신.
- 비동기 : 큐에 넣어서 나중에 처리 가능
- 비동조 : 앱과 분리 가능
- 탄력성 : 일부 실패가 전체에 영향 X
- 과잉 : 실패할 경우 재실행 가능
- 보증 : 작업 처리 확인 가능
- 확장성 : 다수 프로세스들이 큐에 메시지 보내기 가능
- '큐' 이기 때문에 사용자가 많아지거나 데이터 요청이 많아지면 응답이 늦어짐.
- 과도한 트래픽이 몰리면 대기 시간 지연으로 서비스 망가질수도...
어디서 씀? 메시지 큐는 왜 나옴 ?
메시지 큐는 하나의 큐를 갖고 listen하는 구독자들한테 나눠주기 때문에 a구독자가 가져가면 b 구독자는 받아볼 수 없지만, pub-sub은 boradcasting의 형태를 갖는ㄷㅅ?
딱 단체문자 개인문자
=> 이거 Publisher들이 문자를 보내면, 서버에 쌓이는건 메시지큐에 메인 스레드가 쌓고, 문자를 어디로 보낼지는 스레드를 이용해서 병렬로 처리해서 되게 빠르게 되는 것 같음.
자료는 아쉽게도 없고... 지피티랑 티키타카하면서 정리했다... 아닐수도 ㅋ;;;
PUB-SUB 패턴 사용처
- 스트림 처리 및 데이터 통합
- 모니터링, 알람, 로깅
- 인증 및 IAM (? )
- API
- 트리거, 알림, 웹훅 : 웹훅에 대한 HHTP POST 요청으로 푸시 기반 메시지 전송 제공.
- 조정
- Integration Connectors(미리보기)
옵저버 패턴 (Observer Pattern)
인스턴스 / 프로세스 / 쓰레드 ??? 🙄
인스턴스 일반적으로 실행 중인 임의의 프로세스, 클래스의 현재 생성된 오브젝트를 가르킨다. 객체 ( 오브젝트 ) 의 인스턴스는 데이터베이스나 SGA, 백그라운드 프로세스 프로세스 등 광범위한
soobindeveloper8.tistory.com
발행-구독 패턴(Publisher-Subscriber Pattern)이란?
이전 글 옵저버 패턴(Observer Pattern)이란? 옵저버 패턴 옵저버 패턴은, 옵저버들의 목록을 객체(관찰하려는 대상)에 등록하여 객체가 상태 변화가 있을 때 마다 메서드 등을 통해 객체가 직접 목록
gobae.tistory.com
Pub/Sub: 안정성 소개 | Pub/Sub Documentation | Google Cloud
의견 보내기 Pub/Sub: 안정성 소개 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 가이드에서는 Pub/Sub 안정성 기능을 이해하고 전체적으로 파악할 수 있습
cloud.google.com
https://jh-yoon.tistory.com/14
Pub-Sub vs. Message Queues
1. 개요 본 포스트에서는 "메시지 큐"와 "Pub/Sub"을 살펴보겠습니다. 이들은 2개 이상의 서비스가 서로 통신하기 위해 분산된 시스템에서 사용되는 일반적인 패턴입니다. 2. 메시지 큐 메시지 큐는
jh-yoon.tistory.com