다른 프로세스로 연결 넘기기

tombraid의 이미지

좀 엄한 질문일 수 있을것 같은데요.

A와 B라는 프로세스가 있고, 다른 프로세스 C가 A에 연결을 하는 경우, A가 C와의 연결을 B로 보내줄 방법이 있나요?

예를 좀 들면 다음과 같이 되겠죠.

A <- C  => A
B         B <- C

실제로 원하는 것은 B를 몇개 fork 시켜놓고 A가 로드벨런싱을 하고 싶은것인데요. 이런 기법들이 가능은 한건지, 아니면 다른 좋은 방법들이 있는지 알고 싶습니다.
codebank의 이미지

다시 말하면 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
                        -----------------> 연결

이런방식이 되겠네요.

------------------------------
좋은 하루 되세요.

tombraid의 이미지

좋은 답변 감사합니다.

아주 괜찮은 방법 같은데 약간 문제가 있네요.

저희쪽에서 client 를 수정할 수 없는 상황이라서요. ^^;;

redbaron의 이미지

tombraid wrote:
좋은 답변 감사합니다.

아주 괜찮은 방법 같은데 약간 문제가 있네요.

저희쪽에서 client 를 수정할 수 없는 상황이라서요. ^^;;


그런 문제가 있다면.. 밸런싱 데몬을 하나 두는 방법말고는 없어보입니다.

(저의 짧은 경험으로는..)

많이본 그림 처럼..

choissi의 이미지

Passing descriptors between processes

http://www.ezdoum.com/stories.php?story=02/07/18/6030539

울랄라~ 호기심 천국~!!
http://www.ezdoum.com

tombraid의 이미지

그러니까 제 그림(?)을 기준으로 하면 A가 B하고 연결을 맺고,

C에서 오는 데이터를 그대로 B로 넘겨주게 되는건가요?

그리고 더불어 한가지 더요.

생각하다가 결국은 A를 멀티 스레드로 만들어서

A의 메인스레드에서는 접속만 받아주고,

B프로세스의 역할을 A의 작업스레드에서 하게 하면 어떨까 생각하는데요.

이게 프로세스로 나누어져 있는 것과 스레드로 나누어져 있는 경우

성능차이가 있을수 있나요?

위의 두분이 말씀해 주신 방법과 비교해 보면 어떤 차이가 있을까요?

tombraid의 이미지

잠깐 글쓰는 사이에 choissi (최씨??) 님께서 답글을 달아주셨네용.

얼렁가서 읽어보겠습다. ^^;

tombraid의 이미지

choissi 님께서 올려주신것을 보고 여기저기 뒤져서 찾았습니다.

(영어 딸리는거 새삼 깨달았네용.. passing descriptor 라는걸 왜 못쓸까.. 글적..)

전 solaris 에서 하고 싶어서 다음의 URL에서 원하는 소스도 찾았습니다.

http://docs.sun.com/db/doc/806-6546/6jffu987n?a=view

좀더 알아야 원하는걸 해결할 수 있을듯 하지만 기분좋네요.

그런데 보니까 공통된 인터페이스가 있는게 아니라 시스템 마다 다른것 같네요

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.