执行远程脚本 - 架构

时间:2010-04-03 14:35:50

标签: scripting lua

我想创建一个执行远程脚本的应用程序。用户可以创建脚本(可能是LUA脚本),然后将其存储在服务器中。然后他可以使用API​​来执行脚本。我以为API可以是一个web服务。 所以我的问题是:

  • 我需要高性能来执行脚本。所以我的第一选择是LUA脚本。有人有另一种消化吗?

  • 因为我需要高性能,我在想如果web服务是最好的解决方案。也许我可以创建一个保存用户请求的TCP / IP Windows服务。重要的是要说我将同时有许多用户执行脚本。所以我会遇到并发问题。

  • 我的脚本将在数据库中查询。我将使用Tokyo Cabinet或Tokio Tyrant。我认为Tokio Tyrant是唯一的解决方案,因为我会有很多要求。为了提高性能,我是否需要建立连接池?无论如何要在webservices请求之间共享变量吗?

  • 要制作网络服务或Windows服务,我打算使用C ++。

有人可以帮助解决这些问题吗?

感谢

1 个答案:

答案 0 :(得分:1)

  • Lua在脚本语言方面表现非常出色,特别是如果你使用LuaJIT或类似的东西。

  • 你说的是高性能。我们说了多少?假设你有一个非常简单的web服务来执行它通过POST接收的脚本,那么与Lua编译,环境设置和放大相比,可能是HTTP开销相对较小。执行时间。

  • 关于数据库我无法告诉你任何事情。有很多可能进行池化,这也取决于你如何执行Lua脚本。他们在共同的环境中运行吗?每个会话一个?每个请求一个?

  • C ++肯定是举办Lua的不错选择,因为Lua非常适合。虽然还有其他好的语言绑定。

但请记住,只有沙盒脚本才能完成您的工作。用户提交的脚本可以有意或无意地执行很多其他Bad Things(TM),例如分配大量内存或占用CPU。在Lua中(并且我认为对于许多(如果不是全部)沙盒环境都是如此)除了杀死有问题的实例之外,你不能做很多事情,或者,如果你不允许在你的沙箱中使用协同程序,那么就会产生违规的协程并做更聪明的东西。