blocking / non-blocking
async / sync 방식의 차이
1. blocking sync
작업 수행 -> 대기 -> 결과 반환 -> 다시 작업 진행
2. blocking async
- node js 와 mysql 을 사용하는 경우에 이럴 수 있다.
nodejs 는 async인데 mysql은 blocking 이다.
직접적으로 이렇게 사용하는 모델이 있지는 않다.
blocking이기 때문에 함수 호출 후 대기한다.
콜백 함수를 리턴받고 호출한다.
3. non-blocking sync
작업 수행 -> 함수 호출 -> 바로 콜백 반환 -> 완료 확인 -> 완료 안됨 -> 다시 호출 ->
-> 다른 작업 수행 -> 완료확인 -> 완료 안됨 -> 다시 호출
다른 작업을 수행할 수는 있는데 완료 되었는지 계속 확인하고 다시 호출한다.
4. non-blocking async
작업 수행 -> 결과에 상관없이 다른 작업 수행 -> 완료되면 콜백함수 실행 ->
io 작업에 대해서 다른 작업이 막히지 않는다.
'아키텍처 | 설계' 카테고리의 다른 글
마이크로 서비스 아키텍처 12장 (0) | 2020.06.08 |
---|---|
콘웨이의 법칙과 시스템 설계 / 대규모 마이크로 서비스 - 마이크로 서비스 아키텍처 11장 (0) | 2020.06.08 |
MSA 모니터링 / 장애전파 / 테스트 (0) | 2020.06.07 |
카나리 배포 , 블루그린 배포 (0) | 2020.06.07 |
kafka, rabitmq, sqs 사용시 고려사항 - 마이크로 서비스 아키텍처 (0) | 2020.06.07 |
댓글