다시 말하면 server(A겠죠?)가 있고 작업 processor들(B들 이겠죠?)이 있는데
client(당연히 C가 되겠네요.)가 server로 접속하면 server는 현재 작업이 비어있거나
작업량이 적은 processor를 찾아서 client와 연결되게 한다는 소리이겠죠?
방법이 없는건 아니죠. 제가 생각한 방법은 다음과 같습니다.
일단 client가 server에 접속을 요청합니다.(socket으로...) 이때 server측에
자신의 IP와 연결 가능한 port를 데이터로 보내줍니다.
그리고나서 바로 연결을 해제하고 위에 보낸 포트를 하나 열어놓고 대기합니다.(server형태로...)
server는 client에게 요청을 받으면 현재 작업이 없는 processor를 찾아서(이건
server가 나름대로 데이터를 가지고 있어야겠죠.) 메시지 큐를 이용해서 processor에게
client의 IP와 port를 알려줍니다.
그러면 메시지 큐를 받은 client는 해당 client에 접속을 합니다.
즉,
server processor client
<------------------------------연결
<------------------------------ IP, port
---------------> IP, port
-----------------> 연결
다시 말하면 server(A겠죠?)가 있고 작업 processor들(B들
다시 말하면 server(A겠죠?)가 있고 작업 processor들(B들 이겠죠?)이 있는데
client(당연히 C가 되겠네요.)가 server로 접속하면 server는 현재 작업이 비어있거나
작업량이 적은 processor를 찾아서 client와 연결되게 한다는 소리이겠죠?
방법이 없는건 아니죠. 제가 생각한 방법은 다음과 같습니다.
일단 client가 server에 접속을 요청합니다.(socket으로...) 이때 server측에
자신의 IP와 연결 가능한 port를 데이터로 보내줍니다.
그리고나서 바로 연결을 해제하고 위에 보낸 포트를 하나 열어놓고 대기합니다.(server형태로...)
server는 client에게 요청을 받으면 현재 작업이 없는 processor를 찾아서(이건
server가 나름대로 데이터를 가지고 있어야겠죠.) 메시지 큐를 이용해서 processor에게
client의 IP와 port를 알려줍니다.
그러면 메시지 큐를 받은 client는 해당 client에 접속을 합니다.
즉,
이런방식이 되겠네요.
------------------------------
좋은 하루 되세요.
^^
좋은 답변 감사합니다.
아주 괜찮은 방법 같은데 약간 문제가 있네요.
저희쪽에서 client 를 수정할 수 없는 상황이라서요. ^^;;
Re: ^^
그런 문제가 있다면.. 밸런싱 데몬을 하나 두는 방법말고는 없어보입니다.
(저의 짧은 경험으로는..)
많이본 그림 처럼..
http://redage.net
Passing descriptors between processes
Passing descriptors between processes
http://www.ezdoum.com/stories.php?story=02/07/18/6030539
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
흠..
그러니까 제 그림(?)을 기준으로 하면 A가 B하고 연결을 맺고,
C에서 오는 데이터를 그대로 B로 넘겨주게 되는건가요?
그리고 더불어 한가지 더요.
생각하다가 결국은 A를 멀티 스레드로 만들어서
A의 메인스레드에서는 접속만 받아주고,
B프로세스의 역할을 A의 작업스레드에서 하게 하면 어떨까 생각하는데요.
이게 프로세스로 나누어져 있는 것과 스레드로 나누어져 있는 경우
성능차이가 있을수 있나요?
위의 두분이 말씀해 주신 방법과 비교해 보면 어떤 차이가 있을까요?
앗!
잠깐 글쓰는 사이에 choissi (최씨??) 님께서 답글을 달아주셨네용.
얼렁가서 읽어보겠습다. ^^;
성공했습니다.
choissi 님께서 올려주신것을 보고 여기저기 뒤져서 찾았습니다.
(영어 딸리는거 새삼 깨달았네용.. passing descriptor 라는걸 왜 못쓸까.. 글적..)
전 solaris 에서 하고 싶어서 다음의 URL에서 원하는 소스도 찾았습니다.
http://docs.sun.com/db/doc/806-6546/6jffu987n?a=view
좀더 알아야 원하는걸 해결할 수 있을듯 하지만 기분좋네요.
그런데 보니까 공통된 인터페이스가 있는게 아니라 시스템 마다 다른것 같네요
댓글 달기