Построитель сетевых кластеров Python - PullRequest
0 голосов
/ 22 апреля 2020

Я разрабатываю сеть клиент-сервер, используя python. Мне нужна сеть, в которой несколько клиентов подключены к одному серверу, и этот сервер будет действовать как клиент, а этот клиент подключен к нескольким серверам. Как мне это сделать. Я написал некоторую функцию для соединения и отправки данных. Вот код:

import socket

def streamServerConnect(tcpIP,tcpPort):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((tcpIP, tcpPort))
    s.listen(1)
    conn, addr = s.accept()
    return conn, addr

def streamClientConnect(tcpIP,tcpPort):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((tcpIP, tcpPort))
    return s

def streamServerReceive(conn,bufferSize):
    while 1:
        data=conn.recv(bufferSize)
        if not data: break
        bufferQueue.append(data.decode())
        conn.send(data)
    conn.close()
    return bufferQueue

def streamClientSend(socket,bufferSize,message):
    socket.send(message.encode())
    data=socket.recv(bufferSize)
    socket.close()
    return data

Я не понимаю, как мне спроектировать сервер, чтобы он принимал соединение и получал данные одновременно от нескольких клиентов и делал сервер клиентом одновременно и подключиться к нескольким серверам. Кто-нибудь может мне помочь, пожалуйста?. Я хочу такую ​​сеть flowGraph

1 Ответ

2 голосов
/ 23 апреля 2020

вы не должны этого делать, вам нужно реализовать балансировку нагрузки

вы должны использовать ha proxy - запрос клиента на почту -> обработать haproxy ->
перенаправление на сервер -> отправить ответ через haproxy клиенту.

...