2022. 12. 10. 15:47ㆍ카테고리 없음
Synchronous Programming
:여러 작업(tsek)들을 순차적으로 실행하도록 개발
ASynchronous Programming
:여러 작업을 독립적으로 실행하는 프로그래밍 방법론
멀티코어: 쓰레드 많이 만들면 , 컨텍스트 스위칭에 비용이 많이 들고, 레이스 컨디션을 발생 시킬 수 있다.
싱글 스레드: I/O작업하고 다른일 할수 있다, CPU작업과 I/O 작업은 동시에 할 수 있기에 non-block 이면 싱글스레드 라도 여러작업 처리가 가능하다.
<I/O관점>
1)
Synchronous I/O = block I/O
aSynchronous I/O = non-block I/O
2)
Synchronous I/O: 요청자가 I/O완료 까지 챙겨야 할때
aSynchronous I/O:완료를 os가 noti주거나 callback으로 처리 할때
:만약 c에서 응답 불능 상태에 빠지면 B 혹은 A 가 영향을 받아 서비스 전체 장애가 발생한다.
:A는 B에서 이벤트 전달시 Message Q라는 버퍼를 통해서 전달하기에 따로 기다리지 않고 작업을 해도된다.
B또한 마찬가지로 C가 관심있는 이벤트가 발생시 Message Q를 통해 전달하기에 각자 작업을 할수 있도록
독립적으로 실행이 되어 , C에 문제가 발생하더라도 전체적인 큰 문제가 되지는 않는다. 이런식으로
event만 전달하는 방식에서는 Message Q 방식이 안전하고 효율적이지만 , 바로 바로 A가 B에게 API를
호출받고 결과값을 받아야 하는 그런 상황에서는 Message Q방식은 느리다.