Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Logback
- spring boot
- 완전 탐색
- 게이트웨이
- ZuulFilter
- spring cloud
- 구현
- Java
- 메모이제이션
- 플로이드 와샬
- 다익스트라
- 비트마스킹
- Zuul
- 이분 탐색
- Gradle
- 구간 트리
- 이분 매칭
- 달팽이
- 백트래킹
- 스택
- BFS
- dp
- docker-compose
- 도커
- Spring Cloud Config
- 스프링 시큐리티
- 유레카
- 트리
- 서비스 디스커버리
- 주울
Archives
- Today
- Total
Hello, Freakin world!
[채팅앱] 또 한번의 코드 뒤엎기 본문
아마 내가 자바 nio에서 제공하는 selector를 이용한 논블로킹 방식에 꽂혀있었는지도 모르겠다.
이 방식으로 모든 네트워크 통신을 처리하려고 했으나 한계가 있다는걸 깨달았다.
이전에 ConnectionLoop를 구현할 때 깨달았던 부분과도 관련이 있다.
지금이 selector를 이용한 논블로킹 방식(이벤트 방식)은 데이터를 보내고 그에 대한 응답을 받아야하는 식의
대화형 애플리케이션은 만들 수가 없다. 그 이유는 이벤트를 보내고나서 그 특정 응답을 선별할 수 없기 때문이다.
이를 구현하려면 동기방식을 쓸 수 밖에 없다. (기존의 웹처럼)
동기방식을 쓰더라도 그 작업을 다른 스레드에 위임하면 논블로킹을 구현할 수 있는데,
아마도 Future와 CompletableFuture를 사용하면 될 듯하다.
자바 동시성 api들에 대해 좀 학습하고,
다음 글에서 아키텍처 수정안을 생각해보자
'Toy Project > 채팅 앱 만들기' 카테고리의 다른 글
[채팅앱] ChatRoom 서버 설계 (0) | 2020.03.20 |
---|---|
[채팅앱] ChatRoom 서버가 제공할 API (0) | 2020.03.20 |
[채팅앱][클라이언트] 논블락킹 ConnectionLoop 기능 구현 및 고찰 (0) | 2020.03.11 |
[채팅앱] 클라이언트 서버 통신 - 첫번째 목표 설정 (0) | 2020.03.02 |
[채팅앱][클라이언트] EventHandler 코드 작성하기 (0) | 2020.03.01 |
Comments