node.js应用程序是创建数据的应用程序,而lua应用程序是使用数据的应用程序.数据只向一个方向发展.
我该怎么做数据传输.我更喜欢json / xml用于数据,但实际上它也可以是任何其他格式.一次移动的数据并不大.它一次只有十个参数.
我最初的想法是让节点应用程序充当服务器并通过rest api提供数据,而lua应用程序只是用LuaSocket等读取页面.但是,如果两个应用程序都驻留在同一台计算机上,是否有更好的方法进行转移?目前lua应用程序在Windows中运行,但这可能会改变.
我的背景是在Web开发中,所以在应用程序之间共享数据时我完全迷失了.我也是lua的新手.谢谢你的回答.
有很多方法可以完成这样的任务.我将描述其中两个.我最喜欢的第一种方法是使用远程队列,例如Apache Kafka,Redis,RabbitMQ,甚至是Zookeeper,用于小数据,或者存储在数据库中.所有这些远程存储系统都有非常好的Node.js模块,所有这些模块都可以很好地处理JSON和任何其他数据类型.
除非这只是一个测试应用程序,否则最好在您的应用程序中构建这样的容错能力.在您的情况下,想象一下,如果消费者Lua应用程序出现故障,或者相反,Node.js生产者应用程序出现故障.您不希望一个应用程序上的失败影响另一个应用程序.在生产环境中,最好隔离这样的应用程序和任务.这种方法的另一个优点是,有一天您可能决定在Node.js,Scala等中重写您的消费者,或者有多个不同语言的消费者.这不需要您的服务器停止或更改.它甚至不必了解消费者的任何变化.
因此,您的生产服务器始终独立地将数据推送到远程数据存储/队列,然后使用者服务器读取按照自己的步调从此远程存储中删除数据.
如果您使用了数据库,则会读取新记录,使用它们,完成后,将其从数据库中删除.此方法允许您出于升级等任何原因独立关闭使用者和生产者应用程序.
另一种方法是通过TCP建立从生产者服务器到消费者服务器的直接网络连接.生产者服务器将是将数据推送到消费者服务器的客户端.如果应用程序位于不同的物理计算机上,则可以使用net build-in模块完成此操作.但正如你所看到的,这是不太可靠的解决方案,因为如果消费者瘫痪,产品就不能推送新数据,在这种情况下你应该考虑应该用它来做什么:丢弃或存储在某个地方.如果存储在某个地方,您最终会重新实现上面解释的第一种方法.