논블로킹: 2개의 글
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/bYbyM8/btrC8SQBSJX/J6ROyZ9Nfq19b3tw37jc91/img.png)
동기/비동기 vs 블로킹/논블로킹 Redis를 세션 스토리지로 적용하는 과정에서 Java의 대표적인 Redis client 인 Jedis와 Lettuce 중 Netty 기반의 Redis 클라이언트인 Lettuce를 사용하기로 결정했다. Netty는 비동기 이벤트 기반의 고성능 네트워크 프레임워크인데, 여기서 나온 비동기의 개념을 확실히 짚고 넘어가고자 정리하기로 했다. 동기/비동기 vs 블로킹/논블로킹 동기와 비동기 또는 블로킹과 논블로킹 중 하나를 떠올리면 자연스럽게 나머지 단어들도 떠오르게 된다. 그 이유는 둘의 개념적인 의미가 비슷하기 때문이다. 하지만 실제로 두 개념은 서로 연관관계가 없는 별개의 개념으로 기억해야 한다. 동기/비동기 먼저 동기와 비동기에 대해 알아보자. 동기(synchronous..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/OY7E6/btq2NzGX9ln/Qj3wiBgIC7WMhCxnluOJv0/img.png)
오늘 다루어볼 포스팅 내용은 Netty의 개념과 아키텍쳐에 대한 대략적인 설명이다. Netty에 대해 알아보기 전에 AS-IS 자바의 네트워킹 동작 방식에 대해 먼저 다루어본다. 자바의 네트워킹 순수 자바로 네트워크 통신을 하기위해서 생긴 최초의 라이브러리는 java.net 패키지이다. 해당 소켓 라이브러리가 제공하는 방식은 블로킹 함수만 지원했다. 해당 라이브러리를 이용한 서버코드를 간단히 보면 아래와 같다. public void blockCall() throws IOException { ServerSocket serverSocket = new ServerSocket(8080); Socket clientSocket = serverSocket.accept(); BufferedReader in = new ..