자바 nio selector 이거 물건입니다.
저같이 시스템 프로그래밍 경험이 없어도 비동기 서버를 손쉽게 만들게 해 주기때문입니다.
그렇지만 클라이언트용 서버 접속 API 는 쉽지 않네요.
비동기 특성을 이용하면 응답을 기다리지 않고 메시지를 보낼 수 있는데 여기에 문제가 발생합니다.
서버 처리 용량을 고려 않고 무조건 응답을 기다리지 않고 메시지를 보내게 되면 서버 자원이 고갈되어 응답을 보낼 수 없게 됩니다.
이것에 대한 해법 무엇이 좋을까요?
그래서 찾은 답이 클라이언트에서 보내는 속도 조절입니다.
그런데 어떻게 속도를 조절하면 좋을까요?
이게 제 고민입니다.
제가 이것을 구현한 방법은 서버로 보낸 메시지들은 '송신 끝난 메시지 큐' 와 '송신중 메시지 큐' 이렇게 2개 큐에 분리하여 저장하고
2개 큐에 저장된 메시지 총 갯수는 최대 갯수 제한을 걸어 제한을 하며
'송신 끝난 메시지 큐' 에 담긴 메시지는 '생존 시간'을 주워 클라이언트 측에서 서버로 메시지를 보내는 속도를 조절하고 있습니다.