[Chapter 10] 비동기 논블로킹과 커넥션 풀 #148
-
Q1P.646에 10.3시작 부분에 있는 말에 근데 Lettuce라는 라이브러리에 대해서 설명하는 거라 전자가 맞는 것 같은데 |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
저도 @BvrPark 님께서 말씀하신대로 레디스가 싱글스레드 이므로 커넥션 풀이 필요없는 것도 맞는 말 같습니다. 그런데 위 문구만 보고 생각을 해보면 그런데 lettuce는 Netty 프레임 워크를 포함하고 있어 비동기 논블로킹으로 구현되어 있어 커넥션을 맺는대 있어서 톰캣과 같은 동기 블로킹 방식보다 훨씬 빠르게 가능하여 굳이 커넥션풀을 사용할 필요 없는 것이 아닐까 생각합니다. 결국 통합적인 이유가 아닌가 생각합니다. |
Beta Was this translation helpful? Give feedback.
-
Lettuce 에서 이런 이슈가 있었는데, 같이 참고하면 좋을 것 같습니다. |
Beta Was this translation helpful? Give feedback.
저도
Lettuce는 내부에 Netty 프레임 워크를 포함하고 있어 비동기 논블로킹으로 구현되어 있다. 그래서 스프링 애플리케이션과 레디스 사이에 커넥션 풀이 필요 없다.
의미를 고민해보았는데요@BvrPark 님께서 말씀하신대로 레디스가 싱글스레드 이므로 커넥션 풀이 필요없는 것도 맞는 말 같습니다.
다중 커넥션을 맺는다 하여도 결국 단일 커넥션에 비해서 성능이 좋을까? 라는 생각이 들어서요
그런데 위 문구만 보고 생각을 해보면
커넥션 풀은 MYSQL 연결을 하면서 학습했듯 매번 요청마다 커넥션을 맺고 끊는 행위가 매우 비효율적이고 느려서 미리 커넥션을 연결한 상태를 유지하고 필요할때 해당 커넥션을 사용하여 비효율적인 문제를 해결한 방식입니다.
그런데 lettuce는 Netty 프레임 워크를 포함하고 있어 비동기 논블로킹으로 구현되어 있어 커넥션을 맺는대 있어서 톰캣과 같은 동기 블로킹 방식보다 훨씬 빠르게 가능하여 굳이 커넥션풀을 사용할 필요 없는 것이 아닐까 생각합니다.
(여러 스레드에서 DB와의 연결을 할려고 할때 블로킹이면 하나의 스레드가 DB와 커넥션 맺는 동안 기다려야 하므로...)
결국 통합적인 이유가 아닌가 생각합니다.