본문 바로가기

비동기4

자바의 비동기 처리(feat. 멀티 스래드) 자바의 비동기 처리 이전 포스트에서 비동기 구현에서 발생하는 문제를 해결하기 위해 비동기 처리를 해줘야한다고 했다. 💡 비동기 방식은 A와 B가 서로가 끝났든 안 끝났든 상관 없이 자신의 일을 하므로, A 의 작업 결과를 B에서 요구하는 경우에는 결과가 예상하는 값과 달라지는 등 곤란해질 수 있다. 비동기 처리의 방법 콜백 함수를 사용하여 코드의 흐름을 제한 하거나, 비동기로 작동하는 코드 사이에 동기 함수를 끼워넣어서 코드의 흐름을 조정하는 등의 기법을 이용해 비동기 처리를 구현 한다. 자바에서는 주로 멀티 스레드로 비동기를 구현함으로 멀티스레드에서 발생할수있는 동시성 문제를 해결하는 것이 자바의 비동기 처리의 주 과업이다. 💡 Javascript에서 callback뿐만이 아니라 Promise , as.. 2022. 5. 26.
동기 vs 비동기 동기 vs 비동기 https://www.youtube.com/watch?v=U42qWURR6Gw 동기란? 쉽게 설명해서 일련의 순서나 규칙을 가지고 동작하는 것을 말한다. 다른 함수를 호출했을때 해당 함수가 종료될때까지 기존 함수는 동작을 멈추고 대기한다. 비동기란? 기다리지 않고 호출 후에도 자신의 작업을 수행한다. 다른 함수를 호출했을때 해당 함수가 종료될때까지 기다리지 않고 기존 함수는 자신의 다음 동작을 수행한다. 이후, 호출한 함수가 작업이 완료되면 callback을 통해 처리한다. 비동기의 문제점 //case1 funcA(){ funcB(); int a = 1; print(a+2); } //case2 funcA(){ int a = funcB(); print(a); //funcB의 응답값을 이용.. 2022. 5. 25.
[트래픽 핸들링] Blocking, Non-blocking, Sync, Async I/O가 뭘까?(Feat. IBM 논란) [트래픽 핸들링] Blocking, Non-blocking, Sync, Async I/O가 뭘까?(Feat. IBM 논란) 프로젝트가 배포단계에 들어서면서 다음 단계로 시야를 돌려야 할 타이밍이 왔다. 운영단계를 공부할 때가 온것같다. 그래서 트래픽을 핸들링하는 방법들에 대해서 나름 조사하고 공부해 볼까한다. 내 프로젝트는 딱히 많은 트래픽이 몰리는 서비스는 아니지만 머신러닝작업도 보유하고있어서 서버 자체가 처리에 사용할 리소스가 많은 편이라 트래픽이 몰리는 상황엔 위험할수있다. 그래서 쉐도우 복싱 느낌이 있지만 대용량 트래픽을 대비해 어떤 노력을 해야하는지 알아보고자 한다. 때문에 지금 서버들이 어떤 방법으로 서버의 I/O를 핸들링 하고있는지 정리해볼것이다. 서버의 I/O는 서버로 오는 요청, 요청의 .. 2022. 3. 16.
Node.js 특징 노드 js 다양한 모듈(클래스)를 지원한다 module == node.js에서 사용하는 객체화를 위한 클래스 개념 //mpart.js var M = { v:'v', f:function(){ console.log(this.v); } } module.exports = M; //위 모듈(클래스를) 외부파일에서 사용할수있도록 한다. //use.js var part = require('./mpart.js'); //현재 디랙토리에 잇는 mpart.js의 모듈을 불러온다. part.f(); //모듈사용 pm2 비정상종료시 감시하고있다가 바로 재실행시켜주는 등 node.js 관리를 위한 보조 프로그램 비동기 설계 모듈 지원 JS는 싱글 스레드이다. CPU 갯수와 상관없이 main threa.. 2021. 11. 15.