了解ShinyServer上托管的RShiny应用程序的可扩展性

Can*_*ice 18 web-applications r shiny shiny-server

我正在为一个项目构建一系列交互式闪亮网络应用程序,我正在考虑将其转变为公司.我的背景是数据科学,我在Web应用程序/服务器方面没有很多经验,但这些是我在项目中考虑的重要方面.我目前安装了ShinyServer(免费,开源)的Amazon Linux AMI EC2实例,我目前正在那里托管早期版本的Web应用程序.到目前为止一切正常,但我尚未公开链接.

  1. 我的第一个问题是,是否有人知道是否存在某些限制(可扩展性限制,与数据库限制的集成,安全性/身份验证限制等),我将不可避免地使用RShiny应用程序和ShinyServer?我没有听说过许多成功的,超级流行的网络应用程序是在ShinyServer上托管的闪亮应用程序,但我的感觉是ShinyServer主要用于托管仅在少数人之间共享的RShiny应用程序(即在团队之间共享)公司成员.).根据这个线程 - R-Server或Shiny Server是否为每个用户创建一个新的R进程/实例? - 我特别担心我的应用程序无法同时处理数千个用户,因为只为应用程序创建了1个R进程,无论应用程序的并发用户数是多少.如果我打算扩展到超过数百或数千用户,那么通过ShinyServer pro进行10-20个进程可能无法解决问题.我也注意到ShinyServer Pro每年会给我带来一个不可忽视的10万美元.

  2. 我的第二个问题是,是否可以使用其他服务器技术部署RShiny应用程序,例如Heroku.我遇到了这个github页面(https://github.com/virtualstaticvoid/heroku-buildpack-r/tree/heroku-16),但还没有深入挖掘它.我被告知heroku可以轻松地将版本更新到代码在github上的应用程序(git push heroku:master)等等.

  3. 我的第三个问题涉及我的某些具体考虑因素.特别是,我目前正在开发一个脚本,该脚本从API查询数据并将该数据写入我的(尚未设置的)数据库.这是我的应用程序使用的数据,我有兴趣在数据库更新时实时更新应用程序,而无需用户刷新网页.我的一个伙伴建议AJAX用于这种类型的异步行为,看起来这可能在R中可能有这样的事情(https://github.com/daattali/advanced-shiny/tree/master/api-ajax) .

对不起,这是一个如此负载的问题,但我希望它不会被关闭,因为我认为它是相当有教育意义的.任何建议/来源/指出我正确的方向将在此非常感激.

Tec*_*e01 5

卡诺维奇,

我建议您阅读以下RStudio / AWS支持文章。要扩展闪亮的服务器,您需要使用负载均衡器:

Shiny是一个很棒的平台,他们的支持很棒。我建议您给他们打电话-他们一定会帮助您回答问题。

就是说,如果您的计划是创建一个可支持数千或数十万人的可扩展网站,那么我的建议是建议您同时审查并考虑将D3.jsreact.jsAngular.js结合使用,不要忘记提的node.js

我的感觉是,您正在查看连接到逻辑引擎和可视化前端的后端数据库。如果您想很好地了解用法,请查看以下网页和git repo [有点过时但有用]:

希望以上内容为您指明正确的方向。