MySQL数据库作为Socket编程的替代方案?

4

在两个远程计算机之间进行接口通信时,使用远程服务器上运行的mysql数据库作为手段是否是不好的实践?例如,让box1轮询远程db的特定行,检查由box2发布的值,当box2发布某个值时,box1执行a、b、c操作。

感谢任何建议。

4个回答

4
考虑使用类似ZeroMQ的东西,它是一个易于使用的抽象层,可以绑定大多数语言的套接字。有一些很好的intro documentation以及many examples可以在您的应用程序中使用各种模式。
我可以理解使用数据库的诱惑,但是不断编写/轮询以便在客户端之间进行信号传递会浪费IO,占用连接等,而且更重要的是,另一个人(或两年后的自己)似乎很难理解/调试。

这是非常有趣的东西,我正在观看视频概述,感谢你指引我来这里...不过我还是很心动的 :F(评论应该放在这里而不是上面) - brux

3

你可以这样做。如果你正在构建一些复杂的东西,我会提醒你谨慎对待,但是这样做没问题--你需要处理只完成一次的项目,但这并不难。

你正在做的被称为消息队列,有一些开源项目专门针对此类问题--包括一些基于 MySql 构建的。


3

好的,您需要翻译的内容是关于IT技术的。

是吗?

通过在情境中添加一个中间人,您正在混淆代码的重点。听起来您试图使用已知的东西来做不知道的事情。这很正常,因为问题看起来可解决。


正确,相对于套接字任务,多线程MySQL任务的想法更吸引我,并且确保套接字版本的安全性也会更加困难,我敢肯定。 - brux
确实,但至少你认识到这不是最好的想法,然而,市场时间总是战胜最好的意图 =D - Tejs

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

另一方面,如果有两台以上的计算机和/或您需要容错能力,则实际上需要一个中间人。根据您想在计算机之间传递的信号,中间人可以是一个简单的键值存储(例如:memcached、redis)或一个消息队列(例如:专用消息队列软件,但我见过两个不同网站使用MySQL作为队列处理大量流量)。


我可以在MySQL数据库上进行多快的轮询,它是否受到我的ISP配置的速率限制? - brux
取决于服务器和配置。你需要进行测量 ;) - Karoly Horvath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接