2011-04-08 32 views
4

使用在某个远程服务器上运行的mysql数据库作为连接两台远程计算机的方法是不好的做法吗?例如,当box1轮询远程数据库的特定行时,检查box2发布的值,当box2发布一些值box1时,会执行a,b,c。 感谢您的任何建议。作为套接字编程的替代方案的MySQL数据库?

回答

4

请考虑使用诸如ZeroMQ之类的东西,这是一个易于使用的套接字抽象概念,适用于大多数语言的绑定。有一些不错的intro documentation以及many examples你可以在你的应用程序中使用的各种模式。

我可以理解为此使用数据库的诱惑,但持续写/轮询只是为了在客户端之间传递信号浪费IO,连接连接等等,更重要的是,似乎很难理解/由另一个人(或两年内的你自己)调试。

+0

这是非常有趣的东西,我现在看视频概述,感谢在这里指出我...即时通讯仍然诱惑,虽然:F(评论意味着这里不是上述) – brux 2011-04-08 19:44:52

3

您可以。如果你正在构建一些复杂的东西,我会告诫它,但是没关系 - 你需要处理的事情只做一次,但这并不困难。

你在做什么被称为消息队列,并且有特定于此的开源项目 - 包括一些构建在MySql上的项目。

3

是吗?

通过在此情况下放置一个中间人来混淆您的代码。这听起来像是你想用你知道的事来做你不知道的事情。这很正常,因为这个问题似乎是可以解决的。

+0

正确的说,多线程的mysql任务,而不是套接字任务的想法吸引我更多,并使套接字版本的安全也将是更难的,我敢肯定。 – brux 2011-04-08 18:55:06

+0

确实;然而,至少你认识到这不是最好的主意,但是,上市时间总是击败最好的意图= D – Tejs 2011-04-08 18:56:23

1

如果只有2台电脑(发送者 - 接收者),那么这是不好的做法如果你需要快速的响应时间。否则,没关系......直接套接字连接会更好,但如果你不需要它,不要浪费时间。

另一方面,如果有超过两台机器和/或您需要容错,那么您实际上需要中间人。根据你希望在机器间传递的信号,中间人可以是一个简单的键值存储(例如:memcached,redis)或消息队列(例如:一个专用的消息队列软件,但我已经看到MySQL用作两个队列不同的网站有很大的流量)

+0

以及我可以多快查询mysql数据库,它是否受我的isp配置限制? – brux 2011-04-08 19:45:21

+0

取决于服务器和配置。你必须测量它;) – 2011-04-09 07:47:13