채팅서버 어떤게 좋을까요??

rocksea의 이미지

카카오톡 정도의 Message 처리하기위해 어떤 서버가 좋을까 고민하던중

pub/sub model 기반으로 Nodejs + Redis Server를 이용해서 구현할까 하는데 더 좋은 방법이 있는지 궁금하네요.

옛날에 학교다닐시절 c로 select 이용해서 입출력 다중화 구조의 채팅서버를 개발해본적은 있었는데 요즘은

open source들도 많고해서 그렇게 노가다 작업을 할 필욘 없을꺼 같은데..

여러분과 토론하고 싶습니다.

감사합니다~

beagledog의 이미지

nodejs가 가장 좋지 않을까 싶습니다
해보시면 아시겠지만 socket.io 사용이 상당히 쉽습니다
간단한 채팅정도 구현은 굉장히 몇시간이면 짤 수 있거든요
다만 싱글쓰레드라는 점은 감안하셔야합니다.

rocksea의 이미지

socket.io를 이용해서 구현은 해봤습니다. 5분이면 하나 나오더군요 ㅎㅎ

Nodejs도 Core갯수에따라 Cluster 추가가 되긴합니다만.

위에서 말했다시피 카카오톡 정도 규모의 트래픽을 감당하기 위해 Nodejs가 어느정도

퍼포먼스가 나올지 걱정이 되서 토론해 보고자 올려봤습니다 ^^

도움말 감사드립니다.

Knowleage Creator.

김정균의 이미지

카톡정도가 되려면 성능이 문제가 아니라 서버가(돈이) 엄청나게 많이 필요하시게 될 겁니다. :-)
일단은 구현 먼저 하시고, 최적화를 하시는 것이 좋을 겁니다.

shint의 이미지

아무거나 하나만 해보세요. ㅇ_ㅇ;;

책 사시면. 정리된 소스가 CD 에 있습니다. 잘 모르시면. 학원 가세요.

- PHP Socket
http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=PHP+Socket&x=-595&y=-51

- Javascript Socket
http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=Javascript+Socket&x=-595&y=-51

- Lua Socket
http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=Lua+Socket&x=-595&y=-51

- Erlang Socket
http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=Erlang+Socket&x=-595&y=-51

- Ruby Socket
http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=Ruby+Socket&x=-595&y=-51

- Java Socket
http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=Java+Socket&x=-595&y=-51

- C Socket (BSD)
http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=C+Socket&x=23&y=12

C는 구현 방식에 따라
Multi Thread Server
IOCP Server
I/O Multiplexing
Overlapped I/O
기타 등등... 멀티 스레드. 멀티 캐스팅...

- VC Socket (MFC)
CSocket
ASyncSocket
ASyncSelect
http://www.devpia.com/

- VB Socket
http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=VB+Socket&x=19&y=19

- C# Socket
http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=C%23+Socket&x=26&y=14

- Python Socket
http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=Python+Socket&x=27&y=23

- Perl Socket
http://search.naver.com/search.naver?ie=utf8&sm=stp_hty&where=se&query=Perl+Socket

- Objective C (CFNETWORK - BSD)
http://cafe.naver.com/mcbugi/123166

- Flex Socket (ActionScript)
http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=Flex+Socket&x=-595&y=-51

- Flash Socket (ActionScript)
http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=Flash+Socket&x=-595&y=-51

- Haskell Socket
http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=Haskell+Socket&x=28&y=13

- Linux Socket (sigaction. select. epoll. fork multithread)
http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=Linux+Socket&x=-595&y=-51
http://kldp.org/

델파이(Delphi). 파스칼(Pascal)... 등등... 엄청나게 많네요. ㅇ_ㅇ;;

- ACE Library
http://search.naver.com/search.naver?ie=UTF-8&query=ace+library

----------------------------------------------------------------------------------------------------------
찾아보니. 심지어는 포트란. 코볼도 되네요. ㅇ_ㅇ??

- Fortran Socket
https://www.google.co.kr/?gws_rd=cr&ei=upQ6UpCoIYS1kgXEvoCoCw#newwindow=1&q=Fortan+Socket

- Cobol Socket
http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=Cobol+Socket&x=-595&y=-51

도스는 MODE 등에 명령어를 사용해서. 시리얼 통신이 가능합니다.

도스 커맨드를 이용한 윈도우간에 메시지 전송
msg shint /w test

telnet 을 사용한 클라이언트 접속
telnet 192.168.0.2 80

웹 브라우저를 사용한 클라이언트 접속
http://192.168.0.2:80
http://192.168.0.2:443
ftp://shint:password@192.168.0.2:21

- QB64
http://www.qb64.net/
http://www.qb64.net/forum/index.php?topic=1050
http://www.qb64.net/wiki/index.php?title=Keyword_Reference_-_Alphabetical
http://www.qb64.net/forum/index.php?topic=4445.msg45979
http://www.leaseweblabs.com/2012/07/modern-basic-programming/

----------------------------------------------------------------------------------------------------------
이런 저런 대화들
http://stackoverflow.com/questions/811074/what-is-the-coolest-thing-you-can-do-in-10-lines-of-simple-code-help-me-inspir
https://kldp.org/node/36948

- Blassic – Classic BASIC
http://www.sunspot.co.uk/Projects/SWEEX/files/blassic/Ref_from_word/Blassic%20Reference%20v0.11.0(PRE)%20Update%2031-03-06%20.htm
http://www.retroisle.com/amstrad/pcs/general.php
http://www.training-classes.com/learn/_k/g/w/_/gw_basic_in_computer/
http://blog.tcltk.co.kr/?p=2729

- GW-Basic
http://blog.creation.net/373
https://www.eeci.com/eeci2.htm
http://www.oocities.org/KindlyRat/GWBASIC.html
http://blog.tcltk.co.kr/?p=2729
http://www.techedge.com.au/tech/pcthermo.htm

http://forums.overclockers.com.au/showthread.php?t=1047361
http://arstechnica.com/business/2012/08/experiments-in-airborne-basic-buzzing-computer-code-over-fm-radio/
http://www.classiccmp.org/cini/pdf/re/Build%20a%20Speech%20Synthesizer%20(1288).pdf
http://blog.naver.com/PostView.nhn?blogId=ysung09&logNo=100126924798
http://computer-programming-forum.com/12-visual-basic/f997838dad0300b4.htm
http://www.vb6.us/tutorials/how-read-simple-text-files
http://snipplr.com/view/15619/
http://syskiller.tistory.com/4

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com