2011-04-08 2 views
4

Неправильно ли использовать базу данных mysql на каком-то удаленном сервере как средство взаимодействия двух удаленных компьютеров? Например, имея опрос box1 в определенной строке удаленной проверки db для значений, отправленных box2, когда box2 отправляет какое-то значение box1, выполняет a, b, c. Спасибо за любой совет.mysql db как альтернатива программированию сокетов?

ответ

4

Рассмотрите возможность использования чего-то вроде ZeroMQ, который представляет собой простую в использовании абстракцию над сокетами с привязками для большинства языков. Существует несколько хороших intro documentation, а также many examples различных узоров, которые вы можете использовать в своем приложении.

Я могу понять соблазн использовать базу данных для этого, но идея постоянно писать/опросить просто сигнализировать между клиентами отходы IO, связывает соединения и т. Д. И, что более важно, кажется, что было бы трудно понять/debug другим лицом (или вами через два года).

+0

Это очень интересный материал, я смотрю обзор видео сейчас, спасибо, что указал на меня здесь ... im все еще искушал: F (комментарий здесь имел в виду не выше) – brux

3

Вы можете. Если вы строите что-то сложное, я бы предостерег его, но все в порядке - вам нужно иметь дело с тем, что вещи делаются только один раз, но это не так сложно.

То, что вы делаете, называется очередью сообщений, и для него существуют проекты с открытым исходным кодом, в том числе некоторые из которых построены на MySql.

3

Да?

Вы запутываете точку своего кода, помещая посредника в ситуацию. Похоже, вы пытаетесь использовать то, что знаете, чтобы делать то, что не знаете. Это довольно нормально, потому что тогда проблема кажется разрешимой.

+0

Правильно, идея многопоточных задач mysql, в отличие от задач сокета, обращается ко мне гораздо больше, а безопасность версии сокета также будет намного сложнее, я уверен. – brux

+0

Действительно; однако, по крайней мере, хорошо, что вы понимаете, что это не лучшая идея; однако время на рынок всегда побеждает лучшее из намерений = D – Tejs

1

Если есть только 2 компьютера (отправитель-получатель), то это плохая практика , если вам нужно быстрое время отклика. В противном случае это нормально ... Прямое соединение сокетов было бы лучше, но не тратьте время на него, если вам это действительно не нужно.

С другой стороны, если есть более двух машин и/или вам необходима отказоустойчивость, то вы на самом деле необходимо посредник. В зависимости от сигнализации, которую вы хотите между машинами, посредником может быть простое хранилище ключей (например: memcached, redis) или очередь сообщений (например: специальная программа для очереди сообщений, но я видел, что MySQL используется как очередь в двух разные сайты с большим трафиком)

+0

и как быстро я могу опросить mysql db, ограничена ли скорость моей конфигурацией isp? – brux

+0

зависит от сервера и конфигурации. вы должны его измерить;) –

Смежные вопросы