서버에서 다중 클라이언트들 데이터 수신
글쓴이: ydh1220 / 작성시간: 수, 2015/10/14 - 8:33오후
일반적으로 서버에서 다수의 클라이언트들이 전송하는 데이터들을 수신하기 위해서 어떤 구조가 응용되는지 궁금합니다.
한 클라이언트당 초당 5메가씩의 데이터를 10개의 클라이언트가 보내기만 해도 초당 50MB 인데..
데이터를 초기 수신해서 포워딩해주는 서버 컴퓨터 한 대가 이걸 실시간으로 다 처리가 가능한가요?
제가 구현하려는 서버는 빅데이터까지 다루는 서버는 아니지만 최대 10개 정도의 클라이언트가 보내는 데이터는 수신해야 되는데,
여기서 데이터를 수신하는 기능은 어떤 기술이 일반적으로 응용이 될까요?
IOCP같은 경우는 단순히 수신 처리하는 모듈을 쓰레드로 나눈다고만 알고 있는데... 이 구조를 응용해야 할까요?
선배님들의 답변을 간절히 구합니다...!
Forums:
아무도 답변이 없네요. ㅇ_ㅇ;;
저도 궁금하네요.
최선을 다해보세요!
혼자 하기 힘들면. 여럿이 같이 해보세요.
그보다. http://kldp.org/node/153530 밑에 게시글을 보니. 뭔가 만드는 대화가 오고가고 있네요. ㅇ_ㅇ;; 코딩으로 만들면서 아는 방법도 좋죠.
일반적으로 서버에서 다수의 클라이언트들이 전송하는 데이터들을 수신하기 위해서 어떤 구조가 응용되는지 궁금합니다.
- 기가 네트워크 + 램디스크 + 서버용 컴퓨터? + 웹서버 연결? 나스장비? 스위치 허브? 공유기?
한 클라이언트당 초당 5메가씩의 데이터를 10개의 클라이언트가 보내기만 해도 초당 50MB 인데..
- 기가인터넷망 사업자를 찾거나... 중계서버 그리드'를 만들어도 될거 같네요.
데이터를 초기 수신해서 포워딩해주는 서버 컴퓨터 한 대가 이걸 실시간으로 다 처리가 가능한가요?
- 아주 좋으면 되겠죠... ㅇ_ㅇ;; KAIST 그린 컴퓨터 PC방도 있구요.
제가 구현하려는 서버는 빅데이터까지 다루는 서버는 아니지만 최대 10개 정도의 클라이언트가 보내는 데이터는 수신해야 되는데,
- 기가 망은 가능할겁니다. ㅇ_ㅇ;; 해봐야 알겠죠.
여기서 데이터를 수신하는 기능은 어떤 기술이 일반적으로 응용이 될까요?
- 전문가에게 문의해보세요.
램디스크'나 하드 RAID'나 NAS장비'나 SSD'등을 사용하면. 잘 될거 같은데요. ㅇ_ㅇ?
IOCP같은 경우는 단순히 수신 처리하는 모듈을 쓰레드로 나눈다고만 알고 있는데... 이 구조를 응용해야 할까요?
- 전문가에게 문의해보세요.
네트워크 뿐만 아니라. 하드와 같은 파일에도 효율적이라고 합니다. 코드프로젝트와 구글등도 예제가 있습니다.
I/O Overlapped
WSASend / writev
Ex 붙는 함수도 많구요.
Half Open/ Close
어떤 분 블로그를 보면. 점유율이 낮게 만들었다고 하네요. ㅇ_ㅇ;;
접속과 해지가 많은경우. Close 는 어려우니. 지우지 않고 덮어쓰는것이 성능에 좋았습니다.
데이터 전송 자체는 fwrite() 로도 빠를겁니다.
이미 기가망이 구축되었다는건. 매우 효율적인 기술이 적용되었다고 생각됩니다. 1기가를 1MB로 변환하는 네트워크 장비가 있거나요?? ㅇ_ㅇ??
그냥 무식하게 던지면서. 인체 실험을 할지도 모르죠... 이미 완료 되었거나요...
일본은 이미 10년전에 기가인터넷망을 사용했다고 합니다.
일본 통신 통일 규격
http://terms.naver.com/entry.nhn?docId=856562&cid=42346&categoryId=42346
스마트 PC 사랑
http://navercast.naver.com/magazine_contents.nhn?rid=2864&contents_id=92826
망 분리 미니 PC
http://dicagallery.com/220370346093
옥션 필리핀 진출
http://gun6000.blog.me/40039099504
시리얼포트 패러럴포트 RGB S-VGA DVI HDMI HDCP(DRM) 고화질 모니터 전송기술
만든다고 치면...
-2.
이미지를 보내지 않고. 인덱스 hash 값만 통신으로 비교 처리.
모든 이미지 중복을 Lookup table (인덱스)로 미리 만들어서 공유.
비트맵이 클라이언트에서 만들어지는거죠. ㅇ_ㅇ;; 이건 GPU 부담이 될지도 모릅니다. 아니면. 이미지 전용 중계서버를 만들어도 되죠.
-1.
클라이언트를 서버로 구현. ㅇ_ㅇ;;
반대로 구현해버리면. 걱정이 없어지죠? 서버가 10대가 되버리네요?
중복 데이터 제거
합치기 기능 구현
오라클. MySQL. Cubrid 어마어마한 DB업체가 준비되어있겠죠. ㅇ_ㅇ??
0.
코드 정리
모듈 정리
교수님께 문의
학원. 전문대. 직업학교. 카페. 동아리. 기업. 가게등에 문의
세미나. 축제. 컨퍼런스 참석.
1.
P2P 로 하면. 편하겠죠. ㅇ_ㅇ?
컴퓨터를 여러대로?
슈퍼컴퓨터를 사용해도 되겠죠? 임대하거나...
게임 서비스업체에 문의해도 되구요.
PC방에도 제휴문의해보세요.
2.
R 언어는 이미 연산된 어마어마한 결과값을 사용할 수 있다고 합니다.
빠르게 압축 인덱스 값을 생성할 수 있을지도 모릅니다.
3.
압축 이미지 사용
압축 알고리즘 사용
프로토콜 확인
4.
하드웨어 사용
업체에 문의 확인
5.
협력사 제휴
6.
영상처리. 윈도우. 압축. 알고리즘. 책 참고
7.
오픈소스 참고
오픈강의 OLC Center 참고
코드 프로젝트. 코드구루 참고
8.
디바이스 드라이버 연구
소프트웨어 프로그램 연구
9. 각종 SDK를 활용
DirectX. OpenGL. OpenCV. OpenMAX 등을 활용.
DirectShow. Codec. FFMPEG...
DirectX MipMap(밉맵)
한국 ARIA 알고리즘
LZH
ARJ
7ZIP
Intel SDK
Platform SDK
WINCE SDK
NVIDIA SDK
ATI AMD SDK
VDI 원격 컴퓨팅
VirtualBox
DosBox
Shader Programming
Flash : Pixel Blender Toolkit - Shader
Flash ActionScript
Flex P2P Communication
10. 구글 크롬 오픈소스 사용
이미 검증된 크롬 소스를 사용 (OpenAPI) 등등...
//이미 성공한 시스템을 채용하거나...
- 동영상 강의 사이트
- 방송사
- 케이블방송
- IPTV
- 정부 열린 정보 OpenAPI
- 네이버 OpenAPI
- 구글 OpenAPI
- 아마존 AWS EC2
원격으로 컴퓨터 사용이 가능합니다.
- WOWZA RTSP 서버
- 플래시 RTMP 미디어 서버
- 윈도우 미디어 플레이어
- VLC (오픈소스)
- FTP
- TFTP
- ZIP
- CUDA
- SATA
- USB 3.1
- 비디오 드라이버
- 사운드 드라이버
//책을 보거나
//알고리즘
- 영상처리 알고리즘
- 압축 알고리즘
//윈도우 10
- H.264 HEVC DXVA
- 게임 녹화 OpenMAX
//토렌트 P2P
- Halite torrent
- 소리바다 P2P
- 웹하드 업체
- 클라우드 컴퓨팅 서비스 업체
- IDC 센터
- 웹호스팅 업체
- KT 기가바이트 인터넷 네트워크 서비스
//
- RED5 동영상 서버
- 윈도우 미디어 서버
- RTSP / RTP
//
- Erlang 언어도 좋다고 하네요.
- Nginx Apache
- ASP .Net Framework
//제휴
다음팟
곰TV
네이버
유투브
아프리카TV
에브리TV
KT 셋탑박스 게임. 동영상
KT 스마트 허브 (스마트폰)
시스코에 문의
Microsoft 에 문의
리눅스. 우분투 등에 문의
증권사. 포털. 기상청...
창업보육센터
소프트웨어 진흥청
특허청
교육청
조달청
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
초보적인 방법은 각 클라이언트별로 프로세스나 스레드
초보적인 방법은 각 클라이언트별로 프로세스나 스레드 하나씩 만들어서 대기하는것이고,
좀 더 부담 덜주려면 select(), poll()로 소켓 이벤트(수신된 데이터가 왔다거나 송신 가능하다거나 하는 상황변화)를 감지해서 대응하는거고,
부담 많이 덜려면 OS별로 다르게 제공되는 각종 비동기 네트워크 프로그래밍 기법 쓰면 됩니다. 윈도우면 IOCP, 리눅스는 epoll, 이외에도 유닉스공통 RTS나 freebsd의 kqueue.
어차피 클라이언트가 서버 접속할때마다 서버쪽에는 소켓 하나 생기고 이걸로 다 구별 됩니다. (클라이언트는 어차피 1개뿐이니)
님 말씀하시는 10개 클라이언트와 서버 하나가 대량의 데이터를 주고받는것은 별 문제 안됩니다.
진짜 골때리는건 서버 한대에 수십, 수백만 이상의 클라이언트가 달라붙어서 소량의 데이터를 아무때나 쏴대는겁니다. 카톩같은 채팅 서버나 게임서버들.
Written By the Black Knight of Destruction
와우 답변 감사합니다!
일반적인 네트워크 책에 있는 멀티플렉싱 기법을 쓰면 되겠군요..! 감사합니다
댓글 달기