안녕하세요. 채팅서버 구상중에..질문이 있어 글올려봅니다 ㅠ
기존에는
에코서버, Worker 1, Worker 2, Worker N 을 두고
Worker1에서 입장하면 에코서버를 통해 다른 Worker 에도 유저배열에 추가, 하는 형식으로 개발중이였습니다.
( 워커마다 각자 배열들고 에코서버를 통해오는 명령어로 각자의 유저 배열을 관리 )
동기화가 문제가 될꺼같더라구요 ;
그래서
네트워크i/o (유저의 대화를 다른 유저들에게 모두 전송) 가
서버에서 입장, 퇴장 및 코맨드 처리보다 부하가 많다는 가정하에
하나의 서버(에코서버)에서 입장, 퇴장처리를 모두하되 소켓은 Worker에서만 받고
Worker 가 유저한테 온 명령어를 에코서버에 전달하면 명령어 처리후 Worker 들에게 다시 명령(대화내용)을 보내면 Worker 가 들고있는 다른 소켓들에게 모두 명령을 전달해주는
방식을 생각해봤는데....
ps. 아 그리고 입장,퇴장, 코맨드에서는 DB 와 연결이 없으며 단지 object 가지고 노는정도 입니다.
ps2. Worker 는 프로세스고 코어수에 맞춰 상주해있습니다. 유저는 Worker에 랜덤으로 접속됩니다.
어떻게될까요 ..이거 ;