파일전송시 IOCP vs FTP
글쓴이: musalhk / 작성시간: 금, 2012/03/23 - 3:43오전
안녕하세요
파일 전송시 IOCP가 좋을지 FTP가 좋을지 궁금해서 여쭤봅니다.
현재 시스템은 동시접속해서 동영상을 다운 받는 것이 20명도 채 안될 것 같은데 아니 10명도 안될 것 같습니다.
그런데 향후 시스템을 더 확장할 떄는 동시 접속 30명이상은 되어서 접속해서 동영상을 보내주어야 합니다.
그렇다면 IOCP로 파일전송을 하는 게 효율적일지 FTP로 스레드를 여러개 만들어서 보내주는 게 좋은가요?
IOCP는 short메시지를 동시접속자에게 보내는 것이 유리하다고 하는데 틀린말 아닌가요?
궁금합니다. 고수님들 부탁드려요.
Forums:
별차이 없을것 같습니다.
동영상의 크기가 얼마인지는 모르겠으나.. 디스크에서 파일을 읽는 것이 주라면..
그냥 ftp로 사용하여도 성능에 차이가 없을 것입니다. 파일 입출력에서 렉이 걸릴테니까요..
IOCP의 P는 Protocol이 아니라
IOCP의 P는 Protocol이 아니라 Port입니다.
HTTP와 FTP같은 응용 레벨 프로토콜끼리 비교를 하셔야지, IOCP와 FTP는 아무런 상관이 없습니다.(비교 대상이 아닙니다)
프로토콜이라는 것은 알고 있습니다. 제가 여쭤보고
프로토콜이라는 것은 알고 있습니다.
제가 여쭤보고 싶은 것은 동영상 전송에 상황을 설명해드렸고
거기에 맞춰서 FTP를 이용해서 전송하는 것이 상황에 최적화일지, 아니면 IOCP서버를 구현하여 하는 것이 최적일지 물어 본 것입니다.
실제 IOCP는 비동기 오버랩I/O로 요청이 오면 주고 받고 하는 것이 비동기적으로 일어나기 때문에
파일전송에 무리가 없는지 여쭤본겁니다.
...
어떤 방식을 택하든 무리는 없습니다.
앞에 답변에도 있지만...
IOCP 는 소켓 멀티플렉싱의 한가지 방법일 뿐이며...
일반적으로 Windows 플랫폼에서 가장 우수한 방식입니다.
가장 우수한 방식인데 무리가 있다면 다른 방식이어도 문제가 되겠죠.
그리고... FTP 를 이용할 수 있다면 그냥 FTP 이용하세요.
괜시리 고생스럽게 IOCP 를 이용해서 다시 개발할 이유가 없겠죠.
어차피 동시 접속자가 많지도 않은데 직접 개발하더라도
IOCP 보다는 1소켓,1쓰레드 방식으로 개발하는게 속편할 껍니다.
IOCP 가 좋은건 동접자가 엄청나게 많아지더라도 다른 방식에 비해 성능 저하가 적다는 점입니다.
>> 거기에 맞춰서 FTP를 이용해서 전송하는 것이
>> 거기에 맞춰서 FTP를 이용해서 전송하는 것이 상황에 최적화일지, 아니면 IOCP서버를 구현하여 하는 것이 최적일지 물어 본 것입니다.
IOCP를 이용하여 FTP를 구현할수도 있고,
IOCP를 이용하지 않고, FTP를 구현할수 있습니다.
윗분이 말씀하셨듯이, FTP와 IOCP는 비교 대상이 아닙니다.
IOCP는 IO의 다중화를 위한 도구 일뿐이며
프로토콜을 뭘 이용하던, 가령 FTP, HTTP, SMB/CIFS, SFTP 등등을 이용하던 뭘 하든
IOCP를 이용하여 구현할수도 있고, select()/poll()을 이용하여 구현할수도 있습니다.
===============
행여나
이미 만들어든, (누군가 이미 구현해 놓은, 하지만 그것마저도 그 누군가가 IOCP를 이용하여 구현해놨을지도 모르는)
FTP서버를 이용하는것과,
본인이 직접 IOCP로 파일서버를 구현하는것이랑 비교하여 뭐가 나은지 궁금한것이라면
문장의 표현이 상당히 잘못된 것입니다.
FTP vs IOCP
가 아니라
누군가가 이미 만들어놓은것 vs 본인이 직접 구현하는것
입니다.
감사합니다
상세한 답변들을 보고 깨우쳤네요
프로토콜과 구현방법에 대한것을 제가 말하고 있었네요..
프로토콜은 굳이 표준을 써도 되고 안써도 되는 것을 왜 제가 잘못 생각하고 있었던 거지요. 바보같네요.
멀티스레드를 쓸 것인가, IOCP를 쓸 것인가 이렇게 말을 해어야됐네요.
감사합니다^^ 많이 배우고 갑니다.
또 딴지가 될지는 모르겠으나...
IOCP는 내부에서 이미 쓰레드를 사용하고 있습니다.
FTP 역시 IOCP로 구현할 수 있습니다.
사족인 것 같지만 IOCP는 구현 방법의 하나이기 때문에 FTP 프로토콜을 IOCP로 구현이 가능합니다.
댓글 달기