NW-study / system-design-interview

8 stars 0 forks source link

[Volume 2][Chapter 03] Q&A #19

Open kihyun-yang opened 7 months ago

kihyun-yang commented 7 months ago

기현

p87

p94

p98

KKambi commented 7 months ago

기현이형 질문에 대한 생각


100p - 지도 표시에 WebGL 기술을 채택하면?

WebGL

https://developer.mozilla.org/ko/docs/Web/API/WebGL_API 플러그인을 사용하지 않고, 웹 브라우저에서 상호작용 가능한 3D와 2D 그래픽을 표현하기 위한 Javascript API


벡터 vs 래스터

제목 없음

벡터

래스터


Q. keep-alive에 대한 궁금증

  1. keep alive 설정 시각에 따라 다르겠지만, 설정 시 동시 커넥션 수에서 불리해지지 않을까?
  2. 위치 서비스의 경우 스케일 아웃이 어려워보이지 않으니 상관 없을라나?
janeljs commented 7 months ago

p. 108

https://www.pubnub.com/guides/long-polling/ https://medium.com/@pubnub-localized/%EB%A1%B1-%ED%8F%B4%EB%A7%81%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94-abc8f9d1aa36

travelbeeee commented 7 months ago

p.98~99

easyfordev commented 7 months ago

p.84(매우 minor)

p86

나머지

meloncha commented 7 months ago

HTTP keep-alive 옵션

HTTP 1.0

=> 서버는 약 4개의 트랜잭션이 처리될 동안 커넥션을 유지하거나, 3분동안 커넥션을 유지하라.



#### HTTP 1.1 에서는 기본 옵션이 keep-alive. 
  - 필요 없을 경우 Connection : close 헤더 사용 
  - 장점 : 서버의 단일 시간내 TCP연결의 수를 적게해서 자원을 절약할 수 있고 네트워크 혼잡이나, 지연의 경우의 수를 줄일 수 있다. 또한 속도가 빨라진다.
  - 단점 : 서버에 연결된 클라이언트의 TCP연결이 계속해서 늘어나면 서버의 자원이 고갈되어 다른 클라이언트들의 접속에 대처할 수 없는 상황이 발생할 수 있다.
![image](https://github.com/NW-study/system-design-interview/assets/51734158/11e24d39-aa7b-4d63-8f7e-c9ffa714e0c4)

#### HTTP 2.0
  - Multiplexed Streams를 이용해 Connection한 개로 동시에 여러 개의 메시지를 주고 받을 수 있으며 응답은 순서에 상관없이 Stream으로 주고 받는다. 
  - Multiplexing : 단일 connection 내에서 여러 HTTP request /response 를 처리
![image](https://github.com/NW-study/system-design-interview/assets/51734158/0b6a7c74-8fe2-491a-94c2-975740ef50c1)

#### keep-alive default timeout
- nginx : 3분
- apache : 5초

### ETC
- HTTP 프로토콜의 대표적인 특징으로 무상태성(stateless), 비연결성(connectionless) 인데, 왜 HTTP 1.1 부터 keep-alive 옵션이 기본 활성화 되는가?
  - persistent connection 은 HTTP 의 연결이나 내용 자체를 유지하는 것이 아닌 TCP connection dmfh 3-way handshake 를 불필요하게 다시 맺지 않도록 하기 위함.
  - 큰 데이터의 경우 TCP 연결은 유지하되, 각각의 HTTP 메시지는 독립적인 단위로 처리해야 한다!

참고 : 
- https://goodgid.github.io/HTTP-Keep-Alive/
- https://en.wikipedia.org/wiki/HTTP_persistent_connection
- https://en.wikipedia.org/wiki/HTTP/2
zziri commented 7 months ago

이미 대부분 설명을 잘 해주셨네요