728x90

교과서 2

24.04.12 서버 프로그래밍, 백준

게임 서버 프로그래밍 8장. 분산 서버 구조 8.1 수직 확장과 수평 확장 확장성(scalability)이란 사용자 수가 늘어나더라도 쉽게 대응할 수 있어야 한다는 의미다. 최대로 처리할 수 있는 사용자 수가 무제한이여도 가능해야 한다는 것이 확장성 목표이다. 사용자 수가 늘어나도 서버 성능을 유지하려면 보통 다음 두 가지 중 하나를 수행한다. 스케일 업(scale-up) : 수직 확장 스케일 아웃(scale-out) : 수평 확장 수직 확장은 서버의 하드웨어를 더 좋은 것으로 교체하여 처리량을 늘리는 것을 의미한다. 수평 확장은 서버 대수를 늘려서 더 많은 처리를 하는 것이다. 수평 확장이 더 많이 사용되는 방법이지만, 소프트웨어 설계가 더 복잡하다는 대가가 따른다. 또 수평 확장은 수직 확장으로 서버..

게임 서버 프로그래밍 교과서 3장. 소켓 프로그래밍

3장 소켓 프로그래밍 온라인 게임 프로그래밍에서 소켓은 파일 핸들 방식과는 약간 다르다. 게임 서버에서는 다루어야 하는 소켓 개수가 많다. TCP를 이용해서 통신하는 경우 클라이언트 개수만큼 소켓이 있어야 한다. 파일 핸들을 하는 동안 스레드가 대기하는 일이 없어야 한다. 디스크를 읽거나 쓸 때 사용하는 read(), write() 함수는 호출 후 실행이 완료될 때 까지 리턴하지 않는다. 소켓을 이용해서 읽기/쓰기를 하는 함수를 호출 했는데 즉시, 리턴하지 않는다면 이들을 호출한 메인 스레드는 사용자 입장에서 일시정지 하는 것 처럼 보인다. 이러한 이유 때문에 네트워크 프로그래밍에서 소켓은 보통 비동기 입출력(Asynchronous I/O) 상태로 다룬다. 소켓을 비동기 입출력으로 다루는 방식에는 크게는..

728x90