고동시성 환경에서의 AI 요청 비동기 스케줄링 큐
·
ai
요구사항유저의 AI 질의 요청을 순서와 가중치에 따라 데드락 없이 안전하게 큐잉소모시키는 지수 백오프(Exponential Backoff) 기반 스케줄러 알고리즘 작성문제사항멀티스레드 환경(유저 수천 명)에서 AI 질의 요청이 쏟아진다외부 AI API(예: OpenAI, Claude)는 분당 요청 제한(Rate Limit)이 걸려 있다 클라이언트와 서버의 3-way-hanshake을 통해 세션을 맺으면 생성되는 소켓을 Poller events 큐에 넣게 되면 요청에 대한 적절한 처리를 하게 되고 워커 스레드인 http-nio-8080-exec-X 스레드를 통해 Spring Boot의 DispatcherServlet에 접근을 하게 된다. 이때 적절한 컨트롤러를 찾아서 처리를 할텐데 http-nio-8080..
3-Way Handshake 부터 Tomcat을 지나 스프링 부트 시작점 까지
·
spring boot
클라이언트에서 서버와 세션을 맺기 위해서 3-Way Handshake 진행 후 세션을 맺는다 이때 Socket 생성을 한다. 톰켓은 생성된 소켓을 감지하는 Acceptor 클래스가 있다 Runnable 인터페이스를 상속받고 있어 스레드 생성이 가능하다. Acceptor 스레드가 생성된 Socket의 주소를 serverSocketAccept() 매서드를 통해 내부 객체로 변환한다. 이때 2개의 구현체가 있는데 각각 반환 하는 값이 다르고 동작이 추가된다. NioEndpoint는 SocketChannel 반환후 setSocketOptions(..) 실행, 이 메서드 내부에서 NioSocketWrapper로 감싸지게 된 후 poller.register(...) 메서드를 통해 PollerEvent 객체가 Po..